AMPL";“锁定”;将派生变量转换为值
我想调查投资额外的生产设施是否有利可图,因此我必须在目标函数中考虑资本化 因此,我想知道是否有可能,比如说,如果y[t]=1,那么y[g]=1 对于g!=t、 g>t,其中g,t是时间间隔集t的子集 我的第一个想法是: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 希望任何人都能对此有所
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。谢谢您的回复。我的模型现在可以正常工作了!