public void CopyFrom(UMTSHSDPABearer copyObj) { base.Technology = copyObj.Technology; this.CQI = copyObj.CQI; this.m_TransportBlSize = copyObj.TransportBlSize; this.m_HspdschNum = copyObj.HspdschNum; this.m_RlcPeakthroughput = copyObj.RlcPeakthroughput; this.m_Modulation = copyObj.Modulation; }
private void OperateAfterSuccessedSchedule(UMTSSimCell cell, UMTSSimUser user, UMTSHSDPABearer bear) { m_SCCHNum--; user.AssignedPower = (float)UnitTrans.dBto(bear.Eb_No) * user.Io; user.AssignedCode = bear.HspdschNum; user.BearerIndex = (int)(bear.BLER); user.IsScheduledInTTI = true; user.IsScheduled = true; cell.HSDPA_UsedPower += user.AssignedPower; cell.HSDPA_UsedCode += user.AssignedCode; cell.HSDPA_UsedHsscchPower += (float)UnitTrans.dBto(cell.NECell.HSSCCHPower); //Debug.WriteLine(m_CommonParams.CurrentTTINum.ToString()); if (user.ServiceType == CommonServiceType.CSService) { int delay = m_CommonParams.CurrentTTINum - user.LastServerdTTI; user.CSUserWaitDelay.Add(delay); } if (m_CommonParams.CurrentTTINum > 90) { } user.LastServerdTTI = m_CommonParams.CurrentTTINum; user.ServedTimeSlotNum++; if (bear.RlcPeakthroughput < user.RequestRate) { user.SchedulingRate = bear.RlcPeakthroughput; } else { user.SchedulingRate = user.RequestRate; } }
/// <summary> /// 按照小区所用码资源和功率资源最均衡的方式,给承载排序 /// </summary> /// <param name="hsdpaBearList"></param> private void SortBear(List<UMTSHSDPABearer> hsdpaBearList, UMTSSimUser user, UMTSSimCell cell) { List<float> RatioList = new List<float>(); //TODO:这里可以考察一下是用小区总的码资源除以功率资源,还是仅用HSDPA可用的码资源除以功率资源 float k = cell.HSDPA_MaxAvailCode / (float)UnitTrans.dBto(cell.NECell.AvailableHSDPAPower); //计算每一个承载的比值 foreach (UMTSHSDPABearer bear in hsdpaBearList) { float power = HSDPA_CommonCalc.CalculatePower(bear.Eb_No, user.Io, user.DLLoss); float r = (bear.HspdschNum + cell.HSDPA_UsedCode) / (power + cell.HSDPA_UsedPower); RatioList.Add(Math.Abs(r - k)); } float[] ratioArray = new float[hsdpaBearList.Count]; UMTSHSDPABearer[] bearArray = new UMTSHSDPABearer[hsdpaBearList.Count]; for (int i = 0; i < hsdpaBearList.Count; i++) { ratioArray[i] = RatioList[i]; bearArray[i] = hsdpaBearList[i]; } Array.Sort(ratioArray, bearArray); for (int i = 0; i < hsdpaBearList.Count; i++) { hsdpaBearList[i] = bearArray[i]; } }