【问题标题】:Searching for MILP constraint to prevent alternation of integer variable搜索 MILP 约束以防止整数变量的交替
【发布时间】:2018-08-29 12:38:19
【问题描述】:

这正是我的情况: 假设变量 x[t] 是一个小于或等于 3 的 NonNegativeInteger。

所以x[t] 可以是{0,1,2,3}。它按时间序列编制索引。

我想阻止x[t] 交替。 表示我想禁止

x[0] = 0
x[1] = 1
x[2] = 0

还有

x[0] = 1
x[1] = 2
x[2] = 1

x[0] = 2
x[1] = 3
x[2] = 2

我正在寻找一个禁止这个的约束。该约束必须涉及三个时间步长。

我尝试了几个限制条件。我不确定这是否可以通过简单的约束来实现。

也许我必须添加一个变量才能完成这项工作。你有解决这类问题的经验吗?

提前感谢您!

【问题讨论】:

    标签: optimization mixed-integer-programming


    【解决方案1】:

    您可以确保具有以下约束的递增或递减顺序:

    x[t] + M(y-1)

    x[t] + 我的 >= x[t+1]

    y:二元变量(所有方程都使用相同的y)

    M:大数(大于可能的最大值)

    【讨论】:

    • 抱歉,我的问题可能没有解释清楚。我想防止它交替。我不想确保增加。所以 0,1,0 应该被阻止,但 0,1,1,0 应该是可能的。
    • 我认为如果“t”是{0,1,2,3},对最后一个方程组使用不同的二进制变量(y)就足够了。
    • 你能告诉我怎么做吗?
    • 其实,如果前三个变量的递增或递减顺序对你来说已经足够了,写出t = 0和t = 1的方程组并释放x[3]。因为 x[2] 和 x[3] 之间没有关系。这允许 0,1, 1,0 或 1, 0, 0, 1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2022-12-21
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多