Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Adding tests for sdp.
[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 #ifdef __BORLANDC__
11 #pragma hdrstop
12 #endif
13
14 #include <stdlib.h>
15 #include <stdio.h>
16 #include "surf/maxmin.h"
17
18 #include "xbt/log.h"
19 XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test,"Messages specific for surf example");
20
21 #define PRINT_VAR(var) DEBUG1(#var " = %g\n",lmm_variable_getvalue(var));
22
23 /*                               */
24 /*        ______                 */
25 /*  ==l1==  L2  ==L3==           */
26 /*        ------                 */
27 /*                               */
28
29 void test(void);
30 void test(void)
31 {
32   lmm_system_t Sys = NULL ;
33   lmm_constraint_t L1 = NULL;
34   lmm_constraint_t L2 = NULL;
35   lmm_constraint_t L3 = NULL;
36
37   lmm_variable_t R_1_2_3 = NULL;
38   lmm_variable_t R_1 = NULL;
39   lmm_variable_t R_2 = NULL;
40   lmm_variable_t R_3 = NULL;
41
42   Sys = lmm_system_new();
43   L1 = lmm_constraint_new(Sys, (void *) "L1", 1.0);
44   L2 = lmm_constraint_new(Sys, (void *) "L2", 10.0);
45   L3 = lmm_constraint_new(Sys, (void *) "L3", 1.0);
46
47   R_1_2_3 = lmm_variable_new(Sys, (void *) "R 1->2->3", 1.0 , -1.0 , 3);
48   R_1 = lmm_variable_new(Sys, (void *) "R 1", 1.0 , -1.0 , 1);
49   R_2 = lmm_variable_new(Sys, (void *) "R 2", 1.0 , -1.0 , 1);
50   R_3 = lmm_variable_new(Sys, (void *) "R 3", 1.0 , -1.0 , 1);
51
52   lmm_expand(Sys, L1, R_1_2_3, 1.0);
53   lmm_expand(Sys, L2, R_1_2_3, 1.0);
54   lmm_expand(Sys, L3, R_1_2_3, 1.0);
55
56   lmm_expand(Sys, L1, R_1, 1.0);
57
58   lmm_expand(Sys, L2, R_2, 1.0);
59
60   lmm_expand(Sys, L3, R_3, 1.0);
61
62   PRINT_VAR(R_1_2_3);
63   PRINT_VAR(R_1);
64   PRINT_VAR(R_2);
65   PRINT_VAR(R_3);
66
67   DEBUG0("\n");
68   lmm_solve(Sys);
69
70   PRINT_VAR(R_1_2_3);
71   PRINT_VAR(R_1);
72   PRINT_VAR(R_2);
73   PRINT_VAR(R_3);
74   DEBUG0("\n");
75
76
77   lmm_update_variable_weight(Sys,R_1_2_3,.5);
78   lmm_solve(Sys);
79
80   PRINT_VAR(R_1_2_3);
81   PRINT_VAR(R_1);
82   PRINT_VAR(R_2);
83   PRINT_VAR(R_3);
84
85   lmm_system_free(Sys);
86
87
88 void test2(void);
89 void test2(void)
90 {
91   lmm_system_t Sys = NULL ;
92   lmm_constraint_t CPU1 = NULL;
93   lmm_constraint_t CPU2 = NULL;
94
95   lmm_variable_t T1 = NULL;
96   lmm_variable_t T2 = NULL;
97
98   Sys = lmm_system_new();
99   CPU1 = lmm_constraint_new(Sys, (void *) "CPU1", 200.0);
100   CPU2 = lmm_constraint_new(Sys, (void *) "CPU2", 100.0);
101
102   T1 = lmm_variable_new(Sys, (void *) "T1", 1.0 , -1.0 , 1);
103   T2 = lmm_variable_new(Sys, (void *) "T2", 1.0 , -1.0 , 1);
104
105   lmm_expand(Sys, CPU1, T1, 1.0);
106   lmm_expand(Sys, CPU2, T2, 1.0);
107
108   PRINT_VAR(T1);
109   PRINT_VAR(T2);
110
111   DEBUG0("\n");
112   lmm_solve(Sys);
113
114   PRINT_VAR(T1);
115   PRINT_VAR(T2);
116
117   DEBUG0("\n");
118
119   lmm_system_free(Sys);
120 }
121
122 #ifdef __BORLANDC__
123 #pragma argsused
124 #endif
125
126 int main(int argc, char **argv)
127 {
128   DEBUG0("***** Test 1 ***** \n");
129   test();
130   DEBUG0("***** Test 2 ***** \n");
131   test2();
132
133   return 0;
134 }