Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
96f2703f5ff6da67f6c0cf64e0c40009c3b62a5f
[simgrid.git] / testsuite / surf / maxmin_usage.c
1 /*      $Id$     */
2
3 /* A few tests for the maxmin library                                       */
4
5 /* Copyright (c) 2004 Arnaud Legrand. All rights reserved.                  */
6
7 /* This program is free software; you can redistribute it and/or modify it
8  * under the terms of the license (GNU LGPL) which comes with this package. */
9
10 #include <stdlib.h>
11 #include <stdio.h>
12 #include "surf/maxmin.h"
13
14 #include "xbt/log.h"
15 XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test,"Messages specific for surf example");
16
17 #define PRINT_VAR(var) DEBUG1(#var " = %g\n",lmm_variable_getvalue(var));
18
19 /*                               */
20 /*        ______                 */
21 /*  ==l1==  L2  ==L3==           */
22 /*        ------                 */
23 /*                               */
24
25 void test(void);
26 void test(void)
27 {
28   lmm_system_t Sys = NULL ;
29   lmm_constraint_t L1 = NULL;
30   lmm_constraint_t L2 = NULL;
31   lmm_constraint_t L3 = NULL;
32
33   lmm_variable_t R_1_2_3 = NULL;
34   lmm_variable_t R_1 = NULL;
35   lmm_variable_t R_2 = NULL;
36   lmm_variable_t R_3 = NULL;
37
38   Sys = lmm_system_new();
39   L1 = lmm_constraint_new(Sys, (void *) "L1", 1.0);
40   L2 = lmm_constraint_new(Sys, (void *) "L2", 10.0);
41   L3 = lmm_constraint_new(Sys, (void *) "L3", 1.0);
42
43   R_1_2_3 = lmm_variable_new(Sys, (void *) "R 1->2->3", 1.0 , -1.0 , 3);
44   R_1 = lmm_variable_new(Sys, (void *) "R 1", 1.0 , -1.0 , 1);
45   R_2 = lmm_variable_new(Sys, (void *) "R 2", 1.0 , -1.0 , 1);
46   R_3 = lmm_variable_new(Sys, (void *) "R 3", 1.0 , -1.0 , 1);
47
48   lmm_expand(Sys, L1, R_1_2_3, 1.0);
49   lmm_expand(Sys, L2, R_1_2_3, 1.0);
50   lmm_expand(Sys, L3, R_1_2_3, 1.0);
51
52   lmm_expand(Sys, L1, R_1, 1.0);
53
54   lmm_expand(Sys, L2, R_2, 1.0);
55
56   lmm_expand(Sys, L3, R_3, 1.0);
57
58   PRINT_VAR(R_1_2_3);
59   PRINT_VAR(R_1);
60   PRINT_VAR(R_2);
61   PRINT_VAR(R_3);
62
63   DEBUG0("\n");
64   lmm_solve(Sys);
65
66   PRINT_VAR(R_1_2_3);
67   PRINT_VAR(R_1);
68   PRINT_VAR(R_2);
69   PRINT_VAR(R_3);
70   DEBUG0("\n");
71
72
73   lmm_update_variable_weight(Sys,R_1_2_3,.5);
74   lmm_solve(Sys);
75
76   PRINT_VAR(R_1_2_3);
77   PRINT_VAR(R_1);
78   PRINT_VAR(R_2);
79   PRINT_VAR(R_3);
80
81   lmm_system_free(Sys);
82
83
84 void test2(void);
85 void test2(void)
86 {
87   lmm_system_t Sys = NULL ;
88   lmm_constraint_t CPU1 = NULL;
89   lmm_constraint_t CPU2 = NULL;
90
91   lmm_variable_t T1 = NULL;
92   lmm_variable_t T2 = NULL;
93
94   Sys = lmm_system_new();
95   CPU1 = lmm_constraint_new(Sys, (void *) "CPU1", 200.0);
96   CPU2 = lmm_constraint_new(Sys, (void *) "CPU2", 100.0);
97
98   T1 = lmm_variable_new(Sys, (void *) "T1", 1.0 , -1.0 , 1);
99   T2 = lmm_variable_new(Sys, (void *) "T2", 1.0 , -1.0 , 1);
100
101   lmm_expand(Sys, CPU1, T1, 1.0);
102   lmm_expand(Sys, CPU2, T2, 1.0);
103
104   PRINT_VAR(T1);
105   PRINT_VAR(T2);
106
107   DEBUG0("\n");
108   lmm_solve(Sys);
109
110   PRINT_VAR(T1);
111   PRINT_VAR(T2);
112
113   DEBUG0("\n");
114
115   lmm_system_free(Sys);
116
117
118 int main(int argc, char **argv)
119 {
120   DEBUG0("***** Test 1 ***** \n");
121   test();
122   DEBUG0("***** Test 2 ***** \n");
123   test2();
124
125   return 0;
126 }