Beispiel #1
0
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;
}