线性规划原理

线性规划介绍

1. 定义

线性规划(Linear Programming, LP)是运筹学中用于解决最优化问题的一种数学方法。其核心是在一组线性约束条件下,寻找某个线性目标函数的最大值或最小值。这类问题广泛应用于资源分配、生产计划、运输调度等领域。

2. 基本组成部分
  • 决策变量:需要确定的变量,例如:x1,x2,…,xnx_1, x_2, \dots, x_nx1,x2,,xn
  • 目标函数:需最大化或最小化的线性表达式,例如:
    最大化 z=c1x1+c2x2+⋯+cnxn \text{最大化 } z = c_1x_1 + c_2x_2 + \dots + c_nx_n 最大化 z=c1x1+c2x2++cnxn

    最小化 z=c1x1+c2x2+⋯+cnxn \text{最小化 } z = c_1x_1 + c_2x_2 + \dots + c_nx_n 最小化 z=c1x1+c2x2++cnxn
  • 约束条件:决策变量需满足的线性不等式或等式,例如:
    a11x1+a12x2+⋯+a1nxn≤b1 a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n \leq b_1 a11x1+a12x2++a1nxnb1
    am1x1+am2x2+⋯+amnxn=bm a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n = b_m am1x1+am2x2++amnxn=bm

3. 标准形式

线性规划的标准形式通常表示为:
最大化 z=cTx满足 Ax≤b,x≥0 \begin{align*} \text{最大化 } & z = \mathbf{c}^T \mathbf{x} \\ \text{满足 } & A\mathbf{x} \leq \mathbf{b}, \\ & \mathbf{x} \geq \mathbf{0} \end{align*} 最大化 满足 z=cTxAxb,x0
其中:

  • x\mathbf{x}x 是决策变量向量,
  • c\mathbf{c}c 是目标函数系数向量,
  • AAA 是约束系数矩阵,
  • b\mathbf{b}b 是资源限制向量。

4. 求解方法
  • 图解法(仅适用于2个变量):
    通过绘制约束条件的直线,确定可行域(多边形区域),并在顶点处寻找目标函数的最优值。

  • 单纯形法(Simplex Method):
    一种迭代算法,通过遍历可行域的顶点(基本可行解)逐步逼近最优解。由乔治·丹齐格(George Dantzig)于1947年提出。

  • 内点法(Interior-Point Method):
    从可行域内部向边界逼近,适用于大规模问题,计算效率较高。


5. 应用举例
  • 生产计划:工厂需分配资源生产两种产品,目标是利润最大化。

    • 目标函数:利润 = 产品A利润 × 产量A + 产品B利润 × 产量B
    • 约束条件:原材料、工时、市场需求等限制。
  • 运输问题:从多个仓库向多个商店配送货物,目标是运输成本最小化。

    • 目标函数:总成本 = 各路径运输量 × 单位成本之和
    • 约束条件:仓库供应量、商店需求量平衡。

6. 重要概念
  • 可行解:满足所有约束条件的解。
  • 最优解:使目标函数达到极值的可行解。
  • 对偶理论:每个线性规划问题都有一个对应的对偶问题,两者最优值相等(强对偶定理)。

7. 实际工具
  • Excel规划求解:内置插件,适合简单问题。
  • MATLAB:使用linprog函数。
  • Python:通过SciPy.optimize.linprogPuLP库实现。

8. 总结

线性规划通过数学建模将实际问题转化为优化问题,结合高效的算法和工具,能够在资源受限的条件下找到最优决策方案。其核心思想是在有限的约束中探索可能性,追求目标的最优平衡

9.具体示例:工厂生产计划优化
问题描述

某工厂生产两种产品 AB,生产过程中需要消耗原材料和工时。工厂每天可用资源如下:

  • 原材料总量:100 公斤
  • 总工时:120 小时

已知:

  • 生产 1 单位 A 需要:2 公斤原材料,1 小时工时,利润为 50 元。
  • 生产 1 单位 B 需要:3 公斤原材料,4 小时工时,利润为 80 元。

目标:制定生产计划,使每日总利润最大。


步骤 1:定义决策变量

设:

  • x1x_1x1 = 产品 A 的日产量(单位)
  • x2x_2x2 = 产品 B 的日产量(单位)

步骤 2:建立目标函数

总利润需最大化:
最大化 z=50x1+80x2 \text{最大化 } z = 50x_1 + 80x_2 最大化 z=50x1+80x2


步骤 3:列出约束条件
  1. 原材料约束(不超过 100 公斤):
    2x1+3x2≤100 2x_1 + 3x_2 \leq 100 2x1+3x2100
  2. 工时约束(不超过 120 小时):
    x1+4x2≤120 x_1 + 4x_2 \leq 120 x1+4x2120
  3. 非负约束(产量不可为负):
    x1≥0,x2≥0 x_1 \geq 0, \quad x_2 \geq 0 x10,x20

步骤 4:转化为标准形式

引入松弛变量 s1s_1s1s2s_2s2,将不等式转为等式:
{2x1+3x2+s1=100x1+4x2+s2=120x1,x2,s1,s2≥0 \begin{cases} 2x_1 + 3x_2 + s_1 = 100 \\ x_1 + 4x_2 + s_2 = 120 \\ x_1, x_2, s_1, s_2 \geq 0 \end{cases} 2x1+3x2+s1=100x1+4x2+s2=120x1,x2,s1,s20


步骤 5:求解(图解法)

由于仅有两个变量,可用图解法直观分析:

  1. 绘制约束线
    • 原材料约束线:2x1+3x2=1002x_1 + 3x_2 = 1002x1+3x2=100,连接点 (50,0)(50, 0)(50,0)(0,33.3)(0, 33.3)(0,33.3)
    • 工时约束线:x1+4x2=120x_1 + 4x_2 = 120x1+4x2=120,连接点 (120,0)(120, 0)(120,0)(0,30)(0, 30)(0,30)
  2. 确定可行域
    • 两约束线与坐标轴围成的多边形区域(见示意图)。
  3. 计算顶点目标函数值
    • 顶点 1(0,0)(0, 0)(0,0),利润 z=0z = 0z=0 元。
    • 顶点 2(50,0)(50, 0)(50,0),利润 z=50×50=2500z = 50 \times 50 = 2500z=50×50=2500 元。
    • 顶点 3:交点解方程:
      {2x1+3x2=100x1+4x2=120 \begin{cases} 2x_1 + 3x_2 = 100 \\ x_1 + 4x_2 = 120 \end{cases} {2x1+3x2=100x1+4x2=120
      解得 x1=16x_1 = 16x1=16, x2=26x_2 = 26x2=26,利润 z=50×16+80×26=2880z = 50 \times 16 + 80 \times 26 = 2880z=50×16+80×26=2880 元。
    • 顶点 4(0,30)(0, 30)(0,30),利润 z=80×30=2400z = 80 \times 30 = 2400z=80×30=2400 元。

步骤 6:确定最优解

比较顶点利润,最优解为:
x1=16,x2=26 x_1 = 16, \quad x_2 = 26 x1=16,x2=26
此时总利润最大为 2880 元,且满足所有约束:

  • 原材料消耗:2×16+3×26=1002 \times 16 + 3 \times 26 = 1002×16+3×26=100 公斤(恰好用完)。
  • 工时消耗:16+4×26=12016 + 4 \times 26 = 12016+4×26=120 小时(恰好用完)。

实际意义

工厂应每日生产 16 单位 A26 单位 B,可实现资源充分利用和利润最大化。若需调整(如市场需求变化),可通过敏感度分析评估参数变动对结果的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值