@@ -38,32 +38,40 @@ C.FX(node_macro, macro_base_period) = c0(node_macro) ;
38
38
I.FX(node_macro, macro_base_period) = i0(node_macro) ;
39
39
EC.FX(node_macro, macro_base_period) = y0(node_macro) - i0(node_macro) - c0(node_macro) ;
40
40
41
- * Conditional execution based on solve_param
42
- if (solve_param = 1,
43
- * solving the model region by region
44
- node_active(node) = no ;
45
- LOOP(node $ node_macro(node),
46
- node_active(node_macro) = no ;
47
- node_active(node) = YES;
48
- * DISPLAY node_active ;
49
- * solve statement
50
- SOLVE MESSAGE_MACRO MAXIMIZING UTILITY USING NLP ;
51
- * write model status summary (by node)
52
- * status(node,'modelstat') = MESSAGE_MACRO.modelstat ;
53
- * status(node,'solvestat') = MESSAGE_MACRO.solvestat ;
54
- * status(node,'resUsd') = MESSAGE_MACRO.resUsd ;
55
- * status(node,'objEst') = MESSAGE_MACRO.objEst ;
56
- * status(node,'objVal') = MESSAGE_MACRO.objVal ;
57
- )
58
- elseif (solve_param = 2),
59
- *Solving model with all regions concurrently
60
- node_active(node_macro) = YES;
61
- * solve statement
62
- SOLVE MESSAGE_MACRO MAXIMIZING UTILITY USING NLP;
63
- * write model status summary
41
+ $IFTHEN %MACRO_CONCURRENT% == "0"
42
+
43
+ DISPLAY "Solve MACRO for each node in sequence";
44
+
45
+ node_active(node) = NO ;
46
+
47
+ LOOP(node$node_macro(node),
48
+ node_active(node_macro) = NO ;
49
+ node_active(node) = YES ;
50
+ * DISPLAY node_active ;
51
+
52
+ SOLVE MESSAGE_MACRO MAXIMIZING UTILITY USING NLP ;
53
+
54
+ * Write model status summary for the current node
55
+ * status(node,'modelstat') = MESSAGE_MACRO.modelstat ;
56
+ * status(node,'solvestat') = MESSAGE_MACRO.solvestat ;
57
+ * status(node,'resUsd') = MESSAGE_MACRO.resUsd ;
58
+ * status(node,'objEst') = MESSAGE_MACRO.objEst ;
59
+ * status(node,'objVal') = MESSAGE_MACRO.objVal ;
60
+ );
61
+
62
+ $ELSE
63
+
64
+ DISPLAY "Solve MACRO for all nodes concurrently";
65
+
66
+ node_active(node_macro) = YES;
67
+
68
+ SOLVE MESSAGE_MACRO MAXIMIZING UTILITY USING NLP;
69
+
70
+ * Write model status summary for all nodes
64
71
* status('all','modelstat') = MESSAGE_MACRO.modelstat;
65
72
* status('all','solvestat') = MESSAGE_MACRO.solvestat;
66
73
* status('all','resUsd') = MESSAGE_MACRO.resUsd;
67
74
* status('all','objEst') = MESSAGE_MACRO.objEst;
68
75
* status('all','objVal') = MESSAGE_MACRO.objVal;
69
- ) ;
76
+
77
+ $ENDIF
0 commit comments