Matlab:具有非零约束的整数线性程序
Matlab: Integer linear progamm with nonzero constraint
所以我要解决以下问题:
我想知道如何用Matlab的intlinprog
解决这个问题。如果我有 "less than or equal to" 而不是 "not equal to" ,那么解决起来就很简单了。
有什么建议吗?
约束条件
Ax <= 0
微不足道。然而约束
Ax <> 0
没那么容易。我们可以将其重写为
y = Ax
y(i) >= 0.0001
or
y(i) <= -0.0001
这个公式立即表明这个问题已经变成非凸的。我们可能需要二进制变量来帮助我们。例如:
y = Ax
y(i) >= 0.0001 - 1000*b(i)
y(i) <= -0.0001 + 1000*(1-b(i))
b(i) in {0,1}
这里我假设-1000 <= Ax <= 1000
.
所以我要解决以下问题:
我想知道如何用Matlab的intlinprog
解决这个问题。如果我有 "less than or equal to" 而不是 "not equal to" ,那么解决起来就很简单了。
有什么建议吗?
约束条件
Ax <= 0
微不足道。然而约束
Ax <> 0
没那么容易。我们可以将其重写为
y = Ax
y(i) >= 0.0001
or
y(i) <= -0.0001
这个公式立即表明这个问题已经变成非凸的。我们可能需要二进制变量来帮助我们。例如:
y = Ax
y(i) >= 0.0001 - 1000*b(i)
y(i) <= -0.0001 + 1000*(1-b(i))
b(i) in {0,1}
这里我假设-1000 <= Ax <= 1000
.