X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/64c0f9cb9f413f8ba6590688be594c41ea257b6c..ed1b60f32b208ae07cc1f9d4d1aaa38f78359f53:/loba_2besteffort.cpp?ds=inline diff --git a/loba_2besteffort.cpp b/loba_2besteffort.cpp index 820c7a5..5573714 100644 --- a/loba_2besteffort.cpp +++ b/loba_2besteffort.cpp @@ -1,5 +1,4 @@ #include // std::isfinite -#include #include #include @@ -9,16 +8,14 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); void loba_2besteffort::load_balance() { - using std::placeholders::_1; - using std::placeholders::_2; - pneigh_sort_by_load(std::less()); print_loads_p(false, xbt_log_priority_debug); double sum = get_load() + std::accumulate(pneigh.begin(), pneigh.end(), 0.0, - std::bind(std::plus(), _1, - std::bind(&neighbor::get_load, _2))); + [](double x, const neighbor* n) { + return x + n->get_load(); + }); double mean = sum / (pneigh.size() + 1); XBT_DEBUG("sum = %g ; mean = %g", sum, mean); @@ -31,8 +28,8 @@ void loba_2besteffort::load_balance() // don't continue if get_load() <= mean, or pneigh[i]->get_load >= mean if (transfer <= 0.0) break; - if (opt::option_x) - transfer /= opt::option_x; // HACK!!! + if (opt::loba_best_divisor) + transfer /= opt::loba_best_divisor; send(pneigh[i], transfer); XBT_DEBUG("sent %g to %s", transfer, pneigh[i]->get_name()); }