/// <summary> /// 初始化计算中需要的指标以及存储路径 /// </summary> /// <param name="tfMatrix"></param> /// <param name="tdGroup"></param> private void InitMatrix(TrueFalseMatrix tfMatrix, TDPredictionGroup tdGroup) { IProjectManager projectMgr = ServiceHelper.Lookup<MockIProjectManager>(ProjectSingleton.CurrentProject.AppContext); string absolutePathID = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, tdGroup.Name, tdGroup.Region.Name, ContextKeys.TDBestServerCellID); string relativePathID = ResultFilePath.CreateRelativePath(tdGroup.Name, tdGroup.Region.Name, ContextKeys.TDBestServerCellID); string absolutePathRSCP = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, tdGroup.Name, tdGroup.Region.Name, ContextKeys.PCCPCHRSCP); string relativePathRSCP = ResultFilePath.CreateRelativePath(tdGroup.Name, tdGroup.Region.Name, ContextKeys.PCCPCHRSCP); string absolutePathInterf = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, tdGroup.Name, tdGroup.Region.Name, ContextKeys.PCCPCHInterf); string relativePathInterf = ResultFilePath.CreateRelativePath(tdGroup.Name, tdGroup.Region.Name, ContextKeys.PCCPCHInterf); ShortResultStruct srsID = ShortResultStruct.DefaultMax; ShortResultStruct srsRSCP = ShortResultStruct.DefaultMin; ShortResultStruct srsInterf = ShortResultStruct.DefaultMin; m_BestServerCellID = ValueMatrixAssist.GenerateByTrueFalseMatrix(tfMatrix, absolutePathID, relativePathID, srsID); m_PCCPCHRSCP = ValueMatrixAssist.GenerateByTrueFalseMatrix(tfMatrix, absolutePathRSCP, relativePathRSCP, srsRSCP); m_PCCPCHInterf = new ValueMatrixDouble(absolutePathInterf, relativePathInterf, tfMatrix.RowCount, tfMatrix.ColCount); m_PCCPCHInterf.SetValue(0, 0, double.NegativeInfinity); }
private void AddOtherSystemInterfIntoContext(Context context) { string absolutePath = ResultFilePath.CreateFilePath(m_projectManager.CurrentProjectLossPath, m_tdPredicGroup.Name, m_tdPredicGroup.Region.Name, ContextKeys.OtherSystemInterf); string relativePath = ResultFilePath.CreateRelativePath(m_tdPredicGroup.Name, m_tdPredicGroup.Region.Name, ContextKeys.OtherSystemInterf); m_OtherSystemInterfMatrix = new ValueMatrixDouble(absolutePath, relativePath, m_TFMatrix.RowCount, m_TFMatrix.ColCount); m_OtherSystemInterfMatrix.SetValue(0, 0, double.NegativeInfinity); context.Add(ContextKeys.OtherSystemInterf, m_OtherSystemInterfMatrix); }
public void MyTestInitialize() { m_Index = 0; m_Name = "CPICHSINR"; m_Context = new Huawei.UNet.Prediction.CalculateInterface.Context(); m_Case = new CPICHSINRCase(); cellList = new List<IACell>(); TrueFalseMatrix matrix = new TrueFalseMatrix(4, 4, 0.0, 200, 50, true); UMTSPredictionGroup group = new UMTSPredictionGroup(); group.Region = MockRegion.CreateRegion(); group.Name = "UMTSPredictionGroup"; UnionCsService service = new UnionCsService(); Service umtsService = new UMTSService(); service.CSServiceDic.Add(NetWorkType.UMTS, umtsService); group.CsService = service; group.TrafficTerminal = new Terminal(); List<NetworkTerminal> terminalList = new List<NetworkTerminal>(); UMTSTerminal tempTerminal = new UMTSTerminal(); tempTerminal.NoiseFigure = 2; tempTerminal.NetType = NetWorkType.UMTS; terminalList.Add(tempTerminal); group.TrafficTerminal.NetTerminalList = terminalList; for (int i = 0; i < 3; i++) { IACell cell = new UMTSCell(); cellList.Add(cell); } double[] x = new double[3] { 50, 100, 150 }; double[] y = new double[3] { 50, 100, 50 }; MockCellList.CreateCellList(cellList, x, y); IACell m_cell = cellList[1]; m_cell.FreqBand.BandWidth = 3.84f; LinkLossAssist.Init(); string absolutePathID = ResultFilePath.CreateFilePath(@"..\bin\debug\", group.Name, group.Region.Name, UMTSStudyName.Best_Server); string relativePathID = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, UMTSStudyName.Best_Server); string absolutePathRSCP = ResultFilePath.CreateFilePath(@"..\bin\debug\", group.Name, group.Region.Name, UMTSStudyName.CPICH_RSCP); string relativePathRSCP = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, UMTSStudyName.CPICH_RSCP); string absolutePathdlInterf = ResultFilePath.CreateFilePath(@"..\bin\debug\", group.Name, group.Region.Name, ContextKeys.UmtsDLInterf); string relativePathdlInterf = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, ContextKeys.UmtsDLInterf); string absolutePathUERSSI = ResultFilePath.CreateFilePath(@"..\bin\debug\", group.Name, group.Region.Name, UMTSStudyName.UE_RSSI); string relativePathUERSSI = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, UMTSStudyName.UE_RSSI); bestServerID = new ValueMatrixShort(absolutePathID, relativePathID, 4, 4); bestServerRSCP = new ValueMatrixShort(absolutePathRSCP, relativePathRSCP, 4, 4); dlInterf = new ValueMatrixDouble(absolutePathdlInterf, relativePathdlInterf, 4, 4); ueRSSI = new ValueMatrixShort(absolutePathUERSSI, relativePathUERSSI, 4, 4); bestServerRSCP[0] = 4200; dlInterf[0] = -100; m_Context.Add(ContextKeys.CellList, cellList); m_Context.Add(ContextKeys.CurrentCalcCell, m_cell); m_Context.Add(ContextKeys.Group, group); m_Context.Add(ContextKeys.TFMatrix, matrix); m_Context.Add(ContextKeys.ApplicationContext, ProjectSingleton.CurrentProject.AppContext); m_Context.Add(ContextKeys.UmtsBestServerCellID, bestServerID); m_Context.Add(ContextKeys.UmtsBestServerRSCP, bestServerRSCP); m_Context.Add(ContextKeys.UmtsDLInterf, dlInterf); m_Context.Add(ContextKeys.UmtsUERSSI, ueRSSI); }
/// <summary> /// 从context里面提取数据对象 /// </summary> /// <param name="context"></param> private void GetValueFromContext(Context context) { m_TdPredicGroup = (TDPredictionGroup)context[ContextKeys.Group]; m_TFMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_AppContext = (IBaseService)context[ContextKeys.ApplicationContext]; m_ProjectManager = ServiceHelper.Lookup<IProjectManager>(m_AppContext); m_ITrafficService = ServiceHelper.Lookup<ITrafficService>(m_AppContext); HSDPABearerManagement tdHSDPAManagement = m_ITrafficService.LookupManager(typeof(HSDPABearerManagement)) as HSDPABearerManagement; m_TdHSDPAList.AddRange(tdHSDPAManagement.TdHsdpaBearerList); m_CellList = (List<IACell>)context[ContextKeys.CellList]; m_BestServerCellID = (ValueMatrixShort)context[ContextKeys.TDBestServerCellID]; m_DLInterf = (ValueMatrixDouble)context[ContextKeys.DLDCHInterf]; m_Name = m_TdPredicGroup.Name; m_SpaceDivMultipleGain = m_TdPredicGroup.tdUIParam.SpaceDivMultipleGain; m_MaxSpaceDivMultipleGain = m_TdPredicGroup.tdUIParam.MaxSpaceDivMultipleGain; m_TdTermial = (TDTerminal)m_TdPredicGroup.TrafficTerminal.GetNetWorkTerminal(NetWorkType.TDSCDMA); }
/// <summary> /// 从Context中获取本case所需的指标 /// </summary> /// <param name="context"></param> private void GetDataFromContext(Context context) { tfMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_BestServerCellIDMatrix = (ValueMatrixShort)context[ContextKeys.UmtsBestServerCellID]; m_PilotCHInterfMatrix = (ValueMatrixDouble)context[ContextKeys.UmtsDLInterf]; m_BestServerRSCPMatrix = (ValueMatrixShort)context[ContextKeys.UmtsBestServerRSCP]; m_cells = (List<IACell>)context[ContextKeys.CellList]; m_predictionGroup = (UMTSPredictionGroup)context[ContextKeys.Group]; appContext = (IBaseService)context[ContextKeys.ApplicationContext]; IProjectManager projectManager = ServiceHelper.Lookup<IProjectManager>(appContext); m_ProjectPath = projectManager.CurrentProjectLossPath; linkLossCalc = new CoLinkLossCalc(m_predictionGroup.RxSensitivity, m_predictionGroup.TrafficTerminal, m_predictionGroup.TrafficService, m_predictionGroup.IsShadow, m_predictionGroup.IsIndoorCoverage, m_predictionGroup.CoverageProb); m_UMTSTerminal = (UMTSTerminal)m_predictionGroup.TrafficTerminal.GetNetWorkTerminal(NetWorkType.UMTS); }
public void MyTestInitialize() { m_Index = 0; m_Name = "UERSSI"; m_Context = new Huawei.UNet.Prediction.CalculateInterface.Context(); m_Case = new UERSSICase(); cellList = new List<IACell>(); TrueFalseMatrix matrix = new TrueFalseMatrix(4, 4, 0.0, 200, 50, true); LinkLossAssist.Init(); UMTSPredictionGroup group = new UMTSPredictionGroup(); group.Region = MockRegion.CreateRegion(); group.Name = "UMTSPredictionGroup"; UnionCsService csService = new UnionCsService(); UMTSService umtsService = new UMTSService(); umtsService.UmtsR99Bearer = new UMTSR99Bearer(); umtsService.UmtsR99Bearer.PtchMax = 21; umtsService.UmtsR99Bearer.ULNominalRate = 3.4f; csService.CSServiceDic.Add(NetWorkType.UMTS, umtsService); group.CsService = csService; group.TrafficTerminal = new Terminal(); List<NetworkTerminal> terminalList = new List<NetworkTerminal>(); UMTSTerminal tempTerminal = new UMTSTerminal(); tempTerminal.NoiseFigure = 2; tempTerminal.NetType = NetWorkType.UMTS; terminalList.Add(tempTerminal); group.TrafficTerminal.NetTerminalList = terminalList; //terminal = (UMTSTerminal)group.TrafficTerminal.GetNetWorkTerminal(NetWorkType.UMTS); //terminal.NoiseFigure = 1; IProjectManager projectMgr = ServiceHelper.Lookup<MockIProjectManager>(ProjectSingleton.CurrentProject.AppContext); string absolutePathID = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, group.Name, group.Region.Name, ContextKeys.UmtsBestServerCellID); string relativePathID = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, ContextKeys.UmtsBestServerCellID); string absolutePathRSCP = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, group.Name, group.Region.Name, ContextKeys.UmtsBestServerRSCP); string relativePathRSCP = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, ContextKeys.UmtsBestServerRSCP); string absolutePathDLInterf = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, group.Name, group.Region.Name, ContextKeys.UmtsDLInterf); string relativePathDLInterf = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, ContextKeys.UmtsDLInterf); ShortResultStruct srsID = ShortResultStruct.DefaultMin; ShortResultStruct srsRSCP = ShortResultStruct.DefaultMax; ShortResultStruct srsDLInterf = ShortResultStruct.DefaultMax; m_BestServerID = ValueMatrixAssist.GenerateByTrueFalseMatrix(matrix, absolutePathID, relativePathID, srsID); m_BestServerRSCP = ValueMatrixAssist.GenerateByTrueFalseMatrix(matrix, absolutePathRSCP, relativePathRSCP, srsRSCP); m_umtsDLInterf = new ValueMatrixDouble(absolutePathDLInterf, relativePathDLInterf, matrix.RowCount, matrix.ColCount); for (int i = 0; i < 3; i++) { IACell cell = new UMTSCell(); cellList.Add(cell); } double[] x = new double[3] { 50, 100, 150 }; double[] y = new double[3] { 50, 100, 50 }; MockCellList.CreateCellList(cellList, x, y); m_Context.Add(ContextKeys.Group, group); m_Context.Add(ContextKeys.TFMatrix, matrix); m_Context.Add(ContextKeys.ApplicationContext, ProjectSingleton.CurrentProject.AppContext); m_Context.Add(ContextKeys.UmtsBestServerCellID, m_BestServerID); m_Context.Add(ContextKeys.UmtsBestServerRSCP, m_BestServerRSCP); m_Context.Add(ContextKeys.UmtsDLInterf, m_umtsDLInterf); m_Context.Add(ContextKeys.CellList, cellList); m_Case.Name = m_Name; m_Case.InitialCase(m_Context); }
/// <summary> /// 从context里取得需要的数据信息 /// </summary> /// <param name="context"></param> private void GetValueFromContext(Context context) { m_Context = context; m_CovBySignalLevel = (ValueMatrixShort)context[ContextKeys.CovBySignalLevel]; m_Group = (CoPredicGroup)context[ContextKeys.Group]; //获得CellID m_GSMBestServerID = (ValueMatrixDouble)context[ContextKeys.CoGSMBestServerID]; m_UMTSBestServerID = (ValueMatrixDouble)context[ContextKeys.CoUMTSBestServerID]; m_TDBestServerID = (ValueMatrixDouble)context[ContextKeys.CoTDBestServerID]; m_LTEBestServerID = (ValueMatrixDouble)context[ContextKeys.CoLTEBestServerID]; //获得Cell列表 m_CellList = (List<IACell>)context[ContextKeys.CellList]; m_trans = (List<Transceiver>)context[ContextKeys.TranceiverList]; InterfParameter interfPara = new InterfParameter(); interfPara.InterfTable = TrafficAdaptorMgr.Instance.TableDIC; m_IInterf = (IInterf)interfPara; }
/// <summary> /// 计算当前点的覆盖类型 /// </summary> /// <param name="rscp">最佳接收功率</param> /// <param name="cir">CIR</param> /// <param name="interf">本系统干扰</param> /// <param name="otherInterf">异系统干扰</param> /// <param name="cirGate">干扰门限</param> /// <param name="type">覆盖类型</param> private void CalcCellCir(ValueMatrixShort rscp, ValueMatrixDouble cir,ValueMatrixDouble interf, float cirGate, CoverageType type) { if (rscp[m_Index] == rscp.InvalidValue) return; double tempCir = cir[m_Index]; double curCir = Commom.CalcCir(UnitTrans.ShortToDouble(rscp[m_Index]), interf[m_Index]); //if (curCir > tempCir && curCir > cirGate) if (curCir > cirGate) { cir[m_Index] = curCir; m_CovByCir[m_Index] = Commom.XorConvert(Convert.ToInt16(type), m_CovByCir[m_Index]); } }
/// <summary> /// 从context里获取数据 /// </summary> /// <param name="context"></param> private void GetDataFromContext(Context context) { m_Group = (CoPredicGroup)context[ContextKeys.Group]; m_appContext = (IBaseService)context[ContextKeys.ApplicationContext]; IProjectManager projectManager = ServiceHelper.Lookup<IProjectManager>(m_appContext); m_ProjectPath = projectManager.CurrentProjectLossPath; //获得Cell列表 m_CellList = (List<IACell>)context[ContextKeys.CellList]; //获得接收功率矩阵 m_GSMBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoGSMBestServerRSCP]; m_UMTSBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoUMTSBestServerRSCP]; m_TDBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoTDSCDMABestServerRSCP]; m_LTEBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoLTEBestServerRSCP]; m_GSMBestServerID = (ValueMatrixDouble)context[ContextKeys.CoGSMBestServerID]; m_UMTSBestServerID = (ValueMatrixDouble)context[ContextKeys.CoUMTSBestServerID]; m_TDBestServerID = (ValueMatrixDouble)context[ContextKeys.CoTDBestServerID]; m_LTEBestServerID = (ValueMatrixDouble)context[ContextKeys.CoLTEBestServerID]; //获得干扰矩阵 m_GSMInterf = (ValueMatrixDouble)context[ContextKeys.CoGSMInterf]; m_UMTSInterf = (ValueMatrixDouble)context[ContextKeys.CoUMTSInterf]; m_TDInterf = (ValueMatrixDouble)context[ContextKeys.CoTDInterf]; m_LTEInterf = (ValueMatrixDouble)context[ContextKeys.CoLTEInterf]; m_UMTSTerminal = (UMTSTerminal)m_Group.CoUMTSGroup.Terminal.GetNetWorkTerminal(NetWorkType.UMTS); m_TDTerminal = (TDTerminal)m_Group.CoTDSCDMAGroup.Terminal.GetNetWorkTerminal(NetWorkType.TDSCDMA); m_LTETerminal = (LTETerminal)m_Group.CoLTEGroup.Terminal.GetNetWorkTerminal(NetWorkType.LTE); }
private void CalcUMTSCellCir(ValueMatrixDouble umtsBestServerID, ValueMatrixShort rscp, ValueMatrixDouble cir, ValueMatrixDouble interfMatrix, float cirGate, CoverageType type) { if (rscp[m_Index] == rscp.InvalidValue || umtsBestServerID[m_Index] == umtsBestServerID.DefaultValue) return; UMTSCell bestCell = (UMTSCell)SearchAssist.GetCellbyID(Convert.ToInt16(umtsBestServerID[m_Index]), m_CellList); ClutterParamsResult clutterparam = COPredicCommonCalc.ConfingClutter(bestCell.Parent, m_appContext); float modelShadowMargin = COPredicCommonCalc.GetModelShadowMargin(clutterparam, m_Group.CoCovUIParam.Shadow, m_Group.CoCovUIParam.CoverageProb); float ciShadowMargin = COPredicCommonCalc.GetCIShadowMargin(clutterparam, m_Group.CoCovUIParam.Shadow, m_Group.CoCovUIParam.CoverageProb); double interf = CalcUMTSBinInterf(rscp, bestCell, modelShadowMargin, interfMatrix); double tempCir = cir[m_Index]; double curCir = Commom.CalcCir(UnitTrans.ShortToDouble(rscp[m_Index]), interf) + modelShadowMargin - ciShadowMargin; //if (curCir > tempCir && curCir > cirGate) if (curCir > cirGate) { cir[m_Index] = curCir; m_CovByCir[m_Index] = Commom.XorConvert(Convert.ToInt16(type), m_CovByCir[m_Index]); } }
private double CalcUMTSBinInterf(ValueMatrixShort rscp, UMTSCell bestCell, float modelShadowMargin,ValueMatrixDouble interfMatrix) { double linkLoss = bestCell.PilotPower - UnitTrans.ShortToDouble(rscp[m_Index]); double interf = UnitTrans.mwTodBm(UnitTrans.dBmTomw(bestCell.TotalPower) - UnitTrans.dBmTomw(bestCell.PilotPower)) - linkLoss; double noisePower = UnitTrans.dBmTomw(COPredicCommonCalc.CalcNoisePower(m_Group.CoCovUIParam.ThermalNoise, bestCell.FreqBand.BandWidth, m_UMTSTerminal.NoiseFigure)); return UnitTrans.mwTodBm((UnitTrans.dBmTomw(interf) + UnitTrans.dBmTomw(interfMatrix[m_Index])) * UnitTrans.dBto(modelShadowMargin) + noisePower); }
private double CalcTDBinInterf(ValueMatrixShort rscp, TDSCDMACarrier bestCell, float modelShadowMargin, ValueMatrixDouble interfMatrix) { double linkLoss = bestCell.PCCPCHPower - UnitTrans.ShortToDouble(rscp[m_Index]); double txPower = UnitTrans.dBmTomw(bestCell.SCCPCHPower) + UnitTrans.dBmTomw(bestCell.PICHPower); double interf = UnitTrans.mwTodBm(txPower * m_Group.CoCovUIParam.OtherCommonCHFactor * (1 - bestCell.OrthCoef)) - linkLoss; double noisePower = COPredicCommonCalc.CalcNoisePower(bestCell.ThermalNoiseDensity, bestCell.FreqBand.BandWidth, m_TDTerminal.NoiseFigure); return UnitTrans.mwTodBm((UnitTrans.dBmTomw(interfMatrix[m_Index]) + UnitTrans.dBmTomw(interf)) * UnitTrans.dBto(modelShadowMargin) + UnitTrans.dBmTomw(noisePower)); //interf*modelShadowMargin代表同小区干扰 }
private double CalcLTEBinInterf(ValueMatrixShort rscp, LTECell bestCell, float modelShadowMargin, ValueMatrixDouble interfMatrix) { double noisePower = COPredicCommonCalc.CalcNoisePower(m_LteCellEx.TerminalNoisePower, bestCell.FreqBand.BandWidth, m_LTETerminal.NoiseFigure); return UnitTrans.mwTodBm(UnitTrans.dBmTomw(interfMatrix[m_Index]) + UnitTrans.dBmTomw(noisePower)); //这个地方计算有误,新框架里面,取不到lte的热噪声密度 }
/// <summary> /// 初始化存储最佳接收功率和最佳服务小区ID的矩阵 /// </summary> /// <param name="context"></param> private void InitMatrix(Context context) { m_TFMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_GSMBestServerRSCP = Commom.InitValueMatrixShort(CoPredictionStudyType.GSMBestServerRSCP, m_ProjectPath, m_group, ContextKeys.CoGSMBestServerRSCP, m_TFMatrix); m_TDSCDMABestServerRSCP = Commom.InitValueMatrixShort(CoPredictionStudyType.TDSCDMABestServerRSCP, m_ProjectPath, m_group, ContextKeys.CoTDSCDMABestServerRSCP, m_TFMatrix); m_UMTSBestServerRSCP = Commom.InitValueMatrixShort(CoPredictionStudyType.UMTSBestServerRSCP, m_ProjectPath, m_group, ContextKeys.CoUMTSBestServerRSCP, m_TFMatrix); m_LTEBestServerRSCP = Commom.InitValueMatrixShort(CoPredictionStudyType.LTEBestServerRSCP, m_ProjectPath, m_group, ContextKeys.CoLTEBestServerRSCP, m_TFMatrix); m_GSMBestServerID = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoGSMBestServerID, m_group); m_TDSCDMABestServerID = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoTDBestServerID, m_group); m_UMTSBestServerID = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoUMTSBestServerID, m_group); m_LTEBestServerID = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoLTEBestServerID, m_group); }
/// <summary> /// 从Context中获取本case所需的指标 /// </summary> /// <param name="context"></param> private void GetDataFromContext(Context context) { m_Group = (GSMPredicGroup)context[ContextKeys.Group]; m_TFMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_AppContext = (IBaseService)context[ContextKeys.ApplicationContext]; m_ProjectManager = ServiceHelper.Lookup<IProjectManager>(m_AppContext); m_ProjectPath = m_ProjectManager.CurrentProjectLossPath; m_IACellList = (List<IACell>)context[ContextKeys.CellList]; m_GSMBestServerID = (ValueMatrixShort)context[ContextKeys.GSMBestServerID]; m_GSMBCCHRP = (ValueMatrixShort)context[ContextKeys.GSMBCCHRP]; m_BCCHRPTotal = (ValueMatrixDouble)context[ContextKeys.GSMBCCHRPTotal]; }
/// <summary> /// 将本Case计算出的数据存储到context中 /// </summary> /// <param name="context"></param> private void AddDataToContext(Context context) { m_TFMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_GSMCir = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoGSMCir,m_Group); m_UMTSCir = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoUMTSCir, m_Group); m_TDSCDMACir = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoTDSCDMACir, m_Group); m_LTECir = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoLTECir, m_Group); context.Add(ContextKeys.CoGSMCir, m_GSMCir); context.Add(ContextKeys.CoUMTSCir, m_UMTSCir); context.Add(ContextKeys.CoTDSCDMACir, m_TDSCDMACir); context.Add(ContextKeys.CoLTECir, m_LTECir); }
private void GenerateDLInterfMatrix() { string absolutePath = ResultFilePath.CreateFilePath(m_projectMgr.CurrentProjectLossPath, m_Group.Name, m_Group.Region.Name, ContextKeys.DLDCHInterf); string relativePath = ResultFilePath.CreateRelativePath(m_Group.Name, m_Group.Region.Name, ContextKeys.DLDCHInterf); m_DLInterfMatrix = new ValueMatrixDouble(absolutePath, relativePath, m_tfMatrix.RowCount, m_tfMatrix.ColCount); m_DLInterfMatrix.SetValue(0, 0, double.NegativeInfinity); }
/// <summary> /// 从Context获取本case所需的指标 /// </summary> /// <param name="context"></param> private void GetDataFromContext(Context context) { m_predictionGroup = (TDPredictionGroup)context[ContextKeys.Group]; m_tfMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_appContext = (IBaseService)context[ContextKeys.ApplicationContext]; m_projectMgr = ServiceHelper.Lookup<IProjectManager>(m_appContext); m_cellList = (List<IACell>)context[ContextKeys.CellList]; m_bestServerCellIDMatrix = (ValueMatrixShort)context[ContextKeys.TDBestServerCellID]; m_HSPDSCHRSCPMatrix = (ValueMatrixShort)context[ContextKeys.HSPDSCHRSCP]; m_HSPDSCHInterfMatrix = (ValueMatrixDouble)context[ContextKeys.HSPDSCHInterf]; m_OtherSystemInterfMatrix = (ValueMatrixDouble)context[ContextKeys.OtherSystemInterf]; m_tdTermianl = (TDTerminal)m_predictionGroup.TrafficTerminal.GetNetWorkTerminal(NetWorkType.TDSCDMA); }
private void GetDataFromContext(Context context) { appContext = (IBaseService)context[ContextKeys.ApplicationContext]; IProjectManager pm = ServiceHelper.Lookup<IProjectManager>(appContext); m_PredictionGroup = (UMTSPredictionGroup)context[ContextKeys.Group]; m_TFMatrix = (TrueFalseMatrix)context[ContextKeys.TFMatrix]; m_CellList = (List<IACell>)context[ContextKeys.CellList]; m_BestCellIDMatrix = (ValueMatrixShort)context[ContextKeys.UmtsBestServerCellID]; m_BestServerRSCPMatrix = (ValueMatrixShort)context[ContextKeys.UmtsBestServerRSCP]; m_DLDCHInterfMatrix = (ValueMatrixDouble)context[ContextKeys.UmtsDLInterf]; m_BinMapCellsDic = (Dictionary<int, List<short>>)context[ContextKeys.UmtsBinMapCellDic]; m_ProjectPath = pm.CurrentProjectLossPath; m_UmtsTerminal = (UMTSTerminal)m_PredictionGroup.TrafficTerminal.GetNetWorkTerminal(NetWorkType.UMTS); linkLossCalc = new CoLinkLossCalc(m_PredictionGroup.RxSensitivity, m_PredictionGroup.TrafficTerminal, m_PredictionGroup.TrafficService, m_PredictionGroup.IsShadow, m_PredictionGroup.IsIndoorCoverage, m_PredictionGroup.CoverageProb); m_TchDLRate = UMTSPredicCommonCalc.GetDlBitRate(m_PredictionGroup); m_TchTxPower = UMTSPredicCommonCalc.GetTchPower(m_PredictionGroup); }
/// <summary> /// 初始化指标的存取矩阵 /// </summary> /// <param name="group"></param> /// <param name="tFMatrix"></param> private void InitData(TDPredictionGroup pg, TrueFalseMatrix tFMatrix) { string absolutePath = ResultFilePath.CreateFilePath(m_projectManager.CurrentProjectLossPath, pg.Name, pg.Region.Name, ContextKeys.PCCPCHInterf); string relativePath = ResultFilePath.CreateRelativePath(pg.Name, pg.Region.Name, ContextKeys.PCCPCHInterf); m_PCCPCHInterfMatrix = new ValueMatrixDouble(absolutePath, relativePath, tFMatrix.RowCount, tFMatrix.ColCount); m_PCCPCHInterfMatrix.SetValue(0, 0, double.NegativeInfinity); }
/// <summary> /// 初始化干扰矩阵 /// </summary> /// <param name="context"></param> private void InitInterfMatrix(Context context) { //获得TrueFalse矩阵 m_TFMatrix = (TrueFalseMatrix)context["TFMatrix"]; //获取工程路径 IBaseService m_appContext = (IBaseService)context[ContextKeys.ApplicationContext]; IProjectManager m_ProjectManager = ServiceHelper.Lookup<IProjectManager>(m_appContext); string m_ProjectPath = m_ProjectManager.CurrentProjectLossPath; //Interf矩阵的初始化 m_GSMInterf = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoGSMInterf, m_Group); m_TDInterf = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoTDInterf, m_Group); m_UMTSInterf = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoUMTSInterf, m_Group); m_LTEInterf = Commom.InitValueMatrix(m_TFMatrix, m_ProjectPath, ContextKeys.CoLTEInterf, m_Group); }
public void MyTestInitialize() { m_Index = 0; m_Name = "DLDPCHSINRCase"; m_Context = new Huawei.UNet.Prediction.CalculateInterface.Context(); m_Case = new DLDPCHSINRCase(); cellList = new List<IACell>(); TrueFalseMatrix matrix = new TrueFalseMatrix(4, 4, 0.0, 200, 50, true); LinkLossAssist.Init(); #region group 业务 终端 参数 UMTSPredictionGroup group = new UMTSPredictionGroup(); group.Region = MockRegion.CreateRegion(); group.Name = "UMTSPredictionGroup"; group.UIParam.DLRakeEffiFactor = 0.6f; group.UIParam.DLDivGain = 1; UnionPsService psService = new UnionPsService(); UMTSService umtsService = new UMTSService(); umtsService.UmtsR99Bearer = new UMTSR99Bearer(); umtsService.UmtsR99Bearer.PtchMax = 21; psService.PSServiceDic.Add(NetWorkType.UMTS, umtsService); group.PsService = psService; group.TrafficTerminal = new Terminal(); List<NetworkTerminal> terminalList = new List<NetworkTerminal>(); UMTSTerminal tempTerminal = new UMTSTerminal(); tempTerminal.NoiseFigure = 2; tempTerminal.NetType = NetWorkType.UMTS; terminalList.Add(tempTerminal); group.TrafficTerminal.NetTerminalList = terminalList; #endregion #region 文件存储 IProjectManager projectMgr = ServiceHelper.Lookup<MockIProjectManager>(ProjectSingleton.CurrentProject.AppContext); string absolutePathID = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, group.Name, group.Region.Name, ContextKeys.UmtsBestServerCellID); string relativePathID = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, ContextKeys.UmtsBestServerCellID); string absolutePathInterf = ResultFilePath.CreateFilePath(projectMgr.CurrentProjectLossPath, group.Name, group.Region.Name, ContextKeys.UmtsDLInterf); string relativePathInterf = ResultFilePath.CreateRelativePath(group.Name, group.Region.Name, ContextKeys.UmtsDLInterf); string absolutePathRSCP = ResultFilePath.CreateFilePath(@"..\bin\debug\", group.Name,group.Region.Name, UMTSStudyName.CPICH_RSCP); string relativePathRSCP = ResultFilePath.CreateRelativePath(group.Name,group.Region.Name, UMTSStudyName.CPICH_RSCP); ShortResultStruct srsID = ShortResultStruct.DefaultMax; ShortResultStruct srsInterf = ShortResultStruct.DefaultMin; m_BestServerID = ValueMatrixAssist.GenerateByTrueFalseMatrix(matrix, absolutePathID, relativePathID, srsID); m_umtsDLInterf = new ValueMatrixDouble(absolutePathInterf, relativePathInterf, matrix.RowCount, matrix.ColCount); m_BestServerRSCP = new ValueMatrixShort(absolutePathRSCP, relativePathRSCP, matrix.RowCount, matrix.ColCount); m_umtsDLInterf.SetValue(0, 0, double.NegativeInfinity); #endregion m_umtsDLInterf[0] = -100; m_BestServerRSCP[0] = -2000; #region 构建小区 for (int i = 0; i < 2; i++) { IACell cell = new UMTSCell(); cell.FreqBand.BandWidth = 3.84f; cellList.Add(cell); } double[] x = new double[2] { 50, 100 }; double[] y = new double[2] { 50, 100 }; MockCellList.CreateCellList(cellList, x, y); m_BinMapCellsDic = new Dictionary<int, List<short>>(); #endregion #region 将数据加入Context m_Context.Add(ContextKeys.Group, group); m_Context.Add(ContextKeys.TFMatrix, matrix); m_Context.Add(ContextKeys.CellList, cellList); m_Context.Add(ContextKeys.ApplicationContext, ProjectSingleton.CurrentProject.AppContext); m_Context.Add(ContextKeys.UmtsBestServerCellID, m_BestServerID); m_Context.Add(ContextKeys.UmtsBinMapCellDic, m_BinMapCellsDic); m_Context.Add(ContextKeys.UmtsDLInterf, m_umtsDLInterf); m_Context.Add(ContextKeys.UmtsBestServerRSCP, m_BestServerRSCP); #endregion m_Case.Name = m_Name; m_Case.InitialCase(m_Context); }