public List<StatSimuCarrierResult> Statistic(int beginStaTime, int endStaTime, List<ISimulationCarrier> simulationCarrierList, OtherSubSysInterface subSysInterface) { List<StatSimuCarrierResult> list = new List<StatSimuCarrierResult>(); StaSimulationUser statisticProcessor = new StaSimulationUser(); foreach (SimulationCarrier carrier in simulationCarrierList) { int num = (endStaTime - beginStaTime) + 1; StatSimuCarrierResult staSimulationCarrierResult = new StatSimuCarrierResult(); staSimulationCarrierResult.TxPower = SimulationTools.ConvertLineTodB(this.CalculateAvgTxPower(beginStaTime, endStaTime, carrier)); staSimulationCarrierResult.UlScheduleUserNum = ((float) carrier.UlWarmupTotalScheduleUserNum) / ((float) ((endStaTime - beginStaTime) + 1)); staSimulationCarrierResult.UlAvgVMIMOUsedRbRate = (((float) carrier.UlWarmupTotalVMIMOUsedRB) / ((float) num)) / ((float) carrier.PuschRbNum); staSimulationCarrierResult.UlIoT = carrier.UlIoT; staSimulationCarrierResult.UlAvgUsedRbNum = this.CalculateUlAvgUsedRbNum(beginStaTime, endStaTime, carrier); staSimulationCarrierResult.DlAvgUsedRbNum = this.CalculateDlAvgUsedRbNum(beginStaTime, endStaTime, carrier); staSimulationCarrierResult.UlAvgLoad = this.CalculateUlAvgLoad(beginStaTime, endStaTime, carrier); staSimulationCarrierResult.DlAvgLoad = this.CalculateDlAvgLoad(beginStaTime, endStaTime, carrier); staSimulationCarrierResult.UlAvgThroughput = this.CalculateUlCarrierAvgThroughput(beginStaTime, endStaTime, carrier); staSimulationCarrierResult.DlAvgThroughput = this.CalculateDlCarrierThroughput(beginStaTime, endStaTime, carrier); staSimulationCarrierResult.UlAppAvgThroughput = carrier.WarmupTotalTh.UlAppThroughput / ((float) num); staSimulationCarrierResult.DlAppAvgThroughput = carrier.WarmupTotalTh.DlAppThroughput / ((float) num); staSimulationCarrierResult.DlPeakThroughput = carrier.CarrierPeakThr.DlMacThroughput; staSimulationCarrierResult.UlPeakThroughput = carrier.CarrierPeakThr.UlMacThroughput; staSimulationCarrierResult.DlPeakAplThroughput = carrier.CarrierPeakThr.DlAppThroughput; staSimulationCarrierResult.UlPeakAplThroughput = carrier.CarrierPeakThr.UlAppThroughput; staSimulationCarrierResult.ServicePeakThDic = carrier.ServicePeakThDic; staSimulationCarrierResult.ServiceAvgThDic.Clear(); foreach (string str in carrier.ServiceWarmUpTotalThDic.Keys) { float ulmac = carrier.ServiceWarmUpTotalThDic[str].UlMacThroughput / ((float) num); float dlmac = carrier.ServiceWarmUpTotalThDic[str].DlMacThroughput / ((float) num); float ulapl = carrier.ServiceWarmUpTotalThDic[str].UlAppThroughput / ((float) num); float dlapl = carrier.ServiceWarmUpTotalThDic[str].DlAppThroughput / ((float) num); ThroughputGroup group = new ThroughputGroup(ulmac, dlmac, ulapl, dlapl); staSimulationCarrierResult.ServiceAvgThDic.Add(str, group); } staSimulationCarrierResult.UlScheduleTh = (carrier.UlScheduleTh * 1000f) / ((float) ((endStaTime - beginStaTime) + 1)); staSimulationCarrierResult.CarrierID = carrier.Carrier.ID; staSimulationCarrierResult.CellName = SimulationTools.GetTransName(carrier); staSimulationCarrierResult.CarrierName = carrier.Carrier.Name; List<StatSimuUserResult> userResult = new List<StatSimuUserResult>(); this.UpdateUserFailReason(carrier.DlUserList); this.UpdateUserFailReason(carrier.UlUserList); this.StatisticUsers(carrier.DlUserList, userResult, statisticProcessor, beginStaTime, endStaTime, subSysInterface); this.StatisticUsers(carrier.UlUserList, userResult, statisticProcessor, beginStaTime, endStaTime, subSysInterface); this.StatisticUsers(carrier.FailUserList, userResult, statisticProcessor, beginStaTime, endStaTime, subSysInterface); this.StatisticUsers(carrier.UlRsSinrFailUserList, userResult, statisticProcessor, beginStaTime, endStaTime, subSysInterface); staSimulationCarrierResult.StatSimuUserResultList = userResult; this.StatisticStateUserNum(userResult, staSimulationCarrierResult); carrier.count = count; list.Add(staSimulationCarrierResult); } return list; }
private void CalcServiceThroughput(StatSimuCarrierResult carrierResult, Dictionary<string, ServiceThroughput> ServiceThroughputDic) { foreach (StatSimuUserResult result in carrierResult.StatSimuUserResultList) { float ulAvgThroughput; float ulAppAvgThroughput; float dlAvgThroughput; float dlAppAvgThroughput; ServiceThroughput throughput; if (result.LTEUser.LinkType == LinkType.Uplink) { ulAvgThroughput = result.UlAvgThroughput; ulAppAvgThroughput = result.UlAppAvgThroughput; dlAvgThroughput = 0f; dlAppAvgThroughput = 0f; } else { ulAvgThroughput = 0f; ulAppAvgThroughput = 0f; dlAvgThroughput = result.DlAvgThroughput; dlAppAvgThroughput = result.DlAppAvgThroughput; } if (!ServiceThroughputDic.TryGetValue(result.LTEUser.Service.Name, out throughput)) { throughput = new ServiceThroughput(ulAvgThroughput, ulAppAvgThroughput, dlAvgThroughput, dlAppAvgThroughput); ServiceThroughputDic.Add(result.LTEUser.Service.Name, throughput); } else { throughput.UlThroughput += ulAvgThroughput; throughput.UlAppThroughput += ulAppAvgThroughput; throughput.DlThroughput += dlAvgThroughput; throughput.DlAppThroughput += dlAppAvgThroughput; } } }
private void StatisticStateUserNum(List<StatSimuUserResult> users, StatSimuCarrierResult staSimulationCarrierResult) { foreach (StatSimuUserResult result in users) { this.StatisticStateUserNum(result, staSimulationCarrierResult); } }
private void StatisticStateUserNum(StatSimuUserResult user, StatSimuCarrierResult staSimulationCarrierResult) { FailReason failReason = user.FailReason; if (failReason == FailReason.Satisfied) { staSimulationCarrierResult.SatisfiedUserNum++; } else if (failReason == FailReason.DlRsSinrFail) { staSimulationCarrierResult.DlRsSinrFailUserNum++; } else { staSimulationCarrierResult.OfflineUserNum++; } }
private void StatisticStateUserNum(StatSimuUserResult user, StatSimuCarrierResult staSimulationCarrierResult) { FailReason failReason = user.FailReason; if (failReason == FailReason.Satisfied && !(user.UlAvgThroughput<user.ulMacMinThroughputdemand)) { staSimulationCarrierResult.SatisfiedUserNum++; } else if (failReason == FailReason.DlRsSinrFail) { staSimulationCarrierResult.DlRsSinrFailUserNum++; } else if (failReason == FailReason.UlRsSinrFail) { staSimulationCarrierResult.UlRsSinrFailUserNum++; } else { staSimulationCarrierResult.OfflineUserNum++; } }
private void getUserResult(User user, SnapShotStatData snapData, out StatSimuUserResult userResult, out StatSimuCarrierResult carrier) { userResult = null; carrier = null; if (user.Tag != null) { string tag = (string) user.Tag; carrier = this.GetStatSimuCarrierResultByName(snapData, tag); if (carrier == null) { throw new Exception(SimulationResource.SIMULATION_FIND_BESTSERVER_FAILED); } foreach (StatSimuUserResult result in carrier.StatSimuUserResultList) { if (user.Id == result.LTEUser.Id) { userResult = result; break; } } } else { userResult = new StatSimuUserResult(user); } }