# HG changeset patch # User Dizhi Zhou # Date 1354406932 18000 # Node ID e4545deccc3171e4bbb59ef069fd39cbccc24113 # Parent d493cb1bc11a47770cb482eb0f105c83f4133a2c Initialize some metric parameters in GSoC 2012 LTE NS-3 MAC schedulers diff -r d493cb1bc11a -r e4545deccc31 src/lte/model/fdtbfq-ff-mac-scheduler.cc --- a/src/lte/model/fdtbfq-ff-mac-scheduler.cc Sun Dec 02 18:08:59 2012 -0800 +++ b/src/lte/model/fdtbfq-ff-mac-scheduler.cc Sat Dec 01 19:08:52 2012 -0500 @@ -502,7 +502,7 @@ // select UE with largest metric std::map ::iterator it; std::map ::iterator itMax = m_flowStatsDl.end (); - double metricMax; + double metricMax = 0.0; bool firstRnti = true; for (it = m_flowStatsDl.begin (); it != m_flowStatsDl.end (); it++) { @@ -729,7 +729,7 @@ } } - bytesTxedTmp = bytesTxed; + bytesTxedTmp = bytesTxed; bytesTxed = 0; for (uint8_t j = 0; j < nLayer; j++) { diff -r d493cb1bc11a -r e4545deccc31 src/lte/model/pss-ff-mac-scheduler.cc --- a/src/lte/model/pss-ff-mac-scheduler.cc Sun Dec 02 18:08:59 2012 -0800 +++ b/src/lte/model/pss-ff-mac-scheduler.cc Sat Dec 01 19:08:52 2012 -0500 @@ -485,7 +485,7 @@ std::vector > ueSet2; for (it = ueSet.begin (); it != ueSet.end (); it++) { - double metric; + double metric = 0.0; if ((*it).second.lastAveragedThroughput < (*it).second.targetThroughput ) { // calculate TD BET metric @@ -700,7 +700,7 @@ } } // end if cqi - double metric; + double metric = 0.0; if (colMetric != 0) metric= weight * colMetric; else @@ -796,7 +796,7 @@ schMetric = achievableRate / (*it).second.secondLastAveragedThroughput; } // end if cqi - double metric; + double metric = 0.0; metric= weight * schMetric; if (metric > metricMax ) @@ -971,9 +971,9 @@ std::map ::iterator itUeScheduleted = tdUeSet.end(); itUeScheduleted = tdUeSet.find((*itStats).first); if (itUeScheduleted != tdUeSet.end()) - { - (*itStats).second.secondLastAveragedThroughput = ((1.0 - (1 / m_timeWindow)) * (*itStats).second.secondLastAveragedThroughput) + ((1 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTransmitted / 0.001)); - } + { + (*itStats).second.secondLastAveragedThroughput = ((1.0 - (1 / m_timeWindow)) * (*itStats).second.secondLastAveragedThroughput) + ((1 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTransmitted / 0.001)); + } (*itStats).second.totalBytesTransmitted += (*itStats).second.lastTtiBytesTransmitted; // update average throughput (see eq. 12.3 of Sec 12.3.1.2 of LTE – The UMTS Long Term Evolution, Ed Wiley) diff -r d493cb1bc11a -r e4545deccc31 src/lte/model/tdmt-ff-mac-scheduler.cc --- a/src/lte/model/tdmt-ff-mac-scheduler.cc Sun Dec 02 18:08:59 2012 -0800 +++ b/src/lte/model/tdmt-ff-mac-scheduler.cc Sat Dec 01 19:08:52 2012 -0500 @@ -454,18 +454,18 @@ NS_FATAL_ERROR ("No Transmission Mode info on user " << (*it)); } int nLayer = TransmissionModesLayers::TxMode2LayerNum ((*itTxMode).second); - uint8_t wbCqi = 0; - if (itCqi == m_p10CqiRxed.end()) - { - wbCqi = 1; // start with lowest value - } + uint8_t wbCqi = 0; + if (itCqi == m_p10CqiRxed.end()) + { + wbCqi = 1; // start with lowest value + } else { - wbCqi = (*itCqi).second; + wbCqi = (*itCqi).second; } - if (wbCqi > 0) - { + if (wbCqi > 0) + { if (LcActivePerFlow (*it) > 0) { // this UE has data to transmit @@ -477,13 +477,13 @@ achievableRate += ((m_amc->GetTbSizeFromMcs (mcs, rbgSize) / 8) / 0.001); // = TB size / TTI } - double metric = achievableRate; + double metric = achievableRate; - if (metric > metricMax) - { - metricMax = metric; - itMax = it; - } + if (metric > metricMax) + { + metricMax = metric; + itMax = it; + } } } // end of wbCqi } // end for m_flowStatsDl @@ -491,16 +491,16 @@ if (itMax == m_flowStatsDl.end ()) { // no UE available for downlink - return; + return; } else { // assign all RBGs to this UE std::vector tempMap; - for (int i = 0; i < rbgNum; i++) - { + for (int i = 0; i < rbgNum; i++) + { tempMap.push_back (i); - } + } allocationMap.insert (std::pair > ((*itMax), tempMap)); } @@ -520,7 +520,7 @@ uint16_t lcActives = LcActivePerFlow ((*itMap).first); std::map ::iterator itCqi; - itCqi = m_p10CqiRxed.find((*itMap).first); + itCqi = m_p10CqiRxed.find((*itMap).first); std::map ::iterator itTxMode; itTxMode = m_uesTxMode.find ((*itMap).first); if (itTxMode == m_uesTxMode.end ()) @@ -538,7 +538,7 @@ { newDci.m_mcs.push_back ( m_amc->GetMcsFromCqi ((*itCqi).second) ); } - // allocate all RBGs to this UE + // allocate all RBGs to this UE int tbSize = (m_amc->GetTbSizeFromMcs (newDci.m_mcs.at (j), rbgNum * rbgSize) / 8); // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213) newDci.m_tbsSize.push_back (tbSize); } diff -r d493cb1bc11a -r e4545deccc31 src/lte/model/tdtbfq-ff-mac-scheduler.cc --- a/src/lte/model/tdtbfq-ff-mac-scheduler.cc Sun Dec 02 18:08:59 2012 -0800 +++ b/src/lte/model/tdtbfq-ff-mac-scheduler.cc Sat Dec 01 19:08:52 2012 -0500 @@ -495,7 +495,7 @@ // select UE with largest metric std::map ::iterator it; std::map ::iterator itMax = m_flowStatsDl.end (); - double metricMax; + double metricMax = 0.0; bool firstRnti = true; for (it = m_flowStatsDl.begin (); it != m_flowStatsDl.end (); it++) {