Python线性规划求解方法详解 | 高效解决优化问题
- Python
- 2025-07-18
- 1878
Python线性规划求解方法详解
使用SciPy和PuLP库解决优化问题
什么是线性规划?
线性规划(Linear Programming)是运筹学中一种优化方法,用于在给定线性约束条件下最大化或最小化线性目标函数。它在工业、商业、经济等领域有广泛应用。
标准线性规划问题形式:
最大化(或最小化):
cTx
满足约束条件:
A·x ≤ b
x ≥ 0
Python求解库介绍
SciPy库
SciPy的linprog()
函数提供了一种简单的方法来解决线性规划问题。它基于单纯形法或内点法实现。
优点:简单易用,适合中小规模问题
缺点:功能相对基础,不支持整数规划
PuLP库
PuLP是一个开源的线性规划建模库,提供了更直观的问题描述方式,支持多种求解器。
优点:建模灵活,支持整数规划,可扩展性强
缺点:需要额外安装求解器
使用SciPy求解线性规划
示例问题:生产优化
某工厂生产两种产品A和B:
- 产品A每单位利润100元,需要2小时加工时间和1小时装配时间
- 产品B每单位利润150元,需要1小时加工时间和3小时装配时间
- 每天可用加工时间120小时,装配时间90小时
目标:最大化总利润
数学模型:
最大化:z = 100x1 + 150x2
约束条件:
2x1 + x2 ≤ 120
(加工时间约束)
x1 + 3x2 ≤ 90
(装配时间约束)
x1 ≥ 0, x2 ≥ 0
SciPy求解代码
from scipy.optimize import linprog # 定义目标函数系数(注意:linprog默认最小化,所以取负号) c = [-100, -150] # 最大化问题转换为最小化 # 不等式约束条件(A_ub * x <= b_ub) A = [[2, 1], [1, 3]] b = [120, 90] # 变量边界(x1 >= 0, x2 >= 0) x_bounds = (0, None) y_bounds = (0, None) # 求解线性规划问题 result = linprog(c, A_ub=A, b_ub=b, bounds=[x_bounds, y_bounds], method='highs') # 输出结果 print(f"优化状态: {result.message}") print(f"最优解: 生产A产品 {round(result.x[0])} 单位, 生产B产品 {round(result.x[1])} 单位") print(f"最大利润: {-round(result.fun)} 元") # 转换回最大化问题的结果
使用PuLP求解线性规划
示例问题:饮食优化
设计最低成本的饮食方案,满足营养需求:
- 食物A:每单位6元,含维生素5单位,蛋白质3单位
- 食物B:每单位8元,含维生素2单位,蛋白质4单位
- 每天至少需要20单位维生素和15单位蛋白质
目标:最小化总成本
数学模型:
最小化:z = 6x1 + 8x2
约束条件:
5x1 + 2x2 ≥ 20
(维生素约束)
3x1 + 4x2 ≥ 15
(蛋白质约束)
x1 ≥ 0, x2 ≥ 0
PuLP求解代码
import pulp # 创建最小化问题 prob = pulp.LpProblem("Diet_Optimization", pulp.LpMinimize) # 定义决策变量 x1 = pulp.LpVariable("Food_A", lowBound=0, cat='Continuous') # 食物A的数量 x2 = pulp.LpVariable("Food_B", lowBound=0, cat='Continuous') # 食物B的数量 # 定义目标函数(最小化成本) prob += 6*x1 + 8*x2, "Total_Cost" # 添加约束条件 prob += 5*x1 + 2*x2 >= 20, "Vitamin_Requirement" prob += 3*x1 + 4*x2 >= 15, "Protein_Requirement" # 求解问题 prob.solve() # 输出结果 print(f"优化状态: {pulp.LpStatus[prob.status]}") print(f"最优解: 食物A = {x1.varValue:.2f} 单位, 食物B = {x2.varValue:.2f} 单位") print(f"最小成本: ¥{pulp.value(prob.objective):.2f}")
线性规划应用场景
生产制造
优化生产计划、资源分配、库存管理,最大化利润或最小化成本
物流运输
解决货物运输路径优化、车辆调度问题,降低运输成本
金融投资
资产组合优化,在风险约束下最大化收益
能源管理
优化能源生产和分配,降低成本并满足需求
本文由ChaoDangXin于2025-07-18发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20255872.html
发表评论