当前位置: 首页 > news >正文

线性规划(Linear Programming, LP)

线性规划(Linear Programming, LP)——这是运筹学中最基础且应用最广泛的优化方法之一。


什么是线性规划?

线性规划是在线性约束条件下,求解线性目标函数最大值或最小值的数学优化方法。

标准形式

minimizecTxsubject toAx≤bx≥0 \begin{aligned} \text{minimize} \quad & \mathbf{c}^T \mathbf{x} \\ \text{subject to} \quad & A\mathbf{x} \leq \mathbf{b} \\ & \mathbf{x} \geq \mathbf{0} \end{aligned}minimizesubject tocTxAxbx0

其中:

  • x∈Rn\mathbf{x} \in \mathbb{R}^nxRn:决策变量
  • c∈Rn\mathbf{c} \in \mathbb{R}^ncRn:目标函数系数
  • A∈Rm×nA \in \mathbb{R}^{m \times n}ARm×n:约束矩阵
  • b∈Rm\mathbf{b} \in \mathbb{R}^mbRm:约束右端项

核心算法

算法时间复杂度特点
单纯形法(Simplex)指数级(最坏)/ 多项式(平均)实际效率极高,几何直观
内点法(Interior Point)多项式时间O(n3.5L)O(n^{3.5}L)O(n3.5L)大规模问题更优
椭球法(Ellipsoid)多项式时间理论意义大于实用

经典应用案例

1. 生产计划优化

某工厂生产A、B两种产品:

  • A产品利润:40元/件,需2小时机器时间 + 1小时人工
  • B产品利润:60元/件,需1小时机器时间 + 2小时人工
  • 资源限制:机器100小时,人工80小时

模型:
max⁡40x1+60x2s.t.2x1+x2≤100x1+2x2≤80x1,x2≥0 \begin{aligned} \max \quad & 40x_1 + 60x_2 \\ \text{s.t.} \quad & 2x_1 + x_2 \leq 100 \\ & x_1 + 2x_2 \leq 80 \\ & x_1, x_2 \geq 0 \end{aligned}maxs.t.40x1+60x22x1+x2100x1+2x280x1,x20

2. 运输问题(最小成本流)

将货物从多个仓库运到多个商店,最小化总运输成本。

3. 投资组合优化

在给定风险约束下最大化收益,或在目标收益下最小化风险。


几何解释

线性规划的可行域是凸多面体,最优解必定出现在**顶点(极点)**上。

可行域(阴影多边形) /\ / \ / \ ← 目标函数等值线 / ★ \ (斜向虚线) / 最优解 \ /__________\ 顶点1 顶点2 顶点3

Python 求解示例

importnumpyasnpfromscipy.optimizeimportlinprog# 目标函数系数(注意:linprog默认求最小值,所以取负)c=[-40,-60]# 不等式约束:Ax <= bA=[[2,1],# 机器时间约束[1,2]]# 人工约束b=[100,80]# 变量非负约束bounds=[(0,None),(0,None)]# 求解result=linprog(c,A_ub=A,b_ub=b,bounds=bounds,method='highs')print(f"最优解: x1={result.x[0]:.2f}, x2={result.x[1]:.2f}")print(f"最大利润:{-result.fun:.2f}元")

输出:

最优解: x1=40.00, x2=20.00 最大利润: 2800.00元

对偶理论

每个线性规划(原问题)都有对应的对偶问题

原问题(Primal)对偶问题(Dual)
mincTxc^TxcTxmaxbTyb^TybTy
s.t.Ax≥bAx \geq bAxbs.t.ATy≤cA^Ty \leq cATyc
x≥0x \geq 0x0y≥0y \geq 0y0

强对偶定理:若原问题有最优解,则对偶问题也有最优解,且最优值相等。


扩展变体

类型特点求解方法
整数线性规划(ILP)变量需取整数值分支定界、割平面法
混合整数规划(MIP)部分整数、部分连续Branch-and-Cut
多目标规划多个冲突目标帕累托最优、加权求和
随机规划含随机参数两阶段法、机会约束

http://www.jsqmd.com/news/482845/

相关文章:

  • 基于微信小程序的勤工俭学系统设计与实现
  • Phi-3-vision-128k-instruct代码实例:Python调用vLLM API实现图片问答
  • SpringBoot新手避坑指南:从零搭建Web项目到Thymeleaf模板实战
  • 立创EDA实战:TDA1521双声道HiFi功放板发烧级元件选型与PCB布局解析
  • 避坑指南:1688/抖音店铺批量备注最容易出错的3个环节(附正确操作截图)
  • Qwen3-14B开源大模型实践:Qwen3-14b_int4_awq在vLLM下支持function calling实测
  • 为什么92%的Dify团队仍在用错误方式统计Token成本?3个被官方文档忽略的计费陷阱与权威校验脚本
  • CLIP图文匹配工具实测:上传宠物图,自动识别“猫”还是“狗”
  • Qwen3-14b_int4_awq实战入门:基于Chainlit的Web化文本生成应用搭建
  • Unity2023中Dynamic Bone的实战应用:如何为女性角色添加逼真胸部物理效果(附参数调优指南)
  • 【仅限头部平台内部流出】MCP Sampling高级开发手册V3.2:含17个未公开API参数、8种跨服务采样对齐策略
  • 【新手必看】CrackMe下载失败?被删?打不开?
  • C++学习笔记
  • 外卖平台AI智能问答客服系统架构设计与实战优化
  • 老旧设备焕新:OpenCore Legacy Patcher的逆袭升级方案
  • 【2026年最新600套毕设项目分享】springboot基层智能化人员调度系统(14154)
  • PPT生成工具大揭秘!谁才是你的效率神器?
  • OpenClaw 接入飞书完整教程10分钟搭建专属 AI 助手
  • 立创·实战派ESP32-S3开发板全套资料(原理图/固件/例程)百度网盘下载中心
  • 3个技巧让AMD显卡实现Blender性能优化
  • 码农生存指南:从996到财务自由
  • 基于Web的留守儿童爱心网站的设计与实现
  • 立创ESP32-S3小智AI开发板:从开源复刻到新手友好的硬件设计优化之路
  • Vue智能客服中3D人物渲染的性能优化实战
  • genshin-wish-export:解决游戏数据管理难题的开源数据管理工具
  • 机器学习周报三十六
  • Phi-4-reasoning-vision-15B部署案例:curl health返回200但Web页面空白的CSS资源加载排查
  • 基于大语言模型的毕设实战:AI辅助开发全流程避坑指南
  • 精准掌控:MouseTester开源鼠标性能分析工具全解析
  • 手把手教你解决Moxa UPort1150在Linux下的驱动加载失败问题