void RadioBearer::UpdateAverageTransmissionRate () { /* * Update Transmission Data Rate with * a Moving Average * R'(t+1) = (0.8 * R'(t)) + (0.2 * r(t)) */ double rate = (GetTransmittedBytes () * 8)/(Simulator::Init()->Now() - GetLastUpdate()); double beta = 0.2; m_averageTransmissionRate = ((1 - beta) * m_averageTransmissionRate) + (beta * rate); if (m_averageTransmissionRate < 1) { m_averageTransmissionRate = 1; } /* #ifdef SCHEDULER_DEBUG std::cout << "UPDATE AVG RATE, bearer " << GetApplication ()->GetApplicationID () << "\n\t tx byte " << GetTransmittedBytes () << "\n\t interval " << Simulator::Init()->Now() - GetLastUpdate() << "\n\t old rate " << m_averageTransmissionRate << "\n\t new rate " << rate << "\n\t new estimated rate " << m_averageTransmissionRate << std::endl; #endif */ ResetTransmittedBytes(); }
double RadioBearer::GetNowTransmissionRate () //new added~ { double rate = (GetTransmittedBytes () * 8)/(Simulator::Init()->Now() - GetLastUpdate()); return rate; }