Extracting numeric value from set element and assigning it as a parameter

Parameter YearR(W);

  • Assign YearR based on the W element names with conditional logic
    loop(W,
    if (substr(W,1,1) = ‘W’,
    YearR(W) = number(substr(W,3,2));
    else,
    YearR(W) = 0;
    );
    );

Snippet: Set W /W101, W102, …, W530/;

Since the post does not ask a clear question, I will have to guess what you want based on the topic name. I am assuming that you want to go through the elements of a set and if the set name starts with W, you want to extract the numerical value after the W and set it to a parameter.

Here is how you can achieve that with Embedded Code:

Set W / W101, W102, X101 /;

Parameter YearR(W);

$onEmbeddedCode Python:
values = []
for w in gams.get("W"):
  if w.startswith("W"):
    values.append((w, int(w[1:])))
gams.set("YearR", values)
$offEmbeddedCode YearR

display YearR;

Thank you, Muhammet. I understand that you have given the python code. Could you please suggest the GAMS code for the same task.

It’s a valid GAMS code with an embedded Python section in it.

Currently developing a single-cell aquifer model for the High Plains aquifer, focusing on determining optimal crop choices over a 30-year period.

The model incorporates a five-layer aquifer system, with each layer having an incremental well capacity of 100 GPM (500 GPM, 400 GPM, …, 100 GPM; W5, W4, …, W1). The model begins with an initial groundwater stock in each layer for the first year. I aim to implement recharge only within the active layer and ensure that any unused water within a layer is carried over to the subsequent year.

Our primary challenge lies in effectively controlling the recharge within the active layer. I would greatly appreciate your expertise in assisting me with this aspect of the GAMS model.

I have explicitly defined the following sets:

  • C: Irrigated corn activities
  • S: Irrigated sorghum activities
  • T: Groundwater transfer activities
  • L: Land activities
  • W: Groundwater levels

I have also included the relevant data tables here.
*---------------------------------------------------

  • OPTIONS
    *---------------------------------------------------
    OPTION LIMROW=0;
    OPTION LIMCOL=0;

*---------------------------------------------------

  • Sets
    *---------------------------------------------------
    Set C /
    C011, C012, C013, C014, C015,
    C021, C022, C023, C024, C025,
    C031, C032, C033, C034, C035,
    C041, C042, C043, C044, C045,
    C051, C052, C053, C054, C055,
    C061, C062, C063, C064, C065,
    C071, C072, C073, C074, C075,
    C081, C082, C083, C084, C085,
    C091, C092, C093, C094, C095,
    C101, C102, C103, C104, C105,
    C111, C112, C113, C114, C115,
    C121, C122, C123, C124, C125,
    C131, C132, C133, C134, C135,
    C141, C142, C143, C144, C145,
    C151, C152, C153, C154, C155,
    C161, C162, C163, C164, C165,
    C171, C172, C173, C174, C175,
    C181, C182, C183, C184, C185,
    C191, C192, C193, C194, C195,
    C201, C202, C203, C204, C205,
    C211, C212, C213, C214, C215,
    C221, C222, C223, C224, C225,
    C231, C232, C233, C234, C235,
    C241, C242, C243, C244, C245,
    C251, C252, C253, C254, C255,
    C261, C262, C263, C264, C265,
    C271, C272, C273, C274, C275,
    C281, C282, C283, C284, C285,
    C291, C292, C293, C294, C295,
    C301, C302, C303, C304, C305
    /;

Set S
/
S011, S012, S013, S014, S015,
S021, S022, S023, S024, S025,
S031, S032, S033, S034, S035,
S041, S042, S043, S044, S045,
S051, S052, S053, S054, S055,
S061, S062, S063, S064, S065,
S071, S072, S073, S074, S075,
S081, S082, S083, S084, S085,
S091, S092, S093, S094, S095,
S101, S102, S103, S104, S105,
S111, S112, S113, S114, S115,
S121, S122, S123, S124, S125,
S131, S132, S133, S134, S135,
S141, S142, S143, S144, S145,
S151, S152, S153, S154, S155,
S161, S162, S163, S164, S165,
S171, S172, S173, S174, S175,
S181, S182, S183, S184, S185,
S191, S192, S193, S194, S195,
S201, S202, S203, S204, S205,
S211, S212, S213, S214, S215,
S221, S222, S223, S224, S225,
S231, S232, S233, S234, S235,
S241, S242, S243, S244, S245,
S251, S252, S253, S254, S255,
S261, S262, S263, S264, S265,
S271, S272, S273, S274, S275,
S281, S282, S283, S284, S285,
S291, S292, S293, S294, S295,
S301, S302, S303, S304, S305
/;

Set T
/
T101,T201,T301,T401,T501,T102,T202,T302,T402,T502,T103,T203,T303,T403,T503,T104,T204,T304,T404,T504,T105,T205,T305,T405,T505,T106,T206,T306,T406,T506,T107,T207,T307,T407,T507,T108,T208,T308,T408,T508,
T109,T209,T309,T409,T509,T110,T210,T310,T410,T510,T111,T211,T311,T411,T511,T112,T212,T312,T412,T512,T113,T213,T313,T413,T513,T114,T214,T314,T414,T514,T115,T215,T315,T415,T515,T116,T216,T316,T416,T516,
T117,T217,T317,T417,T517,T118,T218,T318,T418,T518,T119,T219,T319,T419,T519,T120,T220,T320,T420,T520,T121,T221,T321,T421,T521,T122,T222,T322,T422,T522,T123,T223,T323,T423,T523,T124,T224,T324,T424,T524,
T125,T225,T325,T425,T525,T126,T226,T326,T426,T526,T127,T227,T327,T427,T527,T128,T228,T328,T428,T528,T129,T229,T329,T429,T529
/;

Alias (T, TT)

Set L
/
TA01, TA02, TA03, TA04, TA05, TA06, TA07, TA08, TA09, TA10,
TA11, TA12, TA13, TA14, TA15, TA16, TA17, TA18, TA19, TA20,
TA21, TA22, TA23, TA24, TA25, TA26, TA27, TA28, TA29, TA30
/;

Set W
/W101,W201,W301,W401,W501,
W102,W202,W302,W402,W502,
W103,W203,W303,W403,W503,
W104,W204,W304,W404,W504,
W105,W205,W305,W405,W505,
W106,W206,W306,W406,W506,
W107,W207,W307,W407,W507,
W108,W208,W308,W408,W508,
W109,W209,W309,W409,W509,
W110,W210,W310,W410,W510,
W111,W211,W311,W411,W511,
W112,W212,W312,W412,W512,
W113,W213,W313,W413,W513,
W114,W214,W314,W414,W514,
W115,W215,W315,W415,W515,
W116,W216,W316,W416,W516,
W117,W217,W317,W417,W517,
W118,W218,W318,W418,W518,
W119,W219,W319,W419,W519,
W120,W220,W320,W420,W520,
W121,W221,W321,W421,W521,
W122,W222,W322,W422,W522,
W123,W223,W323,W423,W523,
W124,W224,W324,W424,W524,
W125,W225,W325,W425,W525,
W126,W226,W326,W426,W526,
W127,W227,W327,W427,W527,
W128,W228,W328,W428,W528,
W129,W229,W329,W429,W529,
W130,W230,W330,W430,W530
/;

*‘Top water layer for each year’
Set W5(W)
/

  • W501, W502, W503, W504, W505, W506, W507, W508, W509, W510,
  • W511, W512, W513, W514, W515, W516, W517, W518, W519, W520,
  • W521, W522, W523, W524, W525, W526, W527, W528, W529, W530
    W101,W201,W301,W401,W501,
    W102,W202,W302,W402,W502,
    W103,W203,W303,W403,W503,
    W104,W204,W304,W404,W504,
    W105,W205,W305,W405,W505,
    W106,W206,W306,W406,W506,
    W107,W207,W307,W407,W507,
    W108,W208,W308,W408,W508,
    W109,W209,W309,W409,W509,
    W110,W210,W310,W410,W510,
    W111,W211,W311,W411,W511,
    W112,W212,W312,W412,W512,
    W113,W213,W313,W413,W513,
    W114,W214,W314,W414,W514,
    W115,W215,W315,W415,W515,
    W116,W216,W316,W416,W516,
    W117,W217,W317,W417,W517,
    W118,W218,W318,W418,W518,
    W119,W219,W319,W419,W519,
    W120,W220,W320,W420,W520,
    W121,W221,W321,W421,W521,
    W122,W222,W322,W422,W522,
    W123,W223,W323,W423,W523,
    W124,W224,W324,W424,W524,
    W125,W225,W325,W425,W525,
    W126,W226,W326,W426,W526,
    W127,W227,W327,W427,W527,
    W128,W228,W328,W428,W528,
    W129,W229,W329,W429,W529,
    W130,W230,W330,W430,W530
    /;
    *---------------------------------------------------
  • TABLES
    *---------------------------------------------------
    TABLE L_C(L,C)
    C011 C012 C013 C014 C015
    TA01 1 1 1 1 1
  •        C021     C022     C023     C024     C025
    
    TA02 1 1 1 1 1
  •        C031     C032     C033     C034     C035
    
    TA03 1 1 1 1 1
  •        C041     C042     C043     C044     C045
    
    TA04 1 1 1 1 1
  •        C051     C052     C053     C054     C055
    
    TA05 1 1 1 1 1
  •        C061     C062     C063     C064     C065
    
    TA06 1 1 1 1 1
  •        C071     C072     C073     C074     C075
    
    TA07 1 1 1 1 1
  •        C081     C082     C083     C084     C085
    
    TA08 1 1 1 1 1
  •        C091     C092     C093     C094     C095
    
    TA09 1 1 1 1 1
  •        C101     C102     C103     C104     C105
    
    TA10 1 1 1 1 1
  •        C111     C112     C113     C114     C115
    
    TA11 1 1 1 1 1
  •        C121     C122     C123     C124     C125
    
    TA12 1 1 1 1 1
  •        C131     C132     C133     C134     C135
    
    TA13 1 1 1 1 1
  •        C141     C142     C143     C144     C145
    
    TA14 1 1 1 1 1
  •        C151     C152     C153     C154     C155
    
    TA15 1 1 1 1 1

    TA29 1 1 1 1 1
  •        C301     C302     C303     C304     C305
    
    TA30 1 1 1 1 1
    ;

TABLE L_S(L,S)
S011 S012 S013 S014 S015
TA01 1 1 1 1 1

  •        S021     S022     S023     S024     S025
    
    TA02 1 1 1 1 1
  •        S031     S032     S033     S034     S035
    
    TA03 1 1 1 1 1
  •        S041     S042     S043     S044     S045
    
    TA04 1 1 1 1 1
  •        S051     S052     S053     S054     S055
    
    TA05 1 1 1 1 1
  •        S061     S062     S063     S064     S065
    
    TA06 1 1 1 1 1
  •        S071     S072     S073     S074     S075
    
    TA07 1 1 1 1 1
  •        S081     S082     S083     S084     S085
    
    TA08 1 1 1 1 1
  •        S091     S092     S093     S094     S095
    
    TA09 1 1 1 1 1
  •        S101     S102     S103     S104     S105
    
    TA10 1 1 1 1 1
  •        S111     S112     S113     S114     S115
    
    TA11 1 1 1 1 1
  •        S301     S302     S303     S304     S305
    
    TA30 1 1 1 1 1
    ;

TABLE W_S(W,S)
S011 S012 S013 S014 S015
W101 0 0 0 0 0
W201 0 0 0 0 0
W301 0 0 0 0 0
W401 0 0 0 0 0
W501 0 0 0 0 0

  •        S021     S022     S023     S024     S025
    
    W102 0 0 0 0 0
    W202 0 0 0 0 0
    W302 0 0 0 0 0
    W402 0 0 0 0 0
    W502 0 0 0 0 0
  •        S301     S302     S303     S304     S305
    
    W130 0 0 0 0 0
    W230 0 0 0 0 0
    W330 0 0 0 0 0
    W430 0 0 0 0 0
    W530 0 0 0 0 0
    ;

TABLE W_C(W,C)
C011 C012 C013 C014 C015
W101 .1 0 0 0 0
W201 0 .52 0 0 0
W301 0 0 .9 0 0
W401 0 0 0 1.15 0
W501 0 0 0 0 1.22

  •        C021     C022     C023     C024     C025
    
    W102 .1 0 0 0 0
    W202 0 .52 0 0 0
    W302 0 0 .9 0 0
    W402 0 0 0 1.15 0
    W502 0 0 0 0 1.22
  •        C301     C302     C303     C304     C305
    
    W130 .1 0 0 0 0
    W230 0 .52 0 0 0
    W330 0 0 .9 0 0
    W430 0 0 0 1.15 0
    W530 0 0 0 0 1.22
    ;

Table Transfer(W,T)
T101 T201 T301 T401 T501 T102 T202 T302 T402 T502 T103 T203 T303 T403 T503
W101 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
W201 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
W301 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
W401 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
W501 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
W102 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0
W202 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0
W302 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0
W402 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0
W502 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0

W130 0 0 0 0 0 -1 0 0 0 0
W230 0 0 0 0 0 0 -1 0 0 0
W330 0 0 0 0 0 0 0 -1 0 0
W430 0 0 0 0 0 0 0 0 -1 0
W530 0 0 0 0 0 0 0 0 0 -1
;

*---------------------------------------------------

  • PARAMETERS
    *---------------------------------------------------
    Parameter OBJ_C(C)
    /C011 48.86,C012 170.83,C013 239.29,C014 264.53,C015 268.52,
    C021 45.66,C022 159.65,C023 223.64,C024 247.22,C025 250.96,
    C031 42.67,C032 149.21,C033 209.01,C034 231.05,C035 234.54,
    C041 39.88,C042 139.45,C043 195.34,C044 215.93,C045 219.2,
    C051 37.27,C052 130.32,C053 182.56,C054 201.81,C055 204.86,
    C061 34.83,C062 121.8,C063 170.61,C064 188.61,C065 191.45,
    C071 32.56,C072 113.83,C073 159.45,C074 176.27,C075 178.93,
    C081 30.43,C082 106.38,C083 149.02,C084 164.74,C085 167.22,
    C091 28.44,C092 99.42,C093 139.27,C094 153.96,C095 156.28,
    C101 26.58,C102 92.92,C103 130.16,C104 143.89,C105 146.06,
    C111 24.84,C112 86.84,C113 121.65,C114 134.47,C115 136.5,
    C121 23.21,C122 81.16,C123 113.69,C124 125.68,C125 127.57,
    C131 21.69,C132 75.85,C133 106.25,C134 117.45,C135 119.23,
    C141 20.27,C142 70.89,C143 99.3,C144 109.77,C145 111.43,
    C151 18.95,C152 66.25,C153 92.8,C154 102.59,C155 104.14,
    C161 17.71,C162 61.92,C163 86.73,C164 95.88,C165 97.33,
    C171 16.55,C172 57.87,C173 81.06,C174 89.61,C175 90.96,
    C181 15.47,C182 54.08,C183 75.75,C184 83.74,C185 85.01,
    C191 14.46,C192 50.54,C193 70.8,C194 78.26,C195 79.45,
    C201 13.51,C202 47.24,C203 66.17,C204 73.14,C205 74.25,
    C211 12.63,C212 44.15,C213 61.84,C214 68.36,C215 69.39,
    C221 11.8,C222 41.26,C223 57.79,C224 63.89,C225 64.85,
    C231 11.03,C232 38.56,C233 54.01,C234 59.71,C235 60.61,
    C241 10.31,C242 36.04,C243 50.48,C244 55.8,C245 56.64,
    C251 9.63,C252 33.68,C253 47.18,C254 52.15,C255 52.94,
    C261 9,C262 31.47,C263 44.09,C264 48.74,C265 49.48,
    C271 8.41,C272 29.42,C273 41.21,C274 45.55,C275 46.24,
    C281 7.86,C282 27.49,C283 38.51,C284 42.57,C285 43.21,
    C291 7.35,C292 25.69,C293 35.99,C294 39.79,C295 40.39,
    C301 6.87,C302 24.01,C303 33.64,C304 37.18,C305 37.74/;

Parameter OBJ_S(S)
/S011 4.52,S012 11.47,S013 15.15,S014 22.09,S015 30.23,
S021 4.23,S022 10.72,S023 14.16,S024 20.64,S025 28.26,
S031 3.95,S032 10.02,S033 13.23,S034 19.29,S035 26.41,
S041 3.69,S042 9.36,S043 12.37,S044 18.03,S045 24.68,
S051 3.45,S052 8.75,S053 11.56,S054 16.85,S055 23.07,
S061 3.23,S062 8.18,S063 10.8,S064 15.75,S065 21.56,
S071 3.01,S072 7.64,S073 10.09,S074 14.72,S075 20.15,
S081 2.82,S082 7.14,S083 9.43,S084 13.76,S085 18.83,
S091 2.63,S092 6.68,S093 8.82,S094 12.86,S095 17.6,
S101 2.46,S102 6.24,S103 8.24,S104 12.01,S105 16.45,
S111 2.3,S112 5.83,S113 7.7,S114 11.23,S115 15.37,
S121 2.15,S122 5.45,S123 7.2,S124 10.49,S125 14.36,
S131 2.01,S132 5.09,S133 6.73,S134 9.81,S135 13.42,
S141 1.88,S142 4.76,S143 6.29,S144 9.17,S145 12.55,
S151 1.75,S152 4.45,S153 5.88,S154 8.57,S155 11.73,
S161 1.64,S162 4.16,S163 5.49,S164 8.01,S165 10.96,
S171 1.53,S172 3.89,S173 5.13,S174 7.48,S175 10.24,
S181 1.43,S182 3.63,S183 4.8,S184 6.99,S185 9.57,
S191 1.34,S192 3.39,S193 4.48,S194 6.54,S195 8.94,
S201 1.25,S202 3.17,S203 4.19,S204 6.11,S205 8.36,
S211 1.17,S212 2.96,S213 3.91,S214 5.71,S215 7.81,
S221 1.09,S222 2.77,S223 3.66,S224 5.33,S225 7.3,
S231 1.02,S232 2.59,S233 3.42,S234 4.99,S235 6.82,
S241 .95,S242 2.42,S243 3.2,S244 4.66,S245 6.38,
S251 .89,S252 2.26,S253 2.99,S254 4.35,S255 5.96,
S261 .83,S262 2.11,S263 2.79,S264 4.07,S265 5.57,
S271 .78,S272 1.98,S273 2.61,S274 3.8,S275 5.21,
S281 .73,S282 1.85,S283 2.44,S284 3.55,S285 4.87,
S291 .68,S292 1.73,S293 2.28,S294 3.32,S295 4.55,
S301 .64,S302 1.61,S303 2.13,S304 3.1,S305 4.25/;

Parameter OBJ_T(T) /
T101 0, T102 0, T103 0, T104 0, T105 0,
T106 0, T107 0, T108 0, T109 0, T110 0,
T201 0, T202 0, T203 0, T204 0, T205 0,
T206 0, T207 0, T208 0, T209 0, T210 0,
T301 0, T302 0, T303 0, T304 0, T305 0,
T306 0, T307 0, T308 0, T309 0, T310 0,
T401 0, T402 0, T403 0, T404 0, T405 0,
T406 0, T407 0, T408 0, T409 0, T410 0,
T501 0, T502 0, T503 0, T504 0, T505 0,
T506 0, T507 0, T508 0, T509 0, T510 0,
T511 0, T512 0, T513 0, T514 0, T515 0,
T516 0, T517 0, T518 0, T519 0, T520 0,
T521 0, T522 0, T523 0, T524 0, T525 0,
T526 0, T527 0, T528 0, T529 0
/;

Parameters RHS_L(L)
/
TA01 120,
TA02 120,
TA03 120,
TA04 120,
TA05 120,
TA06 120,
TA07 120,
TA08 120,
TA09 120,
TA10 120,
TA11 120,
TA12 120,
TA13 120,
TA14 120,
TA15 120,
TA16 120,
TA17 120,
TA18 120,
TA19 120,
TA20 120,
TA21 120,
TA22 120,
TA23 120,
TA24 120,
TA25 120,
TA26 120,
TA27 120,
TA28 120,
TA29 120,
TA30 120
/;

Parameter RHS_W(W)
/
W101 537.6, W201 403.2, W301 537.6, W401 600, W501 600,
W102 0, W202 0, W302 0, W402 0, W502 0,
W103 0, W203 0, W303 0, W403 0, W503 0,
W104 0, W204 0, W304 0, W404 0, W504 0,
W105 0, W205 0, W305 0, W405 0, W505 0,
W106 0, W206 0, W306 0, W406 0, W506 0,
W107 0, W207 0, W307 0, W407 0, W507 0,
W108 0, W208 0, W308 0, W408 0, W508 0,
W109 0, W209 0, W309 0, W409 0, W509 0,
W110 0, W210 0, W310 0, W410 0, W510 0,
W111 0, W211 0, W311 0, W411 0, W511 0,
W112 0, W212 0, W312 0, W412 0, W512 0,
W113 0, W213 0, W313 0, W413 0, W513 0,
W114 0, W214 0, W314 0, W414 0, W514 0,
W115 0, W215 0, W315 0, W415 0, W515 0,
W116 0, W216 0, W316 0, W416 0, W516 0,
W117 0, W217 0, W317 0, W417 0, W517 0,
W118 0, W218 0, W318 0, W418 0, W518 0,
W119 0, W219 0, W319 0, W419 0, W519 0,
W120 0, W220 0, W320 0, W420 0, W520 0,
W121 0, W221 0, W321 0, W421 0, W521 0,
W122 0, W222 0, W322 0, W422 0, W522 0,
W123 0, W223 0, W323 0, W423 0, W523 0,
W124 0, W224 0, W324 0, W424 0, W524 0,
W125 0, W225 0, W325 0, W425 0, W525 0,
W126 0, W226 0, W326 0, W426 0, W526 0,
W127 0, W227 0, W327 0, W427 0, W527 0,
W128 0, W228 0, W328 0, W428 0, W528 0,
W129 0, W229 0, W329 0, W429 0, W529 0,
W130 0, W230 0, W330 0, W430 0, W530 0
/;

Parameter RechargeCapacity(W)
/
W101 50, W201 50, W301 50, W401 50, W501 50,
W102 50, W202 50, W302 50, W402 50, W502 50,
W103 50, W203 50, W303 50, W403 50, W503 50,
W104 50, W204 50, W304 50, W404 50, W504 50,
W105 50, W205 50, W305 50, W405 50, W505 50,
W106 50, W206 50, W306 50, W406 50, W506 50,
W107 50, W207 50, W307 50, W407 50, W507 50,
W108 50, W208 50, W308 50, W408 50, W508 50,
W109 50, W209 50, W309 50, W409 50, W509 50,
W110 50, W210 50, W310 50, W410 50, W510 50,
W111 50, W211 50, W311 50, W411 50, W511 50,
W112 50, W212 50, W312 50, W412 50, W512 50,
W113 50, W213 50, W313 50, W413 50, W513 50,
W114 50, W214 50, W314 50, W414 50, W514 50,
W115 50, W215 50, W315 50, W415 50, W515 50,
W116 50, W216 50, W316 50, W416 50, W516 50,
W117 50, W217 50, W317 50, W417 50, W517 50,
W118 50, W218 50, W318 50, W418 50, W518 50,
W119 50, W219 50, W319 50, W419 50, W519 50,
W120 50, W220 50, W320 50, W420 50, W520 50,
W121 50, W221 50, W321 50, W421 50, W521 50,
W122 50, W222 50, W322 50, W422 50, W522 50,
W123 50, W223 50, W323 50, W423 50, W523 50,
W124 50, W224 50, W324 50, W424 50, W524 50,
W125 50, W225 50, W325 50, W425 50, W525 50,
W126 50, W226 50, W326 50, W426 50, W526 50,
W127 50, W227 50, W327 50, W427 50, W527 50,
W128 50, W228 50, W328 50, W428 50, W528 50,
W129 50, W229 50, W329 50, W429 50, W529 50,
W130 50, W230 50, W330 50, W430 50, W530 50
/;

Set R /01*30/;

Parameter YearR(W);
$onEmbeddedCode Python:
values =
for w in gams.get(“W”):
if w.startswith(“W”):
values.append((w, int(w[1:])))
gams.set(“YearR”, values)
$offEmbeddedCode YearR
*---------------------------------------------------

  • SCALARS
    *---------------------------------------------------
    *Amount of water recharged when a layer is active
    Scalar RechargeValue /50/;

*---------------------------------------------------

  • VARIABLES
    *---------------------------------------------------
    Positive Variables X(C), Y(S), Z(T);
    Binary Variable I_active(W) ‘Indicator for active water layer W’;
    Variables Val ‘Objective Function Value’;
    Scalar M /100000/;

*---------------------------------------------------

  • EQUATIONS
    *---------------------------------------------------
    Equations
    Profit,
    Con_L(L),
    Con_W(W),
    Activate_Extraction_Lower(W),
    Activate_Extraction_Upper(W),
    Recharge_Limit(W),
    OnlyOneRecharge(R);
    *Recharge_Constraint(W);

Activate_Extraction_Lower(W)…
sum(C, W_C(W,C)*X(C)) =G= 1 * I_active(W)$(W5(W));

Activate_Extraction_Upper(W)…
sum(C, W_C(W,C)*X(C)) =L= M * I_active(W) $(W5(W));

Recharge_Limit(W)…
YearR(W) =L= RechargeCapacity(W) * I_active(W) $(W5(W));

Profit…
Val =E= sum(C, OBJ_C(C) * X(C))
+ sum(S, OBJ_S(S) * Y(S))
+ sum(T, OBJ_T(T) * Z(T));

Con_L(L)… sum(C, L_C(L,C)*X(C))
+ sum(S, L_S(L,S)*Y(S))
=L= RHS_L(L);

Con_W(W)… sum(C, W_C(W,C)*X(C))
+ sum(S, W_S(W,S)*Y(S))
- YearR(W)
+ sum(T, Transfer(W,T)*Z(T))
=L= RHS_W(W);
OnlyOneRecharge(R)…
sum(W$(W5(W)), I_active(W)) =E= 1;

Model Ogal/All/;
Solve Ogal maximizing Val using MIP;