【问题标题】:Passing a variable as a parameter for a new model in GAMS将变量作为参数传递给 GAMS 中的新模型
【发布时间】:2020-12-19 22:36:17
【问题描述】:

我正在编写一个程序,其中我有两个数学模型,它们按顺序求解,第一个模型中的变量 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:已声明符号但未分配任何值。通过求解语句检查缺失的数据定义、赋值、数据加载或隐式赋值。

我该如何解决这个问题?

问候!

【问题讨论】:

    标签: variables gams-math


    【解决方案1】:

    安娜!求解第一个模型后,您只能使用 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;
    

    希望它有效:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多