Python 规划类算法之线性规划

一、线性规划的概念

规划类算法之线性规划:研究一类条件极值问题,即在一组线性约束条件(包括等式及不等式约束)下,找出一个线性函数的最大值或最小值。

二、线性规划的MATLAB标准形式

min cTx such that Axb
其中,cx为n维向量;b为m维向量;A为m X n矩阵。
eg.
线性规划
max ⁡**c**^T^**x** such that **Ax**≥**b**
的MATLAB标准型为
min⁡ -**c**^T^**x** such that- **Ax**≤-**b**

三、实例

在此用 python 求解,需用 scipy 和 numpy 库的支持

from scipy import optimize
import numpy as np

#求解函数
res =
optimize.linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
#目标函数最小值
print(res.fun)
#最优解
print(res.x)

例:求解线性规划问题
maxmize:
x1+7x2-5x3
s.t.:
x1+x2+x3=5
3x1-4x2+5x3>=8
6x1+3x2+2x3<=15
xi>=0
代码:

from scipy import optimize
import numpy as np

c=np.array([1,7,-5])
A=np.array([[-3,4,-5],[6,3,2]])
b=np.array([-8,15])
A_eq=np.array([[1,1,1]])
b_eq=np.array([5])
lim1=(0,5)
lim2=(0,5)
lim3=(0,5)

res=optimize.linprog(-c,A,b,A_eq,b_eq,bounds=(lim1,lim2,lim3))
print (res)


result:
     con: array([0.])
     fun: -0.41176470588235325
 message: 'Optimization terminated successfully.'
     nit: 6
   slack: array([ 1.77635684e-15, -3.55271368e-15])
  status: 0
 success: True
       x: array([0.82352941, 1.70588235, 2.47058824])

最后结果取正,最大值为:-fun=0.41176470588235325.

你可能感兴趣的:(Python 规划类算法之线性规划)