X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d4b2fe80fbab6343e6dce68a12eb522a2e0559b8..8abcca0c227894fc0d058ea77a1c8cba904cb312:/teshsuite/surf/lmm_usage/lmm_usage.cpp diff --git a/teshsuite/surf/lmm_usage/lmm_usage.cpp b/teshsuite/surf/lmm_usage/lmm_usage.cpp index 47e16abedd..3b57a34308 100644 --- a/teshsuite/surf/lmm_usage/lmm_usage.cpp +++ b/teshsuite/surf/lmm_usage/lmm_usage.cpp @@ -1,7 +1,6 @@ /* A few tests for the maxmin library */ -/* Copyright (c) 2007-2017. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2007-2018. 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. */ @@ -28,6 +27,19 @@ using namespace simgrid::surf; enum method_t { MAXMIN, LAGRANGE_RENO, LAGRANGE_VEGAS }; +static simgrid::kernel::lmm::System* new_system(method_t method, bool update) +{ + switch (method) { + case MAXMIN: + return simgrid::kernel::lmm::make_new_maxmin_system(update); + case LAGRANGE_VEGAS: + case LAGRANGE_RENO: + return simgrid::kernel::lmm::make_new_lagrange_system(update); + default: + xbt_die("Invalid method"); + } +} + static double dichotomy(double func(double), double min, double max, double min_error) { double overall_error = 2 * min_error; @@ -95,18 +107,18 @@ static void test1(method_t method) set_default_protocol_function(simgrid::kernel::lmm::func_vegas_f, simgrid::kernel::lmm::func_vegas_fp, simgrid::kernel::lmm::func_vegas_fpi); else if (method == LAGRANGE_RENO) - set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fpi, + set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fp, simgrid::kernel::lmm::func_reno_fpi); - lmm_system_t Sys = new simgrid::kernel::lmm::System(true); - lmm_constraint_t L1 = Sys->constraint_new(nullptr, a); - lmm_constraint_t L2 = Sys->constraint_new(nullptr, b); - lmm_constraint_t L3 = Sys->constraint_new(nullptr, a); + simgrid::kernel::lmm::System* Sys = new_system(method, true); + simgrid::kernel::lmm::Constraint* L1 = Sys->constraint_new(nullptr, a); + simgrid::kernel::lmm::Constraint* L2 = Sys->constraint_new(nullptr, b); + simgrid::kernel::lmm::Constraint* L3 = Sys->constraint_new(nullptr, a); - lmm_variable_t R_1_2_3 = Sys->variable_new(nullptr, 1.0, -1.0, 3); - lmm_variable_t R_1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); - lmm_variable_t R_2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); - lmm_variable_t R_3 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + simgrid::kernel::lmm::Variable* R_1_2_3 = Sys->variable_new(nullptr, 1.0, -1.0, 3); + simgrid::kernel::lmm::Variable* R_1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + simgrid::kernel::lmm::Variable* R_2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + simgrid::kernel::lmm::Variable* R_3 = Sys->variable_new(nullptr, 1.0, -1.0, 1); Sys->update_variable_weight(R_1_2_3, 1.0); Sys->update_variable_weight(R_1, 1.0); @@ -122,7 +134,7 @@ static void test1(method_t method) Sys->expand(L3, R_3, 1.0); if (method == MAXMIN) { - lmm_solve(Sys); + Sys->solve(); } else { double x; if (method == LAGRANGE_VEGAS) { @@ -147,7 +159,7 @@ static void test1(method_t method) xbt_die( "Invalid method"); } - lagrange_solve(Sys); + Sys->solve(); double max_deviation = 0.0; max_deviation = std::max(max_deviation, fabs(R_1->get_value() - x)); @@ -186,12 +198,13 @@ static void test2(method_t method) set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fp, simgrid::kernel::lmm::func_reno_fpi); - lmm_system_t Sys = new simgrid::kernel::lmm::System(true); - lmm_constraint_t CPU1 = Sys->constraint_new(nullptr, 200.0); - lmm_constraint_t CPU2 = Sys->constraint_new(nullptr, 100.0); + simgrid::kernel::lmm::System* Sys = new_system(method, true); + + simgrid::kernel::lmm::Constraint* CPU1 = Sys->constraint_new(nullptr, 200.0); + simgrid::kernel::lmm::Constraint* CPU2 = Sys->constraint_new(nullptr, 100.0); - lmm_variable_t T1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); - lmm_variable_t T2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + simgrid::kernel::lmm::Variable* T1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + simgrid::kernel::lmm::Variable* T2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); Sys->update_variable_weight(T1, 1.0); Sys->update_variable_weight(T2, 1.0); @@ -199,13 +212,7 @@ static void test2(method_t method) Sys->expand(CPU1, T1, 1.0); Sys->expand(CPU2, T2, 1.0); - if (method == MAXMIN) { - lmm_solve(Sys); - } else if (method == LAGRANGE_VEGAS || method == LAGRANGE_RENO) { - lagrange_solve(Sys); - } else { - xbt_die("Invalid method"); - } + Sys->solve(); PRINT_VAR(T1); PRINT_VAR(T2); @@ -259,15 +266,15 @@ static void test3(method_t method) set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fp, simgrid::kernel::lmm::func_reno_fpi); - lmm_system_t Sys = new simgrid::kernel::lmm::System(true); + simgrid::kernel::lmm::System* Sys = new_system(method, true); /* Creates the constraints */ - lmm_constraint_t* tmp_cnst = new lmm_constraint_t[15]; + simgrid::kernel::lmm::Constraint** tmp_cnst = new simgrid::kernel::lmm::Constraint*[15]; for (int i = 0; i < 15; i++) tmp_cnst[i] = Sys->constraint_new(nullptr, B[i]); /* Creates the variables */ - lmm_variable_t* tmp_var = new lmm_variable_t[16]; + simgrid::kernel::lmm::Variable** tmp_var = new simgrid::kernel::lmm::Variable*[16]; for (int j = 0; j < 16; j++) { tmp_var[j] = Sys->variable_new(nullptr, 1.0, -1.0, 15); Sys->update_variable_weight(tmp_var[j], 1.0); @@ -279,15 +286,7 @@ static void test3(method_t method) if (A[i][j]) Sys->expand(tmp_cnst[i], tmp_var[j], 1.0); - if (method == MAXMIN) { - lmm_solve(Sys); - } else if (method == LAGRANGE_VEGAS) { - lagrange_solve(Sys); - } else if (method == LAGRANGE_RENO) { - lagrange_solve(Sys); - } else { - xbt_die("Invalid method"); - } + Sys->solve(); for (int j = 0; j < 16; j++) PRINT_VAR(tmp_var[j]);