Exemplo n.º 1
0
        public void MyInitial()
        {
            m_IGetLinkloss = new MockIGetLinkloss();
            m_InterfCalc = new MockIInterfCalc();
            m_InterfPara = new InterfCalcPara();

        }
Exemplo n.º 2
0
 /// <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;
 }
Exemplo n.º 3
0
 /// <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;
 }
Exemplo n.º 4
0
 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();
 }
Exemplo n.º 5
0
 /// <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);
 }
Exemplo n.º 6
0
        //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;
        }
Exemplo n.º 7
0
 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();
 }
Exemplo n.º 8
0
 /// <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;
 }
Exemplo n.º 9
0
        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);
            
        }
Exemplo n.º 10
0
 /// <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);
 }
Exemplo n.º 11
0
        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;
        }
Exemplo n.º 12
0
 /// <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);
 }
Exemplo n.º 13
0
 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;
 }
Exemplo n.º 14
0
 /// <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);
 }
Exemplo n.º 15
0
 public CalculateInterference( IInterfCalc interfCalc, SmartAntGain smartant, TDLinkLossCalc linkloss)
 {
     m_InterfCalc = interfCalc;
     m_SmartAnt = smartant;
     m_LinkLoss = linkloss;
 }
Exemplo n.º 16
0
        /// <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);

        }
Exemplo n.º 17
0
 public TCHCIR(IGetLinkloss gsmLinkLoss, InterfCalcPara interfPara, IInterfCalc interfCalc)
 {
     m_GetLinkLoss = gsmLinkLoss;
     m_InterfPara = interfPara;
     m_InterfCalc = interfCalc;
 }
Exemplo n.º 18
0
 /// <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);
 }
Exemplo n.º 19
0
        /// <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;
        }