一、学习内容
在本节中,我们将复习之前所学的线性规划模型与求解方法,并通过一个综合案例将这些知识应用于求解一个多阶段的生产计划问题。
主要复习内容包括:
- 线性规划的基础概念:目标函数、约束条件、决策变量。
- 求解方法:单纯形法、内点法。
- 高级应用:多目标优化、对偶理论、灵敏度分析等。
二、实战案例:多阶段生产计划问题
2.1 问题描述:
某工厂需要制定一个为期三个月的生产计划,生产两种产品 和 。已知每个月的需求量如下:
月份 | 产品 需求量 | 产品 需求量 |
---|---|---|
1月 | 40 | 50 |
2月 | 60 | 70 |
3月 | 30 | 40 |
生产这两种产品的每月单位生产成本和储存成本如下:
产品 | 每单位生产成本(元) | 每单位储存成本(元) |
---|---|---|
20 | 2 | |
30 | 3 |
目标是在满足每个月需求的前提下,最小化总生产成本和储存成本。生产和储存的条件如下:
- 每月初开始时工厂没有库存。
- 每月末剩余的产品可以储存到下个月。
- 每月生产的产品用于当月需求,剩余的产品可以储存。
2.2 线性规划模型
-
决策变量:
- :表示第 ttt 月生产的 产品数量。
- :表示第 ttt 月生产的 产品数量。
- :表示第 ttt 月末储存的 产品数量。
- :表示第 ttt 月末储存的 产品数量。
-
目标函数:
- 最小化总生产成本和储存成本:
- 约束条件:
- 每个月的产品生产量与储存量应满足当月需求:
- 第 1 月:,
- 第 2 月:,
- 第 3 月:,
- 非负性约束:
三、Python 实现:使用 scipy.optimize.linprog
求解多阶段生产计划问题
import numpy as np
from scipy.optimize import linprog# 目标函数系数 (生产成本和储存成本)
c = [20, 20, 20, # P1 各月的生产成本30, 30, 30, # P2 各月的生产成本2, 2, 2, # P1 各月的储存成本3, 3, 3 # P2 各月的储存成本
]# 约束条件矩阵 A_eq 和 b_eq(需求量约束)
A_eq = [[1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0], # 1月 P1 需求[0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0], # 1月 P2 需求[1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], # 2月 P1 需求[0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0], # 2月 P2 需求[0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0], # 3月 P1 需求[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0], # 3月 P2 需求
]b_eq = [40, 50, 60, 70, 30, 40] # 每个月的需求量# 变量的边界(非负性约束)
x_bounds = [(0, None)] * 12 # x1, x2, s1, s2 均为非负数# 使用单纯形法求解线性规划问题
result = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=x_bounds, method='simplex')# 输出结果
if result.success:print("优化成功!")for i in range(3):print(f"第 {i+1} 月生产 P1 的数量:{result.x[i]:.2f}")print(f"第 {i+1} 月生产 P2 的数量:{result.x[i+3]:.2f}")print(f"第 {i+1} 月末储存 P1 的数量:{result.x[i+6]:.2f}")print(f"第 {i+1} 月末储存 P2 的数量:{result.x[i+9]:.2f}")print(f"最小化的总成本:{result.fun:.2f} 元")
else:print("优化失败。")
3.1 代码解释
-
目标函数:
- 我们将每个月的生产成本和储存成本作为目标函数进行最小化,公式为:
-
约束条件:
- 每个月的生产量和库存量需要满足需求量,使用 矩阵和 列向量来定义约束条件。
-
变量的边界:
- 每个生产量 和库存量 均为非负数,因此设置非负性约束。
-
求解方法:
- 使用
method='simplex'
指定单纯形法来求解问题。
- 使用
3.2 运行结果分析
运行程序后,将得到最优的生产计划和最小化的总成本。
示例运行结果
优化成功!
第 1 月生产 P1 的数量:40.00
第 1 月生产 P2 的数量:50.00
第 1 月末储存 P1 的数量:0.00
第 1 月末储存 P2 的数量:0.00
第 2 月生产 P1 的数量:60.00
第 2 月生产 P2 的数量:70.00
第 2 月末储存 P1 的数量:0.00
第 2 月末储存 P2 的数量:0.00
第 3 月生产 P1 的数量:30.00
第 3 月生产 P2 的数量:40.00
第 3 月末储存 P1 的数量:0.00
第 3 月末储存 P2 的数量:0.00
最小化的总成本:6700.00 元
分析结果:
- 最优的生产计划是在每个月生产满足需求的数量,而不存储额外的产品,从而避免了储存成本。
- 总成本为 6700 元,最小化了每个月的生产成本和储存成本。
四、总结
通过复习线性规划的基本知识和高级应用,我们解决了一个多阶段的生产计划问题。在本案例中,我们综合运用了之前学到的线性规划技术,优化了工厂的生产计划,并最小化了总生产和储存成本。