求解线性规划模型最优解

发布于:2025-07-14 ⋅ 阅读:(16) ⋅ 点赞:(0)

在这里插入图片描述

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
既然选择了远方,当不负青春,砥砺前行!


在这里插入图片描述
求解线性规划模型已经有比较成熟的算法。对一般的线性规划模型,常用的解法有图解法、单纯形法等;虽然针对线性规划的理论算法已经比较完善,但是当需要求解的模型的决策变量和约束条件数量比较多时,手工求解模型是十分繁杂甚至不可能的,通常需要借助计算机软件来实现。

目前,求解数学规划模型的常用软件有Python、LINGO、MATLAB等多种软件,本种的数学规划模型使用Python软件求解。

求解线性规划模型可以使用Python的cvxpy库。
cvxpy库与MATLAB中cvx工具库类似,用于求解凸优化问题。cvx与cvxpy都是由加州理工学院的Stephen Boyd教授课题组开发。cvx是用于MATLAB的库,cvxpy是用于Python的库。下载、安装及学习地址如下:
cvx: http://cvxr.com/cvx/; cvxpy: http://www.cvxpy.org/

max⁡z=70x1+50x2+60x3,s.t.{2x1+4x2+3x3≤150,3x1+x2+5x3≤160,7x1+3x2+5x3≤200,xi≥0,i=1,2,3.\begin{aligned} \max z &= 70x_1 + 50x_2 + 60x_3, \\ \text{s.t.} \quad & \left\{ \begin{array}{l} 2x_1 + 4x_2 + 3x_3 \leq 150, \\ 3x_1 + x_2 + 5x_3 \leq 160, \\ 7x_1 + 3x_2 + 5x_3 \leq 200, \\ x_i \geq 0, i = 1, 2, 3. \end{array} \right. \end{aligned}maxzs.t.=70x1+50x2+60x3, 2x1+4x2+3x3150,3x1+x2+5x3160,7x1+3x2+5x3200,xi0,i=1,2,3.

目标函数的最优值为 z=2590.9091z = 2590.9091z=2590.9091

解 利用Python程序,求得最优解为

x1=15.9091,x2=29.5455,x3=0,x_1 = 15.9091, x_2 = 29.5455, x_3 = 0,x1=15.9091,x2=29.5455,x3=0,

计算的Python程序如下:

import cvxpy as cp
from numpy import array

# 定义目标向量
c = array([70, 50, 60])
# 定义约束矩阵
a = array([[2, 4, 3], [3, 1, 5], [7, 3, 5]])
# 定义约束条件的右边向量
b = array([150, 160, 200])
# 定义三个决策变量
x = cp.Variable(3, pos=True)
# 构造目标函数
obj = cp.Maximize(c @ x)
# 构造约束条件
constraints = [a @ x <= b]
prob = cp.Problem(obj, constraints)
# 求解问题
prob.solve(solver='GLPK_MI')
print('最优解为:', x.value)
print('最优值为:', prob.value)

网站公告

今日签到

点亮在社区的每一天
去签到