AMPL";“锁定”;将派生变量转换为值

AMPL";“锁定”;将派生变量转换为值,ampl,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 希望任何人都能对此有所

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

因此,我想知道是否有可能,比如说,如果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

希望任何人都能对此有所启发


考虑约束条件y[t]=1,然后y[g]=1表示g!=t、 g>t可以用AMPL表示为:

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

其中
t0
是集合
T
的第一个元素。注意使用
=
而不是
=
。如果部分
t
y[t]
为1,则
t
的所有后续值将
y
驱动为1。

谢谢您的回复。我的模型现在可以正常工作了!