]> AND Public Git Repository - simgrid.git/blobdiff - src/surf/network_cm02.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
System: fix modified_set_ when selective_update is active
[simgrid.git] / src / surf / network_cm02.cpp
index 29604a599f9f14ec5fa9677dd4bbcc7b62728c82..fef1236760e6b033f74b52a99f53f3cb4bdc065e 100644 (file)
@@ -88,7 +88,8 @@ NetworkCm02Model::NetworkCm02Model(const std::string& name) : NetworkModel(name)
     select = true;
   }
 
-  set_maxmin_system(new lmm::System(select));
+  set_maxmin_system(lmm::System::build("maxmin", select));
+
   loopback_ = create_link("__loopback__", {config::get_value<double>("network/loopback-bw")});
   loopback_->set_sharing_policy(s4u::Link::SharingPolicy::FATPIPE, {});
   loopback_->set_latency(config::get_value<double>("network/loopback-lat"));
@@ -223,19 +224,18 @@ void NetworkCm02Model::comm_action_expand_constraints(const s4u::Host* src, cons
   /* WI-FI links needs special treatment, do it here */
   if (src_wifi_link != nullptr) {
     /* In case of 0Mbps data rate, don't consider it in the LMM */
-    if (src_wifi_link->get_host_rate(src) != 0)
+    if (src_wifi_link->get_host_rate(src) > 0)
       get_maxmin_system()->expand(src_wifi_link->get_constraint(), action->get_variable(),
                                   1.0 / src_wifi_link->get_host_rate(src));
     else
       get_maxmin_system()->update_variable_penalty(action->get_variable(), 0);
   }
   if (dst_wifi_link != nullptr) {
-    if (dst_wifi_link->get_host_rate(dst) != 0)
+    if (dst_wifi_link->get_host_rate(dst) > 0)
       get_maxmin_system()->expand(dst_wifi_link->get_constraint(), action->get_variable(),
                                   1.0 / dst_wifi_link->get_host_rate(dst));
-    else {
+    else
       get_maxmin_system()->update_variable_penalty(action->get_variable(), 0);
-    }
   }
 
   for (auto const* link : route) {