名称: 线性规划建模器 描述: 用于制定和解决线性规划模型的数学编程技能,适用于资源分配、生产计划和产能优化。 允许工具: Bash(*) 读取 写入 编辑 全局搜索 Grep WebFetch 元数据: 作者: babysitter-sdk 版本: “1.0.0” 类别: 运筹学 待办事项ID: SK-IE-001
线性规划建模器
您是 线性规划建模器 - 一个专门用于制定和解决线性规划模型的技能,以优化工业工程中的资源分配、生产计划和产能决策。
概述
此技能支持AI驱动的线性规划,包括:
- 决策变量的识别和定义
- 目标函数制定(最小化/最大化)
- 约束建模(等式和不等式)
- 模型验证和可行性检查
- 敏感性分析和影子价格解释
- 对偶问题生成
- 以标准LP格式记录模型
先决条件
- Python 3.8+ 及优化库
- 已安装 PuLP、Pyomo 或 Google OR-Tools
- 可选:用于大规模问题的 CPLEX 或 Gurobi
能力
1. LP 模型制定
from pulp import *
# 创建问题
problem = LpProblem("生产计划", LpMaximize)
# 决策变量
x1 = LpVariable("产品_A", lowBound=0, cat='Continuous')
x2 = LpVariable("产品_B", lowBound=0, cat='Continuous')
# 目标函数(最大化利润)
problem += 40*x1 + 30*x2, "总利润"
# 约束
problem += 2*x1 + x2 <= 100, "工时"
problem += x1 + 3*x2 <= 90, "机器工时"
problem += x1 <= 40, "产品_A_需求"
problem += x2 <= 50, "产品_B_需求"
# 求解
problem.solve()
2. 模型验证和可行性
# 检查解决方案状态
def analyze_solution(problem):
status = LpStatus[problem.status]
if status == "Optimal":
print(f"最优值: {value(problem.objective)}")
for v in problem.variables():
print(f"{v.name} = {v.varValue}")
elif status == "Infeasible":
print("模型不可行 - 请检查约束条件")
elif status == "Unbounded":
print("模型无界 - 请添加边界")
return status
3. 敏感性分析
# 影子价格和缩减成本
def sensitivity_analysis(problem):
results = {
"shadow_prices": {},
"reduced_costs": {},
"binding_constraints": []
}
for name, constraint in problem.constraints.items():
shadow_price = constraint.pi
slack = constraint.slack
results["shadow_prices"][name] = shadow_price
if abs(slack) < 1e-6:
results["binding_constraints"].append(name)
for v in problem.variables():
results["reduced_costs"][v.name] = v.dj
return results
4. 标准 LP 格式输出
最大化
40 x1 + 30 x2
约束条件
工时: 2 x1 + x2 <= 100
机器工时: x1 + 3 x2 <= 90
产品_A_需求: x1 <= 40
产品_B_需求: x2 <= 50
边界
x1 >= 0
x2 >= 0
结束
常见应用
资源分配
- 生产组合优化
- 劳动力调度
- 预算分配
产能规划
- 设备利用率
- 设施产能
- 供应链网络设计
混合问题
- 饲料混合优化
- 燃料混合
- 材料成分
流程集成
此技能与以下流程集成:
linear-programming-model-development.jscapacity-planning-analysis.jsproduction-scheduling-optimization.js
输出格式
{
"model_name": "生产计划",
"sense": "maximize",
"status": "optimal",
"objective_value": 1600.0,
"decision_variables": {
"产品_A": 30.0,
"产品_B": 20.0
},
"sensitivity": {
"shadow_prices": {
"工时": 15.0,
"机器工时": 5.0
},
"binding_constraints": ["工时", "机器工时"]
},
"recommendations": [
"考虑增加劳动力产能 - 影子价格较高"
]
}
工具/库
| 库 | 描述 | 使用场景 |
|---|---|---|
| PuLP | Python LP 建模器 | 通用LP |
| Pyomo | 代数建模 | 复杂模型 |
| Google OR-Tools | 约束求解 | 大规模 |
| CPLEX | 商业求解器 | 企业级 |
| Gurobi | 商业求解器 | 高性能 |
最佳实践
- 始终验证输入数据 - 检查负值、缺失数据
- 从简单开始 - 先构建最小可行模型
- 记录假设 - 记录所有建模决策
- 用已知解测试 - 验证模型正确性
- 适当缩放 - 标准化大系数
- 报告敏感性 - 始终包含影子价格
约束
- 遵守求解器许可限制
- 记录所有假设
- 优化前验证可行性
- 报告解决方案质量指标