Skip to content

Commit b4a65de

Browse files
authored
Merge pull request #6 from AymericPCLegros/agnostic_gams
Agnostic gams
2 parents d3151ba + d33f1f1 commit b4a65de

17 files changed

+1183
-360
lines changed

Diff for: doc/src/images/agnostic_architecture.png

-49.5 KB
Binary file not shown.

Diff for: examples/farmer/GAMS/farmer_augmented.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,20 @@
22
import sys
33
import gams
44
import gamspy_base
5+
import examples.farmer.farmer_gams_gen_agnostic as farmer_gams_gen_agnostic
56

67
this_dir = os.path.dirname(os.path.abspath(__file__))
78

89
gamspy_base_dir = gamspy_base.__path__[0]
910

1011
ws = gams.GamsWorkspace(working_directory=this_dir, system_directory=gamspy_base_dir)
1112

12-
model = ws.add_job_from_file("farmer_augmented.gms")
13+
original_file = "farmer_average.gms"
14+
nonants = "crop"
15+
farmer_gams_gen_agnostic.create_ph_model(original_file, nonants)
16+
17+
model = ws.add_job_from_file("farmer_average_ph")
18+
#model = ws.add_job_from_file("farmer_average_completed")
19+
#model = ws.add_job_from_file("farmer_linear_augmented")
1320

1421
model.run(output=sys.stdout)

Diff for: examples/farmer/GAMS/farmer_average.gms

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
$title The Farmer's Problem formulated for GAMS/DECIS (FARM,SEQ=199)
1+
$title The Farmer s Problem formulated for GAMS/DECIS (FARM,SEQ=199)
22

33
$onText
44
This model helps a farmer to decide how to allocate
@@ -80,8 +80,12 @@ req(cropr).. yld(cropr) + y(cropr) - sum(sameas(cropx,cropr),w(cropx)) =g= min
8080

8181
beets.. w('beets1') + w('beets2') =l= yld('sugarbeets');
8282

83+
x.up(crop) = land;
8384
w.up('beets1') = maxbeets1;
85+
$onText
86+
__InsertPH__here_Model_defined_three_lines_later
87+
$offText
8488

8589
Model simple / profitdef, landuse, req, beets, ylddef /;
8690

87-
solve simple using lp maximizing profit;
91+
solve simple using lp maximizing profit;

Diff for: examples/farmer/GAMS/farmer_average.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99

1010
w = gams.GamsWorkspace(working_directory=this_dir, system_directory=gamspy_base_dir)
1111

12-
model = w.add_job_from_file("farmer_average.gms")
12+
#model = w.add_job_from_file("farmer_average_ph.gms")
13+
#model = w.add_job_from_file("farmer_augmented.gms")
14+
#model = w.add_job_from_file("farmer_linear_augmented.gms")
15+
#model = w.add_job_from_file("farmer_average_ph_quadratic")
16+
model = w.add_job_from_file("farmer_average_ph_linearized")
17+
1318

1419
model.run(output=sys.stdout)

Diff for: examples/farmer/ag_gams.bash

-13
This file was deleted.

Diff for: examples/farmer/agnostic_gams_cylinders.py

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
# This software is distributed under the 3-clause BSD License.
22
# Started by dlw Aug 2023
33

4-
import farmer_gams_agnostic
4+
import farmer_gams_gen_agnostic2 as farmer_gams_agnostic
5+
#import farmer_gams_agnostic
56
from mpisppy.spin_the_wheel import WheelSpinner
67
import mpisppy.utils.cfg_vanilla as vanilla
78
import mpisppy.utils.config as config
89
import mpisppy.agnostic.agnostic as agnostic
910

11+
from mpisppy import MPI
12+
fullcomm = MPI.COMM_WORLD
13+
global_rank = fullcomm.Get_rank()
14+
1015
def _farmer_parse_args():
1116
# create a config object and parse JUST FOR TESTING
1217
cfg = config.Config()
@@ -28,9 +33,25 @@ def _farmer_parse_args():
2833

2934

3035
if __name__ == "__main__":
36+
3137
print("begin ad hoc main for agnostic.py")
3238

3339
cfg = _farmer_parse_args()
40+
### Creating the new gms file with ph included in it
41+
original_file = "GAMS/farmer_average.gms"
42+
nonants_support_set_name = "crop"
43+
nonant_variables_name = "x"
44+
nonants_name_pairs = [(nonants_support_set_name, nonant_variables_name)]
45+
46+
47+
if global_rank == 0:
48+
# Code for rank 0 to execute the task
49+
print("Global rank 0 is executing the task.")
50+
farmer_gams_agnostic.create_ph_model(original_file, nonants_name_pairs)
51+
print("Global rank 0 has completed the task.")
52+
53+
# Broadcast a signal from rank 0 to all other ranks indicating the task is complete
54+
fullcomm.Barrier()
3455
Ag = agnostic.Agnostic(farmer_gams_agnostic, cfg)
3556

3657
scenario_creator = Ag.scenario_creator

0 commit comments

Comments
 (0)