?? cmsmanager.h
字號:
//ChengYU
//2001.3.19
//MsManager.h
#if !defined(SYSTEMLEVEL_SIMULATION_CDMATYPE_MANAGER_H)
#define SYSTEMLEVEL_SIMULATION_CDMATYPE_MANAGER_H
#include "systemsim.h"
#include <afxtempl.h>
//These several macros indicate the scheduling agorithms
//The macro MAXC2I indicates the system schedules the mobiles according to their C/I, and allocate the sector to the mobile with maximum C/I.
//The macro RANDOMR indicates the system allocates the sector to a user randomly
//Only one of these macros can be active.
#define MAXC2I //最大C/I算法宏
//#define RANDOMR //隨機(jī)數(shù)算法宏
//#define PROPFAIRNESS //正比公平算法
//#define NEWMAXC2I //修正最大C/I
//#define NEWPROPFAIRNESS //修正正比公平
class CMsManager
{
//attribute
private:
CTypedPtrList<CPtrList, CVoiceMs*> m_VoiceList; //話音業(yè)務(wù)用戶鏈表
CTypedPtrList<CPtrList, CHttpDataMs*> m_HttpDataList;//http業(yè)務(wù)用戶鏈表
CTypedPtrList<CPtrList, CFtpDataMs*> m_FtpDataList; //ftp業(yè)務(wù)用戶鏈表
CLinkPrediction* m_pLinkPrediction;
int m_iVoiceNumInSys; //系統(tǒng)總的話音用戶數(shù)
float m_fFractionFtp; //FTP用戶比例
int m_iDataNumInSys; //系統(tǒng)總的數(shù)據(jù)用戶數(shù)
double m_fTotalBits; //總的傳輸比特量
long m_lTotalErrorEP; //總的差錯EP數(shù)
long m_lTotalGoodEP; //總的正確EP數(shù)
float m_fMeanThroughputPerSector; //Drop內(nèi)的平均吞吐量
float m_fMeanPER; //Drop內(nèi)的平均分組差錯概率
long m_lDiscardedPacket; //Drop內(nèi)丟棄的packet數(shù)目
long m_lTotalErrorPacket; //總的差錯Packet數(shù)
long m_lTotalGoodPacket; //總的正確Packet數(shù)
int m_iDropNumOfVoice; //話音業(yè)務(wù)掉話用戶數(shù)
int m_iBadNumOfVoice; //話音業(yè)務(wù)不滿意用戶數(shù)
int m_iVoiceUserOfCurrentDrop; //本時隙結(jié)束通話的話音用戶
float m_fDropTimeLimit; //話音業(yè)務(wù)掉話時間限
float m_fBadRatioOfVoice; //話音用戶的不滿意率
float m_fDropRatioOfVoice; //話音用戶掉話率
CServiceArea* m_pServiceArea; //指向ServiceArea對象的指針##
//統(tǒng)計文件名參數(shù)
char m_sSystemMeanThroughputFile[40];
//● 系統(tǒng)平均吞吐量的統(tǒng)計文件,統(tǒng)計整個系統(tǒng)內(nèi)每個扇區(qū)的平均吞吐量,
//每個drop輸出一個值
char m_sSystemMeanPERFile[40];
//● 系統(tǒng)平均分組差錯概率,整個系統(tǒng)中的分組差錯概率,每個drop輸出
//一個值
char m_sMobileC2IFile[40];
//● 移動臺C/I的統(tǒng)計文件,在指定時間輸出所有移動臺的C/I數(shù)據(jù),
//點(diǎn)數(shù)為移動臺的個數(shù)
char m_sMobileThroughputServiceFile[40];
//● 移動臺吞吐量(service)統(tǒng)計文件,按service統(tǒng)計用戶吞吐量,
//點(diǎn)數(shù)為移動臺的個數(shù)
char m_sVoiceFile[40];
//話音統(tǒng)計文件,每個drop輸出一個值
char m_sMobileThroughputPacketCallFile[40];
//● 移動臺吞吐量(packet call)統(tǒng)計文件,按packet call統(tǒng)計用戶
//吞吐量,點(diǎn)數(shù)為移動臺的個數(shù)
public:
int m_iSlotNum; //每drop時隙數(shù)
float m_fSlotTime; //每時隙時長
float m_fDropTime; //每drop時長
int m_iHttpNum; //http用戶數(shù)
int m_iFtpNum; //ftp用戶數(shù)
float m_fFractionHttp; //http用戶比例
int m_iDataNumPerSector; //每扇區(qū)數(shù)據(jù)用戶數(shù)
int m_iDataNumGenerated[SectorNumber]; //生成的屬于每個扇區(qū)的數(shù)據(jù)用戶數(shù)
//...... added by cqm, Arl.9 ......//
int m_iVoiceNumPerSector; //每扇區(qū)話音用戶數(shù)
int m_iVoiceNumGenerated[SectorNumber]; //生成的屬于每個扇區(qū)的話音用戶數(shù)
//.................................//
int m_iSlotCurrentNum;
int m_iDropCurrentNum;
//以下為各個移動臺類的參數(shù)
float m_fFudgetFactorOf8PSK; //8PSK高階調(diào)制因子
float m_fFudgetFactorOf16QAM; //16QAM高階調(diào)制因子
float m_fVoiceActiveFactor; //話音激活因子
int m_iActiveSetMaxSize; //激活集最大數(shù)量
float m_fPowerControlStep; //功率控制調(diào)整步長
int m_iSoftHandoffDelay; //軟切換事件時延
float m_fC2IThreshold; //門限C/I
float m_fC2ITarget; //目標(biāo)C/I
float m_fMaxFractionOfTrafficPower; //業(yè)務(wù)信道最大功率比例
float m_fDynamicRangeOfTrafficPower; //業(yè)務(wù)信道功率動態(tài)范圍
float m_fBEROfPC; //功率控制差錯概率
int m_iMaxTransmissionNum; //Encoder packet的最大傳輸次數(shù)
int m_iCellSwitchDelay; //小區(qū)交換事件時延
float m_fErrorRateOfFeedBack; //ACK/NAK差錯概率
float m_fAlpha; //Pareto分布的參數(shù)alpha
float m_fK; //Pareto分布的參數(shù)K
int m_iMaxDataBitsNum; //Packet call的最大數(shù)據(jù)量
// int m_iMeanDataBitsNum; //Packet call的平均數(shù)據(jù)量
float m_fMeanIntervalOfPacketCall; //Packet call平均間隔時間
float m_fStdSlowFading; //慢衰標(biāo)準(zhǔn)差
int m_iHttpMeanPacketDataRate; //Http平均數(shù)據(jù)速率
int m_iHttpPacketSize; //Http packet的大小
//各信道類型數(shù)量
int m_iChannelNumber;
//...... added by cqm, Apr.9 ......//
//話音 FER vs Eb/N0 表
float m_fC2IIndex[26];
float m_fFER_3[26];
float m_fFER_30[26];
float m_fFER_100[26];
float m_fFER_0[26];
//.................................//
//各信道對應(yīng)比例值
float m_fFractionOfChannel[10];
long m_lRealErrorSP;
long m_lRealTotalSP;
long m_lErrorSPDCCH;
//軟切換參數(shù)
float m_fSHOAddThreshold; //軟切換加入門限
float m_fSHODeleteThreshold; //軟切換去掉門限
int m_iSHODeleteTimer; //軟切換去掉定時器
float m_fSHOSubstitutionThreshold; //軟切換替代門限
//Operation
public:
CMsManager(){}
//用戶發(fā)射功率統(tǒng)計門限初始化
~CMsManager(); //清除用戶鏈表
void Initialization(int,float,float,CLinkPrediction*); //完成類的初始化工作
void MsInitialization(CServiceArea*); //完成移動臺對象的初始化工作
void AddUser(); //產(chǎn)生三種用戶并加入鏈表隊(duì)列
void Clean(); //清除用戶鏈表,由析構(gòu)函數(shù)調(diào)用
void VoiceProcess(); //對所有話音用戶進(jìn)行循環(huán)
void VoiceStatistics(); //統(tǒng)計所有話音用戶的平均不滿意率,并輸出至文件中
void DataProcess(); //估計各個數(shù)據(jù)用戶的傳輸速率,根據(jù)一定調(diào)度算法確定各個扇區(qū)應(yīng)傳送的數(shù)據(jù)用戶
void Scheduling(CDataMs*); //根據(jù)一定算法確定各個扇區(qū)的最佳傳輸用戶,在DataProcess()函數(shù)中調(diào)用
void DataBitsAndPacketCumulate(); //在各個扇區(qū)選定數(shù)據(jù)用戶傳輸數(shù)據(jù)時,把成功傳輸?shù)臄?shù)據(jù)量(作為參數(shù))累加值統(tǒng)計數(shù)據(jù)中
//并把成功傳輸或未成功(作為參數(shù))的分組數(shù)(參數(shù))累加值統(tǒng)計數(shù)據(jù)中
void MeanThroughputStatistics(); //計算平均吞吐量,并輸出至文件中
void MeanPERStatistics(); //計算平均分組差錯概率,并輸出至文件
void MsThroughputStatistics(); //把各個數(shù)據(jù)用戶的吞吐量輸出至文件中
// void MsC2IStatistics(); //把各個移動臺的C/I數(shù)據(jù)輸出至文件中
//zdy新增統(tǒng)計輸出文件的函數(shù)
void MsDelayStatistics(); //把各個http移動臺的時延數(shù)據(jù)輸出至文件MsDelay.txt
float DataPriorityCalculate(CDataMs*);
////數(shù)據(jù)用戶優(yōu)先權(quán)計算函數(shù),用于判斷采用哪一種調(diào)度算法,并計算給出相應(yīng)的優(yōu)先權(quán)值
float PropFairCalculate(CDataMs*);
//cyu于5。15修改
//考慮正比公平的優(yōu)先權(quán)指標(biāo)計算函數(shù),由DataPriorityCalculate(CDataMs*)調(diào)用
int GetVoiceNumPerSector();
void SetVoiceNumPerSector(int);
int GetDataNumPerSector();
void SetDataNumPerSector(int);
float GetFractionHttp();
void SetFractionHttp(float);
float GetFractionFtp();
void SetFractionFtp(float);
////////////// Added by Ouyang Hui on May, 8, 2001///////////////
void UpdateSectorPower();
void UpdateSetPower();
/////////////////////////////////////////////////////////////////
//////////////////孟松新增函數(shù)///////////////////////////////////////////
float DistanceCaculte(LOCATION_TYPE,SECTORID_TYPE);
//計算移動臺到最近基站的距離(多個函數(shù)中用到)
/////////////////////////////////////////////////////////////////////////
//
char* GetSystemMeanThroughputFile();
void SetSystemMeanThroughputFile(char*);
char* GetSystemMeanPERFile();
void SetSystemMeanPERFile(char*);
char* GetMobileC2IFile();
void SetMobileC2IFile(char*);
char* GetMobileThroughputServiceFile();
void SetMobileThroughputServiceFile(char*);
char* GetMobileThroughputPacketCallFile();
void SetMobileThroughputPacketCallFile(char*);
char* GetVoiceFile();
void SetVoiceFile(char*);
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -