X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/4e922bca67d7cf4bc30a878cd7cd46d39fbe1573..205d7a7a1b84d22f885579108d6e0f015c1454a6:/loba_fairstrategy.cpp diff --git a/loba_fairstrategy.cpp b/loba_fairstrategy.cpp index 7e02a21..a9f8e60 100644 --- a/loba_fairstrategy.cpp +++ b/loba_fairstrategy.cpp @@ -5,11 +5,6 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); #include "loba_fairstrategy.h" -/* simple version: - * load balance with a least-loaded neighbor, - * without breaking the ping-pong condition - */ - class compare { public: bool operator()(const neighbor*a, const neighbor*b) { @@ -19,19 +14,20 @@ public: void loba_fairstrategy::load_balance() { + const double delta = 0.001; + std::sort(pneigh.begin(), pneigh.end(), compare()); - // print_loads_p(); - //print_loads_p(false, xbt_log_priority_debug); + print_loads_p(false, xbt_log_priority_debug); bool found = true; while (found) { found = false; for (unsigned i = 0 ; i < pneigh.size() ; ++i) { - if (pneigh[i]->get_load() <= get_load() - 2) { + if (pneigh[i]->get_load() <= get_load() - 2 * delta) { found = true; - send(pneigh[i], 1); + send(pneigh[i], delta); DEBUG1("sent to %s", pneigh[i]->get_name()); } }