Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 private void CalcPeakThPerSite(Dictionary<string, ThroughputGroup> SitePeakThDic, Dictionary<string, Dictionary<string, ThroughputGroup>> SiteServicePeakTh, Dictionary<string, ThroughputGroup> sitePeakThDicTmp, Dictionary<string, Dictionary<string, ThroughputGroup>> siteServicePeakThDicTmp)
 {
     if (this.m_CurTTI >= this.m_SnapshotInfo.TtiWarmup)
     {
         ThroughputGroup group;
         foreach (KeyValuePair<string, ThroughputGroup> pair in sitePeakThDicTmp)
         {
             group = null;
             if (!SitePeakThDic.TryGetValue(pair.Key, out group))
             {
                 group = new ThroughputGroup();
                 SitePeakThDic.Add(pair.Key, group);
             }
             group.UlMacThroughput = Math.Max(group.UlMacThroughput, pair.Value.UlMacThroughput);
             group.UlAppThroughput = Math.Max(group.UlAppThroughput, pair.Value.UlAppThroughput);
             group.DlMacThroughput = Math.Max(group.DlMacThroughput, pair.Value.DlMacThroughput);
             group.DlAppThroughput = Math.Max(group.DlAppThroughput, pair.Value.DlAppThroughput);
         }
         foreach (KeyValuePair<string, Dictionary<string, ThroughputGroup>> pair2 in siteServicePeakThDicTmp)
         {
             Dictionary<string, ThroughputGroup> dictionary = null;
             if (!SiteServicePeakTh.TryGetValue(pair2.Key, out dictionary))
             {
                 dictionary = new Dictionary<string, ThroughputGroup>();
                 SiteServicePeakTh.Add(pair2.Key, dictionary);
             }
             foreach (KeyValuePair<string, ThroughputGroup> pair3 in pair2.Value)
             {
                 group = null;
                 if (!dictionary.TryGetValue(pair3.Key, out group))
                 {
                     group = new ThroughputGroup();
                     dictionary.Add(pair3.Key, group);
                 }
                 group.UlMacThroughput = Math.Max(group.UlMacThroughput, pair3.Value.UlMacThroughput);
                 group.UlAppThroughput = Math.Max(group.UlAppThroughput, pair3.Value.UlAppThroughput);
                 group.DlMacThroughput = Math.Max(group.DlMacThroughput, pair3.Value.DlMacThroughput);
                 group.DlAppThroughput = Math.Max(group.DlAppThroughput, pair3.Value.DlAppThroughput);
             }
         }
     }
 }
Ejemplo n.º 3
0
 private void UpdateUserTotalThroughput(SimulationUser user, Dictionary<string, ThroughputGroup> ServiceThDic)
 {
     ThroughputGroup group = null;
     if (!ServiceThDic.TryGetValue(user.LTEUser.Service.Name, out group))
     {
         group = new ThroughputGroup();
         ServiceThDic.Add(user.LTEUser.Service.Name, group);
     }
     user.MacPeakThroughput = Math.Max(user.MacPeakThroughput, user.MacTBS * 1000f);
     user.AppPeakThroughput = Math.Max(user.AppPeakThroughput, user.AplTBS * 1000f);
     if (user.LTEUser.LinkType == LinkType.Uplink)
     {
         user.UserUlTotalThroughput += user.MacTBS * 1000f;
         user.UserUlAppTotalThroughput += user.AplTBS * 1000f;
         group.UlAppThroughput += user.AplTBS * 1000f;
         group.UlMacThroughput += user.MacTBS * 1000f;
     }
     else
     {
         user.UserDlTotalThroughput += user.MacTBS * 1000f;
         user.UserDlAppTotalThroughput += user.AplTBS * 1000f;
         group.DlAppThroughput += user.AplTBS * 1000f;
         group.DlMacThroughput += user.MacTBS * 1000f;
     }
 }
Ejemplo n.º 4
0
 private void UpdateCarrierServicesTh(SimulationCarrier carrier, Dictionary<string, ThroughputGroup> ServiceThDic)
 {
     foreach (KeyValuePair<string, ThroughputGroup> pair in ServiceThDic)
     {
         ThroughputGroup group = null;
         if (!carrier.ServiceWarmUpTotalThDic.TryGetValue(pair.Key, out group))
         {
             group = new ThroughputGroup();
             carrier.ServiceWarmUpTotalThDic.Add(pair.Key, group);
         }
         group.DlAppThroughput += pair.Value.DlAppThroughput;
         group.DlMacThroughput += pair.Value.DlMacThroughput;
         group.UlAppThroughput += pair.Value.UlAppThroughput;
         group.UlMacThroughput += pair.Value.UlMacThroughput;
         ThroughputGroup group2 = null;
         if (!carrier.ServicePeakThDic.TryGetValue(pair.Key, out group2))
         {
             group2 = new ThroughputGroup();
             carrier.ServicePeakThDic.Add(pair.Key, group2);
         }
         if (pair.Value.UlMacThroughput > group2.UlMacThroughput)
         {
             group2.UlMacThroughput = pair.Value.UlMacThroughput;
             group2.UlAppThroughput = pair.Value.UlAppThroughput;
         }
         if (pair.Value.DlMacThroughput > group2.DlMacThroughput)
         {
             group2.DlMacThroughput = pair.Value.DlMacThroughput;
             group2.DlAppThroughput = pair.Value.DlAppThroughput;
         }
     }
 }
Ejemplo n.º 5
0
 private void GetThrPerSite(SimulationCarrier carrier, Dictionary<string, ThroughputGroup> sitePeakThDicTmp, Dictionary<string, Dictionary<string, ThroughputGroup>> siteServicePeakThDicTmp, Dictionary<string, ThroughputGroup> serviceThDic)
 {
     string name = SimulationTools.GetSiteName(carrier);
     ThroughputGroup group = null;
     if (!sitePeakThDicTmp.TryGetValue(name, out group))
     {
         group = new ThroughputGroup();
         sitePeakThDicTmp.Add(name, group);
     }
     group.DlAppThroughput += carrier.DlActualAppTh;
     group.DlMacThroughput += carrier.DlActualTh;
     group.UlAppThroughput += carrier.UlActualAppTh;
     group.UlMacThroughput += carrier.UlActualTh;
     Dictionary<string, ThroughputGroup> dictionary = null;
     if (!siteServicePeakThDicTmp.TryGetValue(name, out dictionary))
     {
         dictionary = new Dictionary<string, ThroughputGroup>();
         siteServicePeakThDicTmp.Add(name, dictionary);
     }
     foreach (KeyValuePair<string, ThroughputGroup> pair in serviceThDic)
     {
         ThroughputGroup group2 = null;
         if (!dictionary.TryGetValue(pair.Key, out group2))
         {
             group2 = new ThroughputGroup();
             dictionary.Add(pair.Key, group2);
         }
         group2.DlAppThroughput += pair.Value.DlAppThroughput;
         group2.DlMacThroughput += pair.Value.DlMacThroughput;
         group2.UlAppThroughput += pair.Value.UlAppThroughput;
         group2.UlMacThroughput += pair.Value.UlMacThroughput;
     }
 }