【问题标题】:Conditional Equations with Variable in GAMSGAMS中带变量的条件方程
【发布时间】:2018-05-28 15:22:45
【问题描述】:

我需要您的帮助来解决我在使用 GAMS 编程时遇到的这个“小”问题。

在我的目标函数中,我的这个成员是 z = [...]-TWC(j)*HS(j)。 其中 HS(j) 是一个变量。

现在,TWC(j) 应该是一个像这样工作的参数:

当 HS(j)

当 HS(j) >=1000 时,TWC(j) = 3.21。

知道如何在 GAMS 中实现这一点吗?我的尝试都失败了。

编辑:这是我尝试过的,我定义了一个名为 TWCup(j) 的方程式:

TWCup(j)$(HS.l(j) >= 1000)..TWC(j) =e= 3.21;

谢谢 ;)

【问题讨论】:

  • 好吧..你有什么尝试?
  • @DimitarTsonev 我更新了我的问题!对不起!
  • 你得到什么错误?这应该可以,你忘了第二种情况(hs.l(j)

标签: conditional gams-math


【解决方案1】:

可能不再与 OP 相关(因为该问题已超过 3 年),但可能对查看此问题的其他人有用。

如果 TWC(j) 是变量 HS(j) 的函数,则它不是参数。它是另一个变量。因此,您应该将TWC(j) 定义为变量而不是参数。这可能是您收到错误的原因。

有一些方法可以解决您的问题:一种是将TWC(j) 实际转换为变量。但这会将您的问题变成非线性问题,这可能是(或不是)问题。此外,这可能需要使用二进制变量,这也可能成为一个问题(再次,或不是)。

但我认为这个问题可以通过不同规格的 LP 来解决。成本函数f(HS(j)) = TWC(j)*HS(j) 是线性的部分和凸,您可以使用辅助变量在标准 LP 中表示(假设您正在最小化)。

* declare auxiliary variable
Variable 
    w(j);

* declare equations for linear by part cost function
Equation
    costfun1(j)
    costfun2(j);
;

* define costfun1 and costfun2
costfun1(j).. w(j) =g= 0;
costfun2(j).. w(j) =g= -3210 + 3.21*HS(j);  


*redefine objective function (note that I changed to plus because I assumed this is a cost function that you are minimizing)
z = [...]+w(j)

此解决方案非常依赖于问题。我假设您正在最小化,我将目标函数中的符号更改为“+”。如果不是这种情况,这将不起作用(不会是凸的)。然后我们需要检查其他方法。

但这里要强调的是,作为变量函数的东西也是变量。但是您可能可以选择重新表述您的问题以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多