在 GAMS 中将变量作为参数传递给新模型
Passing a variable as a parameter for a new model in GAMS
我正在编写一个程序,其中我有两个数学模型,它们以第一个模型的变量 X7(f,p) 成为第二个模型的参数 rwdemand(f,p) 的方式依次求解。
上述问题的主要代码元素:
Sets
f raw materials /f1*f14/
p periods /p1*p4/;
Positive Variable X7(f,p) quantity of raw material f required in period p;
Equation
*First model
r6_rwinventory(f,p).. X4(f,p-1) + X7(f,p-leadtime)=e= sum((t,m,sp),((rmconsumption(f,t,m)*X1(t,m,sp))+X4(f,p)));
Parameter rmdemand(f,p);
rmdemand(f,p)= X7.l;
Equation
*Second model
r3_demand(f,p).. X4(f,p-1) + sum((s,d),X2(f,s,d,p-leadtime)) =e= rmdemand(f,p) + X4(f,p);
Model First_model "real instance set for Lot sizing model (SMM-LS)." /fo,r1_produnits,r2_packsetup,r3_bulkinventory,r4_packinventory,r5_maxbulkinventory,r6_rwinventory,r7_usedinventory1/
Second_model "real instance set for Raw material purchasing model (SMM-RMP)" /fo2,r1_maxd,r2_order,r3_demand,r4_maxinventory,r5_mininventory/;
Solve First_model using mip minimizing Z
Solve Second_model using mip minimizing A;
Display Z.l,A.l;
这样写:
Parameter rmdemand(f,p);
rmdemand(f,p)= X7.l;
它不起作用并出现错误 141:已声明符号但未分配任何值。通过求解语句检查缺失的数据定义、赋值、数据加载或隐式赋值。
我该如何解决?
此致!
安娜!解完第一个模型后,才能用X7.l取值。所以,我相信这可能有效:
(...)
Equation
*First model
r6_rwinventory(f,p).. X4(f,p-1) + X7(f,p-leadtime)=e= sum((t,m,sp),((rmconsumption(f,t,m)*X1(t,m,sp))+X4(f,p)));
Parameter rmdemand(f,p);
Equation
*Second model
r3_demand(f,p).. X4(f,p-1) + sum((s,d),X2(f,s,d,p-leadtime)) =e= rmdemand(f,p) + X4(f,p);
Model First_model "real instance set for Lot sizing model (SMM-LS)." /fo,r1_produnits,r2_packsetup,r3_bulkinventory,r4_packinventory,r5_maxbulkinventory,r6_rwinventory,r7_usedinventory1/
Second_model "real instance set for Raw material purchasing model (SMM-RMP)" /fo2,r1_maxd,r2_order,r3_demand,r4_maxinventory,r5_mininventory/;
Solve First_model using mip minimizing Z;
*Insert the attribution of value between the two solve statements
rmdemand(f,p)= X7.l;
Solve Second_model using mip minimizing A;
Display Z.l,A.l;
希望有用:)
我正在编写一个程序,其中我有两个数学模型,它们以第一个模型的变量 X7(f,p) 成为第二个模型的参数 rwdemand(f,p) 的方式依次求解。
上述问题的主要代码元素:
Sets
f raw materials /f1*f14/
p periods /p1*p4/;
Positive Variable X7(f,p) quantity of raw material f required in period p;
Equation
*First model
r6_rwinventory(f,p).. X4(f,p-1) + X7(f,p-leadtime)=e= sum((t,m,sp),((rmconsumption(f,t,m)*X1(t,m,sp))+X4(f,p)));
Parameter rmdemand(f,p);
rmdemand(f,p)= X7.l;
Equation
*Second model
r3_demand(f,p).. X4(f,p-1) + sum((s,d),X2(f,s,d,p-leadtime)) =e= rmdemand(f,p) + X4(f,p);
Model First_model "real instance set for Lot sizing model (SMM-LS)." /fo,r1_produnits,r2_packsetup,r3_bulkinventory,r4_packinventory,r5_maxbulkinventory,r6_rwinventory,r7_usedinventory1/
Second_model "real instance set for Raw material purchasing model (SMM-RMP)" /fo2,r1_maxd,r2_order,r3_demand,r4_maxinventory,r5_mininventory/;
Solve First_model using mip minimizing Z
Solve Second_model using mip minimizing A;
Display Z.l,A.l;
这样写:
Parameter rmdemand(f,p);
rmdemand(f,p)= X7.l;
它不起作用并出现错误 141:已声明符号但未分配任何值。通过求解语句检查缺失的数据定义、赋值、数据加载或隐式赋值。
我该如何解决?
此致!
安娜!解完第一个模型后,才能用X7.l取值。所以,我相信这可能有效:
(...)
Equation
*First model
r6_rwinventory(f,p).. X4(f,p-1) + X7(f,p-leadtime)=e= sum((t,m,sp),((rmconsumption(f,t,m)*X1(t,m,sp))+X4(f,p)));
Parameter rmdemand(f,p);
Equation
*Second model
r3_demand(f,p).. X4(f,p-1) + sum((s,d),X2(f,s,d,p-leadtime)) =e= rmdemand(f,p) + X4(f,p);
Model First_model "real instance set for Lot sizing model (SMM-LS)." /fo,r1_produnits,r2_packsetup,r3_bulkinventory,r4_packinventory,r5_maxbulkinventory,r6_rwinventory,r7_usedinventory1/
Second_model "real instance set for Raw material purchasing model (SMM-RMP)" /fo2,r1_maxd,r2_order,r3_demand,r4_maxinventory,r5_mininventory/;
Solve First_model using mip minimizing Z;
*Insert the attribution of value between the two solve statements
rmdemand(f,p)= X7.l;
Solve Second_model using mip minimizing A;
Display Z.l,A.l;
希望有用:)