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); }
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; }
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; }
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) { } }
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)); }
/// <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; }
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; }
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; }
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]; }
internal void ResetCarrierParameter(ISimulationCarrier relayCell) { throw new NotImplementedException(); }
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); } }
//需要修改 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; }
public abstract int CompareByThroughput(ISimulationCarrier carrierX, ISimulationCarrier carrierY);
private void JustfyFre(ISimulationCarrier targetCarrier, bool isSameFre) { if (isSameFre) { this.m_sameFreNgbList.Add(targetCarrier); } else { this.m_diffFreNgbList.Add(targetCarrier); } }
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); } }
/// <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; }
/// <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; } } }
public static float GetLTECarrierAzimuth(ISimulationCarrier carrier) { return GetLTECarrierAzimuth(carrier.Carrier); }