Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Compile pas avec les warnings, sinon
[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 #define PRINT_VAR(var) printf(#var " = %g\n",lmm_variable_getvalue(var));
15
16 /*                               */
17 /*        ______                 */
18 /*  ==l1==  L2  ==L3==           */
19 /*        ------                 */
20 /*                               */
21
22 void test(void);
23 void test(void)
24 {
25   lmm_system_t Sys = NULL ;
26   lmm_constraint_t L1 = NULL;
27   lmm_constraint_t L2 = NULL;
28   lmm_constraint_t L3 = NULL;
29
30   lmm_variable_t R_1_2_3 = NULL;
31   lmm_variable_t R_1 = NULL;
32   lmm_variable_t R_2 = NULL;
33   lmm_variable_t R_3 = NULL;
34
35   Sys = lmm_system_new();
36   L1 = lmm_constraint_new(Sys, (void *) "L1", 1.0);
37   L2 = lmm_constraint_new(Sys, (void *) "L2", 10.0);
38   L3 = lmm_constraint_new(Sys, (void *) "L3", 1.0);
39
40   R_1_2_3 = lmm_variable_new(Sys, (void *) "R 1->2->3", 1.0 , -1.0 , 3);
41   R_1 = lmm_variable_new(Sys, (void *) "R 1", 1.0 , -1.0 , 1);
42   R_2 = lmm_variable_new(Sys, (void *) "R 2", 1.0 , -1.0 , 1);
43   R_3 = lmm_variable_new(Sys, (void *) "R 3", 1.0 , -1.0 , 1);
44
45   lmm_expand(Sys, L1, R_1_2_3, 1.0);
46   lmm_expand(Sys, L2, R_1_2_3, 1.0);
47   lmm_expand(Sys, L3, R_1_2_3, 1.0);
48
49   lmm_expand(Sys, L1, R_1, 1.0);
50
51   lmm_expand(Sys, L2, R_2, 1.0);
52
53   lmm_expand(Sys, L3, R_3, 1.0);
54
55   PRINT_VAR(R_1_2_3);
56   PRINT_VAR(R_1);
57   PRINT_VAR(R_2);
58   PRINT_VAR(R_3);
59
60   printf("\n");
61   lmm_solve(Sys);
62
63   PRINT_VAR(R_1_2_3);
64   PRINT_VAR(R_1);
65   PRINT_VAR(R_2);
66   PRINT_VAR(R_3);
67   printf("\n");
68
69
70   lmm_update_variable_weight(Sys,R_1_2_3,.5);
71   lmm_solve(Sys);
72
73   PRINT_VAR(R_1_2_3);
74   PRINT_VAR(R_1);
75   PRINT_VAR(R_2);
76   PRINT_VAR(R_3);
77
78   lmm_system_free(Sys);
79
80
81 void test2(void);
82 void test2(void)
83 {
84   lmm_system_t Sys = NULL ;
85   lmm_constraint_t CPU1 = NULL;
86   lmm_constraint_t CPU2 = NULL;
87
88   lmm_variable_t T1 = NULL;
89   lmm_variable_t T2 = NULL;
90
91   Sys = lmm_system_new();
92   CPU1 = lmm_constraint_new(Sys, (void *) "CPU1", 200.0);
93   CPU2 = lmm_constraint_new(Sys, (void *) "CPU2", 100.0);
94
95   T1 = lmm_variable_new(Sys, (void *) "T1", 1.0 , -1.0 , 1);
96   T2 = lmm_variable_new(Sys, (void *) "T2", 1.0 , -1.0 , 1);
97
98   lmm_expand(Sys, CPU1, T1, 1.0);
99   lmm_expand(Sys, CPU2, T2, 1.0);
100
101   PRINT_VAR(T1);
102   PRINT_VAR(T2);
103
104   printf("\n");
105   lmm_solve(Sys);
106
107   PRINT_VAR(T1);
108   PRINT_VAR(T2);
109
110   printf("\n");
111
112   lmm_system_free(Sys);
113
114
115 int main(int argc, char **argv)
116 {
117   printf("***** Test 1 ***** \n");
118   test();
119   printf("***** Test 2 ***** \n");
120   test2();
121
122   return 0;
123 }