linprog(方法='单纯形法')#
- scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=(0, None), method='highs', callback=None, options=None, x0=None, integrality=None)
线性规划:在使用基于 tableau 的单纯形法的线性等式和不等式约束下,使线性目标函数最小化。
自 1.9.0 版开始弃用:method=’simplex’ 将在 SciPy 1.11.0 中移除。它被 method=’highs’ 取代,因为后者更快且更健壮。
线性规划求解下列形式的问题
\[\begin{split}\min_x \ & c^T x \\ \mbox{s.t.} \ & A_{ub} x \leq b_{ub},\\ & A_{eq} x = b_{eq},\\ & l \leq x \leq u ,\end{split}\]其中 \(x\) 是决策变量向量;\(c\)、\(b_{ub}\)、\(b_{eq}\)、\(l\) 和 \(u\) 是向量;\(A_{ub}\) 和 \(A_{eq}\) 是矩阵。
或者,如下所示
最小化
c @ x
满足
A_ub @ x <= b_ub A_eq @ x == b_eq lb <= x <= ub
请注意,默认情况下
lb = 0
和ub = None
,除非用bounds
指定。- 参数 :
- c1-D 数组
要最小化的线性目标函数的系数。
- A_ub 2-D 数组,可选项
不等式约束矩阵。
A_ub
的每一行指定x
上一个线性不等式约束的系数。- b_ub 1-D 数组,可选项
不等式约束向量。每个元素表示对
A_ub @ x
相应值的上限。- A_eq2-D 数组,可选项
等式约束矩阵。
A_eq
的每一行指定x
上一个线性等式约束的系数。- b_eq1-D 数组,可选项
等式约束向量。
A_eq @ x
的各个元素必须等于b_eq
相应元素。- bounds序列,可选项
一组
(最小值, 最大值)
元素对,为x
中的每个元素定义决策变量的最小值和最大值。使用None
指示没有界限。默认为(0, Null)
(所有决策变量为非负数)。如果提供一个单独的元组(最小值, 最大值)
,则min
和max
将作为所有决策变量的界限。- 方式str
这是特定于“单形”方法的文档。还提供了 ‘highs’、‘highs-ds’、‘highs-ipm’、‘interior-point’(默认)和 ‘revised simplex’。
- 回调可选,可调用
每个迭代执行一次的回调函数。
- 返回:
- res优化结果
scipy.optimize.OptimizeResult
包含以下字段:- x一维数组
满足约束条件时使目标函数最小化的决策变量值。
- fun浮点
目标函数
c @ x
的最优值。- slack一维数组
松弛变量的(标称正数)值,
b_ub - A_ub @ x
。- con一维数组
相等约束的(标称零)残差,
b_eq - A_eq @ x
。- success布尔型
当算法成功找到最优解时为
True
。- status整数
表示算法退出状态的整数。
0
:优化成功终止。1
:已达迭代上限。2
: 问题看来不可行。3
: 问题看来是无界的。4
: 遇到了数值困难。- messagestr
算法退出状态的字符串描述符。
- nitint
所有阶段执行的总迭代数。
另请参阅
有关其他参数的文档,请参见
scipy.optimize.linprog
- 选项:
- ——-
- maxiterint(默认值:5000)
任何一个阶段中要执行的最大迭代数。
- dispbool(默认值:False)
设置为
True
,如果要将优化状态的指示器打印到每个迭代的控制台。- presolvebool(默认值:True)
在将问题发送到主求解器之前,Presolve 尝试识别平凡不可行性、平凡无界性并简化问题。通常建议保留默认设置
True
;设置为False
,如果要禁用 presolve。- tolfloat(默认值:1e-12)
当第 1 阶段中的解决方案“足够接近”零时,确定何时被视为基本可行解决方案或足够接近正数作为最优解决方案的容差。
- autoscalebool(默认值:False)
设置为
True
,如果要自动执行平衡。如果约束中的数值相差几个数量级,请考虑使用此选项。- rrbool(默认值:True)
设置为
False
,如果要禁用自动冗余去除。- blandbool
如果为 True,使用布兰德防循环规则 [3] 选择枢纽,以防止循环。如果为 False,选择可以更快导致收敛解决方案的枢钮。后者在极少数情况下会受到循环(不收敛)的影响。
- unknown_optionsdict
此特定求解器不使用的可选参数。如果 unknown_options 非空,则会发出警告,列出所有未使用的选项。
参考文献
[1]乔治·B·丹齐格,线性规划及其扩展。兰德公司研究研究普林斯顿大学出版社,新泽西州普林斯顿,1963 年
[2]SH 希利尔和 GJ 利伯曼。(1995 年),《数学规划导论》,麦格劳-希尔,第 4 章。
[3]罗伯特·布兰德。单纯形法的有限条件转换规则。运筹学数学 (2), 1977: 第 103-107 页。