X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0a765af45e3af8e4aeb5ac528b9f4e7ac6ce777f..a42375c122cde29e0da1b28730b11624a5a38da7:/testsuite/surf/maxmin_usage.c diff --git a/testsuite/surf/maxmin_usage.c b/testsuite/surf/maxmin_usage.c index 7fd7b48792..2910cc27d8 100644 --- a/testsuite/surf/maxmin_usage.c +++ b/testsuite/surf/maxmin_usage.c @@ -1,61 +1,123 @@ +/* $Id$ */ + /* A few tests for the maxmin library */ -/* Authors: Arnaud Legrand */ +/* Copyright (c) 2004 Arnaud Legrand. 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. */ + * under the terms of the license (GNU LGPL) which comes with this package. */ #include #include #include "surf/maxmin.h" +#define PRINT_VAR(var) printf(#var " = %Lg\n",lmm_variable_getvalue(var)); + /* */ /* ______ */ -/* ==l1== l2 ==l3== */ +/* ==l1== L2 ==L3== */ /* ------ */ /* */ void test(void); void test(void) { - lmm_system_t sys = NULL ; - lmm_constraint_t l1 = NULL; - lmm_constraint_t l2 = NULL; - lmm_constraint_t l3 = NULL; + lmm_system_t Sys = NULL ; + lmm_constraint_t L1 = NULL; + lmm_constraint_t L2 = NULL; + lmm_constraint_t L3 = NULL; + + lmm_variable_t R_1_2_3 = NULL; + lmm_variable_t R_1 = NULL; + lmm_variable_t R_2 = NULL; + lmm_variable_t R_3 = NULL; + + Sys = lmm_system_new(); + L1 = lmm_constraint_new(Sys, (void *) "L1", 1.0); + L2 = lmm_constraint_new(Sys, (void *) "L2", 10.0); + L3 = lmm_constraint_new(Sys, (void *) "L3", 1.0); + + R_1_2_3 = lmm_variable_new(Sys, (void *) "R 1->2->3", 1.0 , -1.0 , 3); + R_1 = lmm_variable_new(Sys, (void *) "R 1", 1.0 , -1.0 , 1); + R_2 = lmm_variable_new(Sys, (void *) "R 2", 1.0 , -1.0 , 1); + R_3 = lmm_variable_new(Sys, (void *) "R 3", 1.0 , -1.0 , 1); - lmm_variable_t r_1_2_3 = NULL; - lmm_variable_t r_1 = NULL; - lmm_variable_t r_2 = NULL; - lmm_variable_t r_3 = NULL; + lmm_expand(Sys, L1, R_1_2_3, 1.0); + lmm_expand(Sys, L2, R_1_2_3, 1.0); + lmm_expand(Sys, L3, R_1_2_3, 1.0); + lmm_expand(Sys, L1, R_1, 1.0); + lmm_expand(Sys, L2, R_2, 1.0); - sys = lmm_system_new(); - l1 = lmm_constraint_new(sys, /* (void *) "L1", */ 1.0); - l2 = lmm_constraint_new(sys, /* (void *) "L2", */ 10.0); - l3 = lmm_constraint_new(sys, /* (void *) "L3", */ 1.0); + lmm_expand(Sys, L3, R_3, 1.0); - r_1_2_3 = lmm_variable_new(sys, /* (void *) "R 1->2->3", */ 1.0 , 1.0 , 3); - r_1 = lmm_variable_new(sys, /* (void *) "R 1", */ 1.0 , 1.0 , 1); - r_2 = lmm_variable_new(sys, /* (void *) "R 2", */ 1.0 , 1.0 , 1); - r_3 = lmm_variable_new(sys, /* (void *) "R 3", */ 1.0 , 1.0 , 1); + PRINT_VAR(R_1_2_3); + PRINT_VAR(R_1); + PRINT_VAR(R_2); + PRINT_VAR(R_3); - lmm_add_constraint(sys, l1, r_1_2_3, 1.0); - lmm_add_constraint(sys, l2, r_1_2_3, 1.0); - lmm_add_constraint(sys, l3, r_1_2_3, 1.0); + printf("\n"); + lmm_solve(Sys); - lmm_add_constraint(sys, l1, r_1, 1.0); + PRINT_VAR(R_1_2_3); + PRINT_VAR(R_1); + PRINT_VAR(R_2); + PRINT_VAR(R_3); + printf("\n"); - lmm_add_constraint(sys, l2, r_2, 1.0); - lmm_add_constraint(sys, l3, r_3, 1.0); + lmm_update_variable_weight(Sys,R_1_2_3,.5); + lmm_solve(Sys); - lmm_system_free(sys); + PRINT_VAR(R_1_2_3); + PRINT_VAR(R_1); + PRINT_VAR(R_2); + PRINT_VAR(R_3); + + lmm_system_free(Sys); } +void test2(void); +void test2(void) +{ + lmm_system_t Sys = NULL ; + lmm_constraint_t CPU1 = NULL; + lmm_constraint_t CPU2 = NULL; + + lmm_variable_t T1 = NULL; + lmm_variable_t T2 = NULL; + + Sys = lmm_system_new(); + CPU1 = lmm_constraint_new(Sys, (void *) "CPU1", 200.0); + CPU2 = lmm_constraint_new(Sys, (void *) "CPU2", 100.0); + + T1 = lmm_variable_new(Sys, (void *) "T1", 1.0 , -1.0 , 1); + T2 = lmm_variable_new(Sys, (void *) "T2", 1.0 , -1.0 , 1); + + lmm_expand(Sys, CPU1, T1, 1.0); + lmm_expand(Sys, CPU2, T2, 1.0); + + PRINT_VAR(T1); + PRINT_VAR(T2); + + printf("\n"); + lmm_solve(Sys); + + PRINT_VAR(T1); + PRINT_VAR(T2); + + printf("\n"); + + lmm_system_free(Sys); +} int main(int argc, char **argv) { + printf("***** Test 1 ***** \n"); test(); + printf("***** Test 2 ***** \n"); + test2(); + return 0; }