public void MyInitial() { m_IGetLinkloss = new MockIGetLinkloss(); m_InterfCalc = new MockIInterfCalc(); m_InterfPara = new InterfCalcPara(); }
/// <summary> /// 计算点到小区的干扰,返回线性值mw /// </summary> /// <param name="bestServerCell"></param> /// <param name="intefCell"></param> /// <param name="dLinkLoss"></param> /// <returns></returns> private static double GetOneCellInf(Signal usefulSignal, Signal source, IInterfCalc m_IInterf, double rIntef) { InterfResult result = m_IInterf.CalcOneSourceInf(usefulSignal, source); //用前一次的干扰值初始化总干扰 double m_totalInf = rIntef; m_totalInf = AddPowerTomw(result.SC, result.AC, result.AC2) + AddPowerTomw(result.OtherAC, result.BCI, result.SE); return m_totalInf; }
/// <summary> /// 构造函数 /// </summary> /// <param name="context"></param> public TDIntefCalculate(TDCalcCommonParam param) { m_TotalLoss = new TDLinkLossCalc(param.CalcLinkLoss); m_SmartAnt = new SmartAntGain(param.SmartAntGain); //m_IntefCalc = new InterfCalculate(param.IntefParam); m_CustomerParam = param.TdUIParam; m_IntefCalc = param.InterfCalc; }
public void Inital() { m_User = MockGSMSimUser.CreateGSMSimUser(); m_IGetLinkloss = new MockIGetLinkloss(); totalLinkLoss = new TotalLossCalc(m_IGetLinkloss); interfPara = new InterfCalcPara(); interfCalc = new MockIInterfCalc(); m_TchCalc = new TCHInterfCalc(); }
/// <summary> /// 初始化 /// 为了实现接口 /// </summary> /// <param name="linkloss"></param> /// <param name="interfCalc"></param> /// <param name="orthogonalCoefficient">正交因子</param> public void Initialization(IGetLinkloss linkloss, IInterfCalc interfCalc, ISmartAntCalcGain param) { this.m_Linkloss = linkloss; this.m_InterfCalc = interfCalc; TDCalcCommonParam param1 = new TDCalcCommonParam(); param1.SmartAntGain = param; this.m_SmartAntGain = new SmartAntGain(param1.SmartAntGain); m_GetTDLinkLoss = new TDLinkLossCalc(m_Linkloss); }
//public double CalculateAsRxPower(IACell cell, GeoXYPoint point, float Linkloss) //{ //double m_TRXPower = ((GSMTRX)cell).MaxPower; //GSMTRX isGSMCell = cell as GSMTRX; //if (isGSMCell != null) //{ //GSMTerminal gsmTerminal = (GSMTerminal)terminal.GetNetWorkTerminal(NetWorkType.GSM); //double terminalGain = gsmTerminal.Gain; //double serviceLoss = ((GSMService)service).BodyLoss; //return m_TRXPower + terminalGain - serviceLoss - linkloss; //} //else //{ // return double.NegativeInfinity; //} // return CalculateRxPower(cell, point, Linkloss); //} public IDetail CalculateDownLinkDetail(List<RxPowerAndLinkLossModel> ModelList, GeoXYPoint point, Service service, Mobility mobility, Terminal terminal) { TargetPara target = new TargetPara(); InitData(ModelList, service, terminal, target); m_DlBestCell = FindDlBestServer(); m_IInterf = InitInterfCalc(); DlResultImage(); DlJudgeAccess(target); return dlDetail; }
public void MyInitial() { m_IGetLinkloss = new MockIGetLinkloss(); m_TotalLossCalc = new TotalLossCalc(m_IGetLinkloss); m_InterfCalc = new MockIInterfCalc(); m_InterfPara = new InterfCalcPara(); m_DlBCCHCIR = new DLBCCHCIR(m_IGetLinkloss, m_InterfPara, m_InterfCalc); //InitialUser(); m_User = MockGSMSimUser.CreateGSMSimUser(); }
/// <summary> /// 初始化成员变量 /// </summary> /// <param name="context"></param> public void Init(SnapshotContext context) { m_InterfParam = context.Lookup<IInterfCalc>(GsmContextkey.GSMIInterfCalc); m_ServerdUsers = context.Lookup<List<GSMSimUser>>(GsmContextkey.GSMServedUsers); m_GetLinkLoss = context.Lookup<IGetLinkloss>(GsmContextkey.GSMGetLinkloss); m_InterfPara = context.Lookup<InterfCalcPara>(GsmContextkey.GSMIInterfParam); m_TchCir = new TCHCIR(m_GetLinkLoss, m_InterfPara, m_InterfParam); m_IsPowerCtrl = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).IspowerCtrl; m_PowerError = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).PowerError; m_Alpha = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).Alpha; m_Beta = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).Beta; }
public void Init(SnapshotContext context) { m_GetLinkLoss = context.Lookup<IGetLinkloss>(GsmContextkey.GSMGetLinkloss); m_InterfCalc = context.Lookup<IInterfCalc>(GsmContextkey.GSMIInterfCalc); m_InterfPara = context.Lookup<InterfCalcPara>(GsmContextkey.GSMIInterfParam); m_ForAccessAgain = context.Lookup<List<GSMSimUser>>(GsmContextkey.GSMForAccessAgain); m_ServerUser = context.Lookup<List<GSMSimUser>>(GsmContextkey.GSMServedUsers); m_TchCir = new TCHCIR(m_GetLinkLoss, m_InterfPara, m_InterfCalc); m_ThrptCalc = new ThroughputCalculate(); context.AddKey(GsmContextkey.KickedUsers, m_KickedUsers); m_CsTable = context.Lookup<CodeSchemeTable>(GsmContextkey.CodeSchemeTable); }
/// <summary> /// 计算BCCH信道受到一个GSM邻载波的干扰 /// </summary> /// <param name="user">用户</param> /// <param name="interfTRX">干扰载波</param> public void CalcGsmBCCHInterf(GSMSimUser user,GSMSimTRX interfTRX,InterfCalcPara interfPara,TotalLossCalc totalLinkLoss,IInterfCalc interfCalc) { m_TotalLossCalc = totalLinkLoss; m_IsCalcDLBCCH = true; m_InterfPara = interfPara; m_User = user; m_IsUserCsService = user.IsCs; m_InterfCalc = interfCalc; GSMSimTRX userTRX = FindUsefulTrx(user, true, true); m_IsSyn = interfTRX.NeTRX.SynchroRank == userTRX.NeTRX.SynchroRank; m_IsOtherSignalDTX = interfTRX.NeTRX.IsUseDTX; CalcHopFactor(interfTRX, userTRX, interfPara); if ((base.scHopFactor==0)&(base.adjHopFactor==0)&(base.adj2HopFactor==0)) return ; //创建信号 Signal userSignal = BuildGsmSignal(userTRX, true); Signal source = BuildGsmSignal(interfTRX, true); float sourcePwr = float.NegativeInfinity; float loss = totalLinkLoss.GetAllLoss(user, interfTRX, NetWorkType.GSM, true); CalcBcchInterf(interfTRX, userSignal, source, ref sourcePwr, loss); }
public void Init() { calcIo = new HSUPA_CalcIo(); context = MockContext.CreatContext(); commonParam = new HSUPA_CommonParam(context); interfCalc = new MockInterfCalc(); getLinkLoss = new MockGetLinkloss(); bearerSelector = new HSUPA_BearerSelector(commonParam); calcIo.UMTSInterfCalc = new UMTSInterfCalc(interfCalc, getLinkLoss); cell = MockCell.CreatUMTSSimCell(0, 0); cell.CellType = CarrierTypeOfUMTS.HSUPA; user1 = MockUser.CreatUMTSPSUser(); user1.MaxRSCPCell = cell; user1.MaxRSCPCell.UMTSInterfCells = new List<ISimCellBase>(); user1.MaxRSCPCell.HSUPA_CurRxPower = 10; user1.MaxRSCPCell.HSUPA_UsedRxPower = 10; user1.IsScheduledInTTI = true; calcIo.CommonParams = commonParam; }
/// <summary> /// GSM小区对GSM用户的干扰(邻小区) /// </summary> /// <param name="user"></param> /// <param name="isDL"></param> /// <param name="interfCell"></param> /// <param name="interfPara"></param> /// <param name="totalLinkLoss"></param> public void CalcTCHInterf(GSMSimUser user, bool isDL, GSMSimTRX interfCell, InterfCalcPara interfPara, TotalLossCalc totalLinkLoss, IInterfCalc interfCalc) { m_IsDL = isDL; m_TotalLossCalc = totalLinkLoss; m_InterfCalc = interfCalc; m_InterfPara = interfPara; m_User = user; m_IsCalcDLBCCH = false; m_IsUserCsService = user.IsCs; GSMSimTRX userTrx = FindUsefulTrx(user, false, isDL); m_IsSyn = interfCell.NeTRX.SynchroRank == userTrx.NeTRX.SynchroRank; CalcHopFactor(interfCell, userTrx,interfPara); if ((scHopFactor == 0) & (adjHopFactor == 0) & (adj2HopFactor == 0)) return; Signal userSignal = BuildGsmSignal(userTrx, isDL); Signal source = BuildGsmSignal(interfCell, isDL); float sourcePwr = float.NegativeInfinity; List<GSMTimeSlot> userTSs = FindUserTSs(user, isDL); source.Frequency = CommonCalc.GSMFreqPointToFrequency(interfCell.NeTRX.FreqBand.DLFrequency, interfCell.NeTRX.FreqBand.BandWidth, interfCell.NeTRX.FreqBand.StartChIndex, interfCell.NeTRX.ChannelIndex, isDL); float loss = totalLinkLoss.GetAllLoss(user, interfCell, NetWorkType.GSM, isDL); sourcePwr = CalcTchInterf(user, isDL, interfCell, userSignal, source, sourcePwr, userTSs, loss); }
public void Init() { scheduler = new HSUPA_Scheduler(); context = MockContext.CreatContext(); commonParam = new HSUPA_CommonParam(context); commonParam.NewSimTTIStart(commonParam.TTILength); rateCtrl = new HSUPA_UserScheduleRateCtrl(); calcIo = new HSUPA_CalcIo(); interfCalc = new MockInterfCalc(); getLinkLoss = new MockGetLinkloss(); bearerSelector = new HSUPA_BearerSelector(commonParam); rateCtrl.CommonParams = commonParam; scheduler.CommonParams = commonParam; calcIo.CommonParams = commonParam; calcIo.UMTSInterfCalc = new UMTSInterfCalc(interfCalc, getLinkLoss); scheduler.HSUPA_CalcIo = calcIo; scheduler.RateCtrl = rateCtrl; cell = MockCell.CreatUMTSSimCell(0,0); user = MockUser.CreatUMTSPSUser(); user.MaxRSCPCell = cell; rateCtrl.BearerSelector = bearerSelector; scheduler.HSUPA_BearerSelector = bearerSelector; }
/// <summary> /// 获得干扰计算对象 /// </summary> private void GetInterfCalcObject() { TrafficAdaptorMgr trafficMgr = TrafficAdaptorMgr.Instance; Dictionary<string, DataTable> m_InterfTable = trafficMgr.TableDIC; InterfParameter param = new InterfParameter(); param.InterfTable = m_InterfTable; m_IInterf = new InterfCalculate(param); }
public CalculateInterference( IInterfCalc interfCalc, SmartAntGain smartant, TDLinkLossCalc linkloss) { m_InterfCalc = interfCalc; m_SmartAnt = smartant; m_LinkLoss = linkloss; }
/// <summary> /// 仿真器其它初始化工作 /// </summary> /// <param name="context"></param> private void SnapshotInit(SnapshotContext context) { FailedThreshold thresold = context.Lookup<FailedThreshold>(ContextKeys.FailedThreshold); FailNumThreshold = thresold.Threshold; //获得用户集合 m_GSMPreAccessUsers = context.Lookup<List<User>>(ContextKeys.PreAccessUsers); //m_GSMFailAccessUsers = context.Lookup<List<User>>(ContextKeys.AccessFailedUsers); m_AppContext = context.Lookup<IApplicationContext>(ContextKeys.AppContext); m_GSMGetLinkLoss = context.Lookup<IGetLinkloss>(ContextKeys.IGetLinkloss); m_GSMContext.AddKey(GsmContextkey.GSMGetLinkloss, m_GSMGetLinkLoss); m_UIParam = context.Lookup<GSMUIParam>(ContextKeys.GSMUIParam); m_GSMContext.AddKey(GsmContextkey.GSMUIParam, m_UIParam); InitCalcPara(); m_GSMContext.AddKey(GsmContextkey.GSMIInterfParam, m_InterfCalcPara); m_InterfCalc = context.Lookup<IInterfCalc>(ContextKeys.IIterfCalc); m_GSMContext.AddKey(GsmContextkey.GSMIInterfCalc, m_InterfCalc); //初始化CodeSchemeTable TrafficAdaptorAssist taa = TrafficAdaptorAssist.Instance; List<GSMCodeSchemeModel> gSMBearer = taa.GSMCodeSchemeList; m_CSTable = new CodeSchemeTable(gSMBearer); m_GSMContext.AddKey(GsmContextkey.CodeSchemeTable, m_CSTable); //初始化接入控制 m_GSMContext.AddKey(GsmContextkey.Access, m_Access); m_Access.Init(m_GSMContext); m_LoadStatus.Init(context); context.AddKey(ContextKeys.GSMLoadStatus, m_LoadStatus); m_GSMContext.AddKey(GsmContextkey.AllUsers, m_GSMSimUserList); m_GSMContext.AddKey(GsmContextkey.GSMForAccess, m_GSMForAccess); }
public TCHCIR(IGetLinkloss gsmLinkLoss, InterfCalcPara interfPara, IInterfCalc interfCalc) { m_GetLinkLoss = gsmLinkLoss; m_InterfPara = interfPara; m_InterfCalc = interfCalc; }
/// <summary> /// 初始化干扰计算接口,并添加至SnapshotContext /// </summary> private void InitialInterfParameter() { m_TrafficeAdapter = TrafficAdaptorMgr.Instance; m_IterfParameter = new InterfParameter(m_TrafficeAdapter.TableDIC); m_InterfCalc = new InterfCalculate(m_IterfParameter); m_SnapshotContext.AddKey(ContextKeys.IIterfCalc, m_InterfCalc); }
/// <summary> /// 计算点到小区的干扰,返回线性值mw /// </summary> /// <param name="usefulSignal">有用信号</param> /// <param name="source">干扰信号</param> /// <param name="m_IInterf">干扰计算接口</param> /// <param name="rIntef">计算本小区之前的总干扰值(mw)</param> /// <returns>加上当前干扰信号的总干扰值(mw)</returns> private static double GetOneCellInf(Signal usefulSignal, Signal source, IInterfCalc m_IInterf, double rIntef) { InterfResult result = m_IInterf.CalcOneSourceInf(usefulSignal, source); //用前一次的干扰值初始化总干扰 double m_totalInf = rIntef; double m_SameFreqInf = UnitTrans.dBto(result.SC); double m_AdjFreqInf = UnitTrans.dBto(result.AC); double m_AdjFreqInf2 = UnitTrans.dBto(result.AC2); double m_OtherSymIntf = UnitTrans.dBto(result.OtherAC); double m_bicInf = UnitTrans.dBto(result.BCI); double m_seInf = UnitTrans.dBto(result.SE); m_totalInf += m_SameFreqInf * (1 - source.OrthCoef); m_totalInf += m_AdjFreqInf; m_totalInf += m_AdjFreqInf2; m_totalInf += m_OtherSymIntf; m_totalInf += m_bicInf; m_totalInf += m_seInf; return m_totalInf; }