示例#1
0
 public static float CalculateFactor(ISimulationCarrier carrier, ISimulationCarrier bestCarrier)
 {
     float bandWidth = carrier.Carrier.FreqBand.BandWidth;
     float num3 = bestCarrier.Carrier.FreqBand.BandWidth;
     if (bandWidth > num3)
     {
         return carrier.DlAdjFBandFactor;
     }
     return ((carrier.DlAdjFBandFactor * bandWidth) / num3);
 }
示例#2
0
 private List<RelayCell> GetInComputerAreaRCs(ISimulationCarrier carrier,List<SimulationUser> relayUsers)
 {
     List<RelayCell> relayUserList = new List<RelayCell>();
     foreach (SimulationUser simuUser in relayUsers)
     {
         if (this.CarrierInComputerArea(simuUser, carrier))
         {
             relayUserList.Add(simuUser.RelayUser);
         }
     }
     return relayUserList;
 }
示例#3
0
 private List<User> GetInComputerAreaUsers(List<ISimulationUser> allUsers, ISimulationCarrier carrier)
 {
     List<User> list = new List<User>();
     foreach (IMeasureUser user in allUsers)
     {
         if (this.CarrierInComputerArea(user, carrier))
         {
             list.Add(user.LTEUser);
         }
     }
     return list;
 }
示例#4
0
 private void ClearUserSiteShadowValue(ISimulationCarrier preCarrier, ISimulationCarrier curCarrier)
 {
     try
     {
         if ((preCarrier != null) && (SimulationTools.GetSiteID(preCarrier as SimulationCarrier)!=SimulationTools.GetSiteID(curCarrier as SimulationCarrier)))
         {
             this.m_TotalLossCalObj.ClearUserSiteShadowValue();
         }
     }
     catch (Exception)
     {
     }
 }
示例#5
0
 private bool CarrierInComputerArea(ISimulationUser iuser, ISimulationCarrier targetCarrier)
 {
     float calcRadius = SimulationTools.GetCalcRadius(targetCarrier);
     double[] xy = SimulationTools.GetSitePosition(targetCarrier);
     List<AntConfig> antConfiguration = SimulationTools.GetAntConfig(targetCarrier.Carrier);
     double maxValue = double.MaxValue;
     foreach (AntConfig config in antConfiguration)
     {
         double num5 = iuser.LTEUser.X - (xy[0] + config.DX);
         double num6 = iuser.LTEUser.Y - (xy[1] + config.DY);
         maxValue = Math.Min(maxValue, (num5 * num5) + (num6 * num6));
     }
     return (maxValue <= (calcRadius * calcRadius));
 }
示例#6
0
 /// <summary>
 /// 按照可用的切换吞吐量排序方法(按照ULAvailableHOThroughput把小区从大到小排序)
 /// </summary>
 /// <param name="carrierX"></param>
 /// <param name="carrierY"></param>
 /// <returns></returns>
 public override int CompareByThroughput(ISimulationCarrier carrierX, ISimulationCarrier carrierY)
 {
     IAdmissionCarrier carrier = carrierX as IAdmissionCarrier;
     IAdmissionCarrier carrier2 = carrierY as IAdmissionCarrier;
     AdmissionCellTag admissionCarrierTag = carrier.AdmissionCarrierTag as AdmissionCellTag;
     AdmissionCellTag tag2 = carrier2.AdmissionCarrierTag as AdmissionCellTag;
     if (admissionCarrierTag.ULAvailableHOThroughput > tag2.ULAvailableHOThroughput)
     {
         return -1;
     }
     if (admissionCarrierTag.ULAvailableHOThroughput < tag2.ULAvailableHOThroughput)
     {
         return 1;
     }
     return 0;
 }
示例#7
0
 private Dictionary<bool, List<User>> GetInComputerAreaUsers(List<ISimulationUser> allUsers, List<SimulationUser> relayUsers, ISimulationCarrier carrier)
 {
     List<User> lteUserList = new List<User>();
     List<User> relayUserList = new List<User>();
     foreach (SimulationUser simuUser in relayUsers)
     {
         if (this.CarrierInComputerArea(simuUser, carrier))
         {
             relayUserList.Add(simuUser.LTEUser);
         }
     }
     foreach (SimulationUser user in allUsers)
     {
         if (this.CarrierInComputerArea(user, carrier))
         {
             lteUserList.Add(user.LTEUser);
         }
     }
     Dictionary<bool, List<User>> userDic = new Dictionary<bool, List<User>>();
     userDic.Add(true, lteUserList);
     userDic.Add(false, relayUserList);
     return userDic;
 }
示例#8
0
 public static float GetCalcRadius(ISimulationCarrier iCarrier)
 {
     float calcRadius = SimulationConstant.COMPUTE_RADIUS;
     if (iCarrier.IsLTECell)
     {
         LTECell lteCarrier = iCarrier.Carrier as LTECell;
         if ((lteCarrier.PropModels != null) && (lteCarrier.PropModels.Count > 0))
         {
             calcRadius = lteCarrier.PropModels[0].CalcRadius;
         }
     }
     else 
     {
         RelayCell relayCell = iCarrier.Carrier as RelayCell;
         if (relayCell.RelayUEPropModelConfig != null)
         {
             calcRadius = relayCell.RelayUEPropModelConfig.CalcRadius;
         }
     }
     //if ((iCarrier.LTECarrier.PropModels != null) && (iCarrier.LTECarrier.PropModels.Count > 0))
     //{
     //    calcRadius = iCarrier.LTECarrier.PropModels[0].CalcRadius;
     //}
     return calcRadius;
 }
示例#9
0
 private bool ResConflict(IUlScheduleUser iUlScheduleUser, ISimulationCarrier carrier)
 {
     if (null == carrier)
     {
         return false;
     }
     if (!carrier.IsUlIcicOn)
     {
         return false;
     }
     int ulEdgeUserFreNum = (int) carrier.AlgParameter.UlEdgeUserFreNum;
     int num2 = (int) iUlScheduleUser.BestServiceCarrier.AlgParameter.UlEdgeUserFreNum;
     return m_ICICMatrix[num2, ulEdgeUserFreNum];
 }
示例#10
0
 internal void ResetCarrierParameter(ISimulationCarrier relayCell)
 {
     throw new NotImplementedException();
 }
示例#11
0
 public void GetUlUserSinrTargetBound(ISimulationUser user, ISimulationCarrier carrier, out float minSinr, out float maxSinr)
 {
     if (this._mcsInstance == null)
     {
         GlobalParameter parameter = GlobalParameter.getInstance();
         minSinr = parameter.m_UlTargetSinr[0];
         maxSinr = parameter.m_UlTargetSinr[parameter.m_UlTargetSinr.Length - 1];
     }
     else
     {
         LTETerminal terminal = user.LTEUser.Terminal.NetTerminalList[0] as LTETerminal;
         int rxNum = SimulationTools.GetRxNum(carrier as SimulationCarrier);
         this._mcsInstance.GetMinOrMaxSINR(carrier.Carrier.Reception, user.LTEUser.Mobility, terminal.TxAntNumber, rxNum, terminal.UlSmSupported, user.ULBLER, out minSinr, out maxSinr);
     }
 }
示例#12
0
 //需要修改
 private int SortCarrierBySite(ISimulationCarrier carrierA, ISimulationCarrier carrierB)
 {
     int num;
     try
     {
         num = carrierA.Carrier.Parent.Parent.ID - carrierB.Carrier.Parent.Parent.ID;
         if (num == 0)
         {
             num = carrierA.Carrier.ID - carrierB.Carrier.ID;
         }
     }
     catch (Exception)
     {
         num = 0;
     }
     return num;
 }
示例#13
0
 public abstract int CompareByThroughput(ISimulationCarrier carrierX, ISimulationCarrier carrierY);
示例#14
0
 private void JustfyFre(ISimulationCarrier targetCarrier, bool isSameFre)
 {
     if (isSameFre)
     {
         this.m_sameFreNgbList.Add(targetCarrier);
     }
     else
     {
         this.m_diffFreNgbList.Add(targetCarrier);
     }
 }
示例#15
0
 public void GetDlUserSinrTargetBound(ISimulationUser user, ISimulationCarrier carrier, out float minSinr, out float maxSinr, bool isSmSupport)
 {
     if (this._mcsInstance == null)
     {
         GlobalParameter parameter = GlobalParameter.getInstance();
         minSinr = parameter.m_DlTargetSinrSFBC[0];
         maxSinr = parameter.m_DlTargetSinrSFBC[parameter.m_DlTargetSinrSFBC.Length - 1];
     }
     else
     {
         Terminal terminal = user.LTEUser.Terminal;
         LTETerminal terminal2 = terminal.NetTerminalList[0] as LTETerminal;
         int txNum = SimulationTools.GetTxNum(carrier as SimulationCarrier);
         this._mcsInstance.GetMinOrMaxSINR(terminal.Reception, user.LTEUser.Mobility, txNum, terminal2.RxAntNumber, isSmSupport, user.DLBLER, out minSinr, out maxSinr);
     }
 }
示例#16
0
 /// <summary>
 /// 得到小区所在的位置坐标 add by xujuan 2011.03.29
 /// </summary>
 /// <param name="carrier"></param>
 /// <returns></returns>
 public static double[] GetSitePosition(ISimulationCarrier carrier)
 {
     double carrier_X;
     double carrier_Y;
     if (carrier.IsLTECell == true)
     {
         LTECell lteCarrier = carrier.Carrier as LTECell;
         carrier_X = lteCarrier.Parent.X;
         carrier_Y = lteCarrier.Parent.Y;
     }
     else
     {
         RelayCell relayCell = carrier.Carrier as RelayCell;
         carrier_X = relayCell.ParentRN.X;
         carrier_Y = relayCell.ParentRN.Y;
     }
     double[] sitePosition = new double[2] { carrier_X, carrier_Y };
     return sitePosition;
 }
示例#17
0
 /// <summary>
 /// 邻小区列表中前3位是最佳服务小区,第一强邻小区,第二强邻小区
 /// </summary>
 /// <param name="user"></param>
 /// <param name="sfSbSecondStroNbr"></param>
 private void UpdateSfSbStroNbrTotalLossIndex(SimulationUser user, ISimulationCarrier sfSbStroNbr)
 {
     for (int i = 0; i < user.CarrierListInComputeArea.Length; i++)
     {
         if (user.CarrierListInComputeArea[i].Carrier.Equals(sfSbStroNbr))
         {
             CarrierTotalLoss loss = user.CarrierListInComputeArea[i];
             CarrierTotalLoss loss2 = user.CarrierListInComputeArea[1];
             user.CarrierListInComputeArea[i] = loss2;
             user.CarrierListInComputeArea[1] = loss;
             user.StroNbrBeforeHandOver = loss;
             break;
         }
     }
 }
示例#18
0
 public static float GetLTECarrierAzimuth(ISimulationCarrier carrier)
 {
     return GetLTECarrierAzimuth(carrier.Carrier);
 }