Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add new entry in Release_Notes.
[simgrid.git] / src / kernel / lmm / maxmin_test.cpp
index 828d098..a7d16dc 100644 (file)
@@ -1,18 +1,18 @@
-/* Copyright (c) 2019-2022. The SimGrid Team. All rights reserved.               */
+/* Copyright (c) 2019-2023. The SimGrid Team. All rights reserved.               */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#include "src/include/catch.hpp"
+#include "src/3rd-party/catch.hpp"
 #include "src/kernel/lmm/maxmin.hpp"
-#include "src/surf/surf_interface.hpp"
+#include "src/simgrid/math_utils.h"
 #include "xbt/log.h"
 
 namespace lmm = simgrid::kernel::lmm;
 
 TEST_CASE("kernel::lmm Single constraint shared systems", "[kernel-lmm-shared-single-sys]")
 {
-  lmm::System Sys(false);
+  lmm::MaxMin Sys(false);
 
   SECTION("Variable penalty")
   {
@@ -37,8 +37,8 @@ TEST_CASE("kernel::lmm Single constraint shared systems", "[kernel-lmm-shared-si
     Sys.expand(sys_cnst, rho_2, 1);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 2, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 1, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 2, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 1, sg_precision_workamount));
   }
 
   SECTION("Consumption weight")
@@ -65,8 +65,8 @@ TEST_CASE("kernel::lmm Single constraint shared systems", "[kernel-lmm-shared-si
     Sys.expand(sys_cnst, rho_2, 2);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 1, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 1, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 1, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 1, sg_precision_workamount));
   }
 
   SECTION("Consumption weight + variable penalty")
@@ -94,8 +94,8 @@ TEST_CASE("kernel::lmm Single constraint shared systems", "[kernel-lmm-shared-si
     Sys.solve();
 
     double rho_1_share = 10;
-    REQUIRE(double_equals(rho_1->get_value(), rho_1_share, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), rho_1_share / 2, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), rho_1_share, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), rho_1_share / 2, sg_precision_workamount));
   }
 
   SECTION("Multiple constraints systems")
@@ -134,9 +134,9 @@ TEST_CASE("kernel::lmm Single constraint shared systems", "[kernel-lmm-shared-si
     Sys.solve();
 
     double rho_1_share = 10; // Start by solving the first constraint (results is the same as previous tests)
-    REQUIRE(double_equals(rho_1->get_value(), rho_1_share, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), rho_1_share / 2, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_3->get_value(), 60 - 2 * rho_1_share, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), rho_1_share, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), rho_1_share / 2, sg_precision_workamount));
+    REQUIRE(double_equals(rho_3->get_value(), 60 - 2 * rho_1_share, sg_precision_workamount));
   }
 
   Sys.variable_free_all();
@@ -144,7 +144,7 @@ TEST_CASE("kernel::lmm Single constraint shared systems", "[kernel-lmm-shared-si
 
 TEST_CASE("kernel::lmm Single constraint unshared systems", "[kernel-lmm-unshared-single-sys]")
 {
-  lmm::System Sys(false);
+  lmm::MaxMin Sys(false);
 
   SECTION("Variable penalty")
   {
@@ -171,8 +171,8 @@ TEST_CASE("kernel::lmm Single constraint unshared systems", "[kernel-lmm-unshare
     Sys.expand(sys_cnst, rho_2, 1);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 10, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 10 / 2, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 10, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 10 / 2, sg_precision_workamount));
   }
 
   SECTION("Consumption weight")
@@ -201,8 +201,8 @@ TEST_CASE("kernel::lmm Single constraint unshared systems", "[kernel-lmm-unshare
     Sys.expand(sys_cnst, rho_2, 2);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 5, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 5, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 5, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 5, sg_precision_workamount));
   }
 
   SECTION("Consumption weight + variable penalty")
@@ -231,8 +231,8 @@ TEST_CASE("kernel::lmm Single constraint unshared systems", "[kernel-lmm-unshare
     Sys.expand(sys_cnst, sys_var_2, 2);
     Sys.solve();
 
-    REQUIRE(double_equals(sys_var_1->get_value(), 10, sg_maxmin_precision));
-    REQUIRE(double_equals(sys_var_2->get_value(), 5, sg_maxmin_precision));
+    REQUIRE(double_equals(sys_var_1->get_value(), 10, sg_precision_workamount));
+    REQUIRE(double_equals(sys_var_2->get_value(), 5, sg_precision_workamount));
   }
 
   SECTION("Multiple constraints systems")
@@ -273,9 +273,9 @@ TEST_CASE("kernel::lmm Single constraint unshared systems", "[kernel-lmm-unshare
     Sys.solve();
 
     double rho_1_share = 10; // Start by solving the first constraint (results is the same as previous tests)
-    REQUIRE(double_equals(rho_1->get_value(), rho_1_share, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), rho_1_share / 2, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_3->get_value(), 60, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), rho_1_share, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), rho_1_share / 2, sg_precision_workamount));
+    REQUIRE(double_equals(rho_3->get_value(), 60, sg_precision_workamount));
   }
 
   Sys.variable_free_all();
@@ -287,7 +287,7 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
     // decrease 10 % for each extra flow sharing this resource
     return bound - (flows - 1) * .10 * bound;
   };
-  lmm::System Sys(false);
+  lmm::MaxMin Sys(false);
   lmm::Constraint* sys_cnst = Sys.constraint_new(nullptr, 10);
   sys_cnst->set_sharing_policy(lmm::Constraint::SharingPolicy::NONLINEAR, cb);
 
@@ -310,7 +310,7 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
     Sys.expand(sys_cnst, rho_1, 1);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 10, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 10, sg_precision_workamount));
   }
 
   SECTION("2 activities, but ignore crosstraffic 100% C")
@@ -336,8 +336,8 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
     Sys.expand(sys_cnst, rho_2, 0.05);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 10 / 1.05, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_1->get_value(), rho_2->get_value(), sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 10 / 1.05, sg_precision_workamount));
+    REQUIRE(double_equals(rho_1->get_value(), rho_2->get_value(), sg_precision_workamount));
   }
 
   SECTION("2 activities, 1 inactive 100% C")
@@ -362,8 +362,8 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
     Sys.expand(sys_cnst, rho_2, 1);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 10, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 0, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 10, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 0, sg_precision_workamount));
   }
 
   SECTION("2 activity, 90% C")
@@ -388,8 +388,8 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
     Sys.expand(sys_cnst, rho_2, 1);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 4.5, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_1->get_value(), 4.5, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 4.5, sg_precision_workamount));
+    REQUIRE(double_equals(rho_1->get_value(), 4.5, sg_precision_workamount));
   }
 
   SECTION("3 activity, 80% C")
@@ -417,9 +417,9 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
     Sys.expand(sys_cnst, rho_3, 1);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 4, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 2, sg_maxmin_precision));
-    REQUIRE(double_equals(rho_3->get_value(), 2, sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 4, sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 2, sg_precision_workamount));
+    REQUIRE(double_equals(rho_3->get_value(), 2, sg_precision_workamount));
   }
 
   Sys.variable_free_all();
@@ -427,7 +427,7 @@ TEST_CASE("kernel::lmm dynamic constraint shared systems", "[kernel-lmm-shared-s
 
 TEST_CASE("kernel::lmm shared systems with crosstraffic", "[kernel-lmm-shared-crosstraffic]")
 {
-  lmm::System Sys(false);
+  lmm::MaxMin Sys(false);
 
   SECTION("3 flows, 3 resource: crosstraffic")
   {
@@ -458,9 +458,9 @@ TEST_CASE("kernel::lmm shared systems with crosstraffic", "[kernel-lmm-shared-cr
     Sys.expand(sys_cnst, rho_3, epsilon);
     Sys.solve();
 
-    REQUIRE(double_equals(rho_1->get_value(), 1.0 / (2.0 + epsilon), sg_maxmin_precision));
-    REQUIRE(double_equals(rho_2->get_value(), 1.0 / (2.0 + epsilon), sg_maxmin_precision));
-    REQUIRE(double_equals(rho_3->get_value(), 1.0 / (2.0 + epsilon), sg_maxmin_precision));
+    REQUIRE(double_equals(rho_1->get_value(), 1.0 / (2.0 + epsilon), sg_precision_workamount));
+    REQUIRE(double_equals(rho_2->get_value(), 1.0 / (2.0 + epsilon), sg_precision_workamount));
+    REQUIRE(double_equals(rho_3->get_value(), 1.0 / (2.0 + epsilon), sg_precision_workamount));
   }
 
   Sys.variable_free_all();