我想知道Scipy的这两个功能之间的区别:
我确实看到它们有不同的语法,但它们似乎都基于HiGHS求解器,那么在求解算法上是否有根本的区别?我们可以期望使用一个函数或另一个函数的计算时间相同吗?
编辑:我在Scipy Github repo https://github.com/scipy/scipy/issues/18700中找到了一个很好的解释
nx7onnlm1#
阅读文档:milplinprog在签名方面
milp
linprog
A_eq
A_ub
LinearConstraint
bounds
Bounds
options
maxiter
HiGHS
highs
method
对于特殊的(和不推荐的)用例,linprog支持回调,而milp不支持。关于这一点的文档在linprog中没有明确说明,但是对于未被弃用的方法(highs和家族),callback被忽略。由于限制方便的 Package 器,您通常应该使用milp,除非您有非常好的理由。我们可以期望使用一个函数或另一个函数的计算时间相同吗?是的。唯一的(边际)时间差异,你可能会或可能无法检测是在问题的设置和转换时间;基本上所有的代码都在HiGHS之前。
callback
1条答案
按热度按时间nx7onnlm1#
阅读文档:
milp
linprog
在签名方面
linprog
分别接受A_eq
和A_ub
约束的一个裸矩阵。milp
接受LinearConstraint
对象,这些对象可以做同样的事情,但更通用,具有独立的下限和上限,并且能够在一个序列中指定多个独立的约束。(milp
也可以接受裸阵列,只要它们可以直接通过构造函数解包转换为LinearConstraint
)。linprog
接受bounds
的裸矩阵,milp
接受Bounds
便利对象。linprog
接受与milp
不同的options
字典键。例如,使用linprog
可以设置maxiter
,而使用milp
则不能。milp
仅 PackageHiGHS
。linprog
接受通常应该设置为highs
的method
,但有其他传统方法,包括单纯形和内点。通常不应使用这些遗留方法:**自版本1.9.0弃用:method ='simplex' 将在SciPy 1.11.0中删除。它被 method ='highs' 代替,因为后者更快,更健壮。
对于特殊的(和不推荐的)用例,
linprog
支持回调,而milp
不支持。关于这一点的文档在linprog
中没有明确说明,但是对于未被弃用的方法(highs
和家族),callback
被忽略。由于限制方便的 Package 器,您通常应该使用
milp
,除非您有非常好的理由。我们可以期望使用一个函数或另一个函数的计算时间相同吗?
是的。唯一的(边际)时间差异,你可能会或可能无法检测是在问题的设置和转换时间;基本上所有的代码都在
HiGHS
之前。