线性规划 - 区间界限?
Linear programming - bounds with intervals?
这似乎是个有趣的问题,但是有没有办法用两个 'lower' 边界来编写 LP 方程?
基本上我的问题是,我想要有边界 ((0 or i),x),其中 i 和 x 是一个范围,而不是为某些变量设置常规边界 (0,x)花车。因此,如果将其归零并不能优化它,它会找到 i 和 x 之间的最优值;例如(0,5,100) 其中最佳值可以是零或 5 到 100 之间的某个浮点数。
有没有办法在 scipy linprog 或 PuLP 中对此进行编程?或者是否有更复杂的求解器可以处理此类约束?
仅使用 LP 无法实现您描述的确切场景(因此您无法使用 linprog 解决此问题),但您可以使用 MILP 执行类似的操作。您将引入一个二进制变量,例如 b
,如果下限和上限为 0,则该变量为 0;如果您有另一个界限,则为 1,然后您将添加约束 b*i <= a
和 a <= b*x
.这样,当 b
为零时,a
必须为零,而当 b
为 1 时,您将恢复 i <= a <= x
的界限。你可以用 Pulp 解决这个问题。
这似乎是个有趣的问题,但是有没有办法用两个 'lower' 边界来编写 LP 方程?
基本上我的问题是,我想要有边界 ((0 or i),x),其中 i 和 x 是一个范围,而不是为某些变量设置常规边界 (0,x)花车。因此,如果将其归零并不能优化它,它会找到 i 和 x 之间的最优值;例如(0,5,100) 其中最佳值可以是零或 5 到 100 之间的某个浮点数。
有没有办法在 scipy linprog 或 PuLP 中对此进行编程?或者是否有更复杂的求解器可以处理此类约束?
仅使用 LP 无法实现您描述的确切场景(因此您无法使用 linprog 解决此问题),但您可以使用 MILP 执行类似的操作。您将引入一个二进制变量,例如 b
,如果下限和上限为 0,则该变量为 0;如果您有另一个界限,则为 1,然后您将添加约束 b*i <= a
和 a <= b*x
.这样,当 b
为零时,a
必须为零,而当 b
为 1 时,您将恢复 i <= a <= x
的界限。你可以用 Pulp 解决这个问题。