]> AND Private Git Repository - loba.git/blobdiff - loba_simple.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Merge branch 'master' of ssh://info.iut-bm.univ-fcomte.fr/loba
[loba.git] / loba_simple.cpp
index d44a1de27ad855bf4599de5ec291a1d2fa1e073f..2d4103cb0f5139c0ffc93c220ed563fbe3470a81 100644 (file)
@@ -1,22 +1,22 @@
-#include "loba_simple.h"
-
 #include <xbt/log.h>
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba);
 
 #include <xbt/log.h>
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba);
 
+#include "loba_simple.h"
+
 /* simple version:
  *   load balance with a least-loaded neighbor,
  *   without breaking the ping-pong condition
  */
 /* simple version:
  *   load balance with a least-loaded neighbor,
  *   without breaking the ping-pong condition
  */
-double loba_simple::load_balance(double my_load)
+void loba_simple::load_balance()
 {
     int imin = -1;
     int imax = -1;
 {
     int imin = -1;
     int imax = -1;
-    double min = my_load;
+    double min = get_load();
     double max = -1.0;
     for (unsigned i = 0 ; i < pneigh.size() ; ++i) {
         double l = pneigh[i]->get_load();
     double max = -1.0;
     for (unsigned i = 0 ; i < pneigh.size() ; ++i) {
         double l = pneigh[i]->get_load();
-        if (l >= my_load)
+        if (l >= get_load())
             continue;
         if (l < min) {
             imin = i;
             continue;
         if (l < min) {
             imin = i;
@@ -29,13 +29,9 @@ double loba_simple::load_balance(double my_load)
     }
     if (imin != -1) {
         // found someone
     }
     if (imin != -1) {
         // found someone
-        double balance = (my_load - min) / 2;
-        DEBUG6("%d:%g %d:%g %g %g", imin, min, imax, max, my_load, balance);
-        pneigh[imin]->set_to_send(balance);
-                               pneigh[imin]->set_load(min+balance);
-        return balance;
-    } else {
-        return 0.0;
+        double balance = (get_load() - max) / 2;
+        DEBUG6("%d:%g %d:%g %g %g", imin, min, imax, max, get_load(), balance);
+        send(pneigh[imin], balance);
     }
 }
 
     }
 }