+void NetworkWifiLink::refresh_decay_bandwidths(){
+ // Compute number of STAtion on the Access Point
+ size_t nSTA = host_rates_.size();
+
+ std::vector<Metric> new_bandwidths;
+ for (auto bandwidth : bandwidths_){
+ // Instantiate decay model relatively to the actual bandwidth
+ double max_bw=bandwidth.peak;
+ double min_bw=bandwidth.peak-(wifi_max_rate_-wifi_min_rate_);
+ double model_rate=bandwidth.peak-(wifi_max_rate_-model_rate_);
+
+ xbt_assert(min_bw > 0, "Your WIFI link is using bandwidth(s) which is too low for the decay model.");
+
+ double N0=max_bw-min_bw;
+ double lambda=(-log(model_rate-min_bw)+log(N0))/model_n_;
+ // Since decay model start at 0 we should use (nSTA-1)
+ double new_peak=N0*exp(-lambda*(nSTA-1))+min_bw;
+ new_bandwidths.push_back({new_peak, 1.0, nullptr});
+ }
+ decay_bandwidths_=new_bandwidths;
+}
+
+bool NetworkWifiLink::toggle_decay_model(){
+ use_decay_model_=!use_decay_model_;
+ return(use_decay_model_);
+}
+
+