利用python中的scipy模块做线性规划

为数学建模准备。
scipy.optimize.linprog
参数选择:linprog(c, A_ub, b_ub, A_ed, b_ed, bounds=None)
参数解释—>>> c:价值向量,只规划最小值,若规划最大值需改为-c,但注意得出的结果应再加负号即为所求最大值;
A_ub和b_ub:分别对应于不等式约束的向量,注意只取小于等于时的数组,而且A_ub必须为二维数组;
A_ed和b_ed:分别对应于等式约束的向量,取法同上;
bounds:为决策向量的上下界,例bounds=([0, None], [None, None])表示第一个元素的取值大于等于0,第二个为实数取值。
案例:min f = -2x0 + 4x1
s.t. -3x0 +x1 <=6
x0 + 2x1 >= 4
x0 + 3x1 = 4
x1 >= -3

import numpy as np
from scipy.optimize import linprog 
c = np.array([-2, 4])
a_ub = np.array([[-3, 1], [-1, -2]])
b_ub = np.array([6, -4])
a_ed = np.array([[1, 3]])
b_ed = np.array([4])

linprog(c, a_ub, b_ub, a_ed, b_ed, bounds=([None, None], [-3, None]))

输出结果为:

con: array([0.])
fun: -38.0
message: 'Optimization terminated successfully.'
nit: 5
slack: array([48.,  3.])
status: 0
success: True
x: array([13., -3.])

fun为最优解的值,x为取得最优解时对应的决策向量的取值。

你可能感兴趣的:(自学)