linprog(method=‘simplex’)

scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simplex', callback=None, options={'maxiter': 5000, 'disp': False, 'presolve': True, 'tol': 1e-12, 'autoscale': False, 'rr': True, 'bland': False}, x0=None)

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

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

\[\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序列,可选

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

method应力

这是“simplex”的特定于方法的文档。 'highs''highs-ds''highs-ipm''interior-point' (默认)和 'revised simplex' 也是可用的。

callback可调用,可选

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

退货
resOptimizeResult

A scipy.optimize.OptimizeResult 由以下字段组成:

X一维阵列

在满足约束的同时使目标函数最小化的决策变量的值。

有趣的浮动

目标函数的最优值 c @ x

松弛一维阵列

松弛变量的(标称为正)值, b_ub - A_ub @ x

圆锥体一维阵列

等式约束的(标称为零)残差, b_eq - A_eq @ x

成功布尔尔

True 当算法成功找到最优解时。

状态集成

表示算法退出状态的整数。

0 :优化已成功终止。

1 :已达到迭代限制。

2 问题似乎是不可行的。

3 :问题似乎是无界的。

4 :遇到了数字上的困难。

消息应力

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

NIT集成

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

参见

有关参数睡觉的文档,请参阅 scipy.optimize.linprog

选项
maxiterINT(默认值:5000)

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

disp布尔值(默认值:FALSE)

设置为 True 如果每次迭代都要将优化状态指示器打印到控制台。

presolve布尔值(默认值:TRUE)

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

tol浮点(默认值:1E-12)

公差,它决定了在阶段1中,解何时“足够接近”零以被认为是基本可行解,或者何时足够接近正值以充当最优解。

autoscale布尔值(默认值:FALSE)

设置为 True 自动执行平衡。如果约束中的数值被几个数量级分隔,请考虑使用此选项。

rr布尔值(默认值:TRUE)

设置为 False 要禁用自动冗余删除,请执行以下操作。

bland布尔尔

如果为True,则使用布兰德的反自行车规则 [3] 若要选择枢轴以防止循环,请执行以下操作。如果为False,请选择轴心点,这样可以更快地获得收敛的解决方案。后一种方法在极少数情况下会循环(不收敛)。

unknown_optionsDICT

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

参考文献

1

乔治·B·丹齐格著,“线性规划与扩展”。普林斯顿大学兰德公司研究研究。出版社,普林斯顿,新泽西州,1963年

2

李国民(1995),“数学规划导论”,麦格劳-希尔出版社,第4章。

3

单纯形法的新的有限旋转规则。运筹学数学(2),1977年:第103-107页。