【问题标题】:Linear programming - bounds with intervals?线性规划 - 区间的界限?
【发布时间】:2021-07-31 02:45:50
【问题描述】:

这似乎是一个有趣的问题,但是有没有办法用两个“下”边界来编写一个 LP 方程?

基本上,我的问题是,我不想为某些变量“a”设置传统的边界 (0,x),而是希望拥有边界 ((0 或 i),x),其中 i 和 x 是浮点数的范围。因此,如果将其归零并不能优化它,它会在 i 和 x 之间找到最佳值;例如(0,5,100),其中最优值可以是零或介于 5 到 100 之间的浮点数。

有没有办法在 scipy linprog 或 PuLP 中进行编程?还是有更复杂的求解器可以处理此类约束?

【问题讨论】:

  • 这有时被称为半连续变量。一些求解器和建模工具直接将其作为变量类型来支持,但在其他情况下,例如 PuLP,您需要使用二进制变量来对此进行建模。

标签: python pulp scipy-optimize


【解决方案1】:

您描述的确切场景仅使用 LP 是不可能的(因此您无法使用 linprog 解决此问题),但您可以使用 MILP 执行类似的操作。您将引入一个二进制变量,例如 b,如果下限和上限为 0,则为 0;如果您有另一个边界,则为 1,然后您将添加约束 b*i <= aa <= b*x。这样,当b 为零时,a 必须为零,而当b 为 1 时,您恢复了i <= a <= x 的界限。你可以用 Pulp 解决这个问题。

【讨论】:

  • 有道理 - 会试一试,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 2020-06-20
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多