如何为变量添加条件 - GAMS

How to add a condition to a variable - GAMS

在我尝试构建的模型中,我有一个变量定义为:

Variables
    x(i,j)  number of motors produced in month i to be delivered in month j ;

在该变量中,j 必须始终等于或大于 i 才有意义(您不能在本月生产要在上个月交付的东西)。 但是,我不知道如何正确建模。我已经搜索过,但找不到一个简单的解决方案。

有什么想法吗?

所以,我在声明变量后立即添加:

x.fx(i,j)$(ord(i)>ord(j))=0; 

它正在将您不使用的变量的值固定为零。在您的模型中:

结果是:

我认为应该这样做:)

您应该为此使用 "variables with limited domains",查看此处了解更多详情,这是一个相当新的 GAMS 功能:https://www.gams.com/latest/docs/UG_ModelSolve.html#UG_ModelSolve_LimitedDomain

因此,在您的示例中,它看起来像这样:

Set limX(i,j) limiting domain of x;

limX(i,j) = ord(j) >= ord(i);

Model m /all, x(limX)/;
...

编辑:更正了模型语句的语法。