linprog(method='simplex')#

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)

线性规划:使用基于表格的单纯形法最小化线性目标函数,受线性等式和不等式约束。

自版本 1.9.0 起已弃用: method='simplex' 将在 SciPy 1.11.0 中移除。它被 method='highs' 取代,因为后者更快、更健壮。

线性规划求解以下形式的问题

\[\begin{split}\min_x \ & c^T x \\ \mbox{使得} \ & 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 = 0ub = None,除非使用 bounds 指定。

参数:
c一维数组

要最小化的线性目标函数的系数。

A_ub二维数组,可选

不等式约束矩阵。A_ub 的每一行指定 x 上的线性不等式约束的系数。

b_ub一维数组,可选

不等式约束向量。每个元素表示 A_ub @ x 的对应值的上限。

A_eq二维数组,可选

等式约束矩阵。A_eq 的每一行指定 x 上的线性等式约束的系数。

b_eq一维数组,可选

等式约束向量。A_eq @ x 的每个元素必须等于 b_eq 的对应元素。

bounds序列,可选

x 中每个元素的 (min, max) 对的序列,定义该决策变量的最小值和最大值。使用 None 表示没有界限。默认情况下,边界为 (0, None)(所有决策变量都是非负的)。如果提供单个元组 (min, max),则 minmax 将作为所有决策变量的边界。

method字符串

这是 'simplex' 的特定于方法的文档。‘highs’, ‘highs-ds’, ‘highs-ipm’, ‘interior-point’(默认),以及 ‘revised simplex’ 也可用。

callback可调用对象,可选

每次迭代执行的回调函数。

返回:
resOptimizeResult

由以下字段组成的 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 : 遇到数值困难。

message字符串

算法退出状态的字符串描述符。

nit整数

所有阶段中执行的迭代总数。

另请参阅

有关其余参数的文档,请参阅 scipy.optimize.linprog

选项:
——-
maxiter整数(默认:5000)

在任一阶段执行的最大迭代次数。

disp布尔值(默认:False)

如果要在每次迭代时将优化状态的指示符打印到控制台,则设置为 True

presolve布尔值(默认:True)

预解尝试识别琐碎的不可行性、识别琐碎的无界性,并在将其发送到主求解器之前简化问题。通常建议保持默认设置 True;如果要禁用预解,则设置为 False

tol浮点数(默认:1e-12)

在第 1 阶段中,当解“足够接近”零而被认为是基本可行解,或者足够接近正值以用作最优解时,确定解的公差。

autoscale布尔值(默认:False)

设置为 True 以自动执行均衡。如果约束中的数值相差几个数量级,请考虑使用此选项。

rr布尔值(默认:True)

设置为 False 以禁用自动冗余删除。

bland布尔值

如果为 True,则使用 Bland 的反循环规则 [3] 来选择主元以防止循环。如果为 False,则选择应导致更快收敛的解的主元。在极少数情况下,后一种方法可能会发生循环(不收敛)。

unknown_options字典

此特定求解器未使用的可选参数。如果 unknown_options 非空,则会发出警告,其中列出所有未使用的选项。

参考文献

[1]

Dantzig, George B., 线性规划及其扩展. 兰德公司研究报告,普林斯顿大学出版社,新泽西州普林斯顿,1963年。

[2]

Hillier, S.H. 和 Lieberman, G.J. (1995), “数学规划导论”, McGraw-Hill, 第4章。

[3]

Bland, Robert G. 单纯形法新的有限旋转规则. 运筹学数学 (2), 1977: pp. 103-107.