线性规划

求解下面的线性规划问题
max:
z = 2x1 + 3x2 - 5x3
st:
x1 + x2 + x3 = 7
2x1 - 5x2 + x3 >=10
x1 + 3x2 + x3 <= 12
x1,x2,x3 >=0
代码

from scipy import optimize as op
import numpy as np
c=np.array([2,3,-5]) #c指是要求最大值的函数的系数数组

A_ub=np.array([[-2,5,-1],[1,3,1]]) #A_ub是应该是不等式未知量的系数矩阵,不等式指的是<=的不等式,如果是>=,乘个负号就行了

B_ub=np.array([-10,12]) #B_ub就是不等式的右边

A_eq=np.array([[1,1,1]]) #A_eq就是其中等式的未知量系数矩阵

B_eq=np.array([7]) #B_eq就是等式右边
x1=(0,7)
x2=(0,7)
x3=(0,7)
res=op.linprog(-c,A_ub,B_ub,A_eq,B_eq,bounds=(x1,x2,x3)) #bounds指的就是每个未知量的范围
print(res)

结果
线性规划
总结
重点关注的就是第二行和最后一行了,第二行是整个结果,最后一行是每个x的结果。linprog默认求解的是最小值,如果要求最大值,只需将c取相反数,得到的是最大值的相反数,因此最大值结果为14.57。

上一篇:Linux - gtest测试框架的使用


下一篇:爬虫