AMPL将派生变量“锁定”到一个值

时间:2014-12-15 07:29:57

标签: ampl

我想调查投资额外的生产设施是否有利可图,因此我必须考虑到我的目标函数的资本化。

因此我想知道是否有可能,例如,如果y [t] = 1,那么y [g] = 1 对于g!= t,g> t和其中g,t是时间间隔集T的子集。

我的第一个想法是:

subject to Constraint1:
    y[t] = y[t-1] for all t in T

但是肯定会使y的解决方案成为y [0]中的起始值,这是我显然不想要的。

澄清。假设y [t]是一个二进制变量,如果投资是在时间t进行的,则其值为1,否则为0.

希望任何人都能对此有所了解!

此致

1 个答案:

答案 0 :(得分:1)

约束y[t] = 1, then y[g] = 1 for g != t, g > t可以在AMPL中表示为:

s.t. c{t in T: t != t0}: y[t + 1] >= y[t];

其中t0是集T的第一个元素。请注意使用>=代替=。如果某些y[t]的{​​{1}}为1,则会将t的所有后续值y驱动为t