【问题标题】:AMPL "Locking" a derived variable to a valueAMPL 将派生变量“锁定”到一个值
【发布时间】:2014-12-15 07:29:56
【问题描述】:

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

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

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

问候

【问题讨论】:

    标签: ampl


    【解决方案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] 对于某些 t 为 1,则它将驱动 y 对于 t 的所有后续值为 1。

    【讨论】:

    • 感谢您的回复。我的模型现在可以正常工作了!
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多