单纯形法之大M法

1. 问题背景与标准化

在求解某些线性规划问题时,往往难以直接找到初始的基本可行解。特别是当约束中存在等式或 “≥” 类型的不等式时,我们需要引入人工变量来构造一个初始可行解。

考虑如下标准形式问题(假设为最大化问题):

\begin{aligned} \text{Maximize } & Z = c^T x, \\ \text{Subject to } & Ax = b, \\ & x \ge 0. \end{aligned}

当约束中有“=”或“≥”约束时,为使模型满足“基本变量个数等于约束个数”的条件,我们引入人工变量 a≥0 。


2. 引入人工变量与大 M 惩罚

2.1. 人工变量的引入

  • 对于形如

    Ax = b

    的约束,如果直接采用松弛或剩余变量无法得到初始可行解,则引入人工变量 a≥0 ,使约束变为

    Ax + a = b..
  • 对于 “≥” 约束,同样引入剩余变量后再补充人工变量,保证约束满足等式形式。

2.2. 修改目标函数

为避免在最终解中保留人工变量,需在目标函数中给予这些变量一个巨大的惩罚。对于最大化问题,通常将人工变量前的系数设为 −M (其中 M 是一个非常大的正数),修改后的目标函数为:

\text{Maximize } Z = c^T x - M \sum_{i\in \mathcal{A}} a_i,

其中 \mathcal{A} 表示所有人工变量的集合。这样做的目的在于:

  • 若人工变量在最优解中不为零,则由于扣分 −M 其目标值会大幅降低,迫使求解过程中尽量消除人工变量;

  • 当存在一个可行解不需要使用人工变量时,最终解会将所有人工变量淘汰(即取零)。


3. 构造初始单纯型表

将原问题中所有变量(原决策变量、松弛/剩余变量、人工变量)统一构成向量,再构造单纯型表。设扩展后的变量记为

x' = (x, \, s, \, a)

目标函数写成:

相应的约束矩阵也经过扩充,使得原约束变为标准等式形式。

初始时,我们选取人工变量作为基本变量,从而构造一个初始基本可行解(注意:此解可能并非真实意义下的“可行解”,因为人工变量仅为辅助求解而引入)。


4. 大 M 法的单纯型迭代过程

4.1. 目标函数的重写

类似于普通单纯型法,我们把目标函数用基变量和非基变量表示。令 B 为当前基矩阵(其中包含人工变量),则基本解为

x_B = B^{-1}b.

目标函数可以写为

Z = c_B^T x_B + (c_N^T - c_B^T B^{-1}N)x_N.

其中:

  • c_B 中可能包含 −M 对应的人工变量;

  • 检验数(相对成本)为

    \overline{c_j} = c_j - c_B^T B^{-1}A_j.

4.2. 迭代与淘汰人工变量

在迭代过程中,由于目标函数中对人工变量赋予了极大负值 −M ,如果存在能使目标函数改善的换入操作,就会倾向于选择那些能使人工变量离开基的换入变量。单纯型法的迭代步骤与普通方法类似:

  • 进基变量选择:检查所有非基变量的检验数,若存在 \overline{c_j} > 0(对于最大化问题),则选择最有利的变量进基;

  • 出基变量选择:计算方向向量,利用最小比值法确定允许步长和出基变量。

关键在于:

  • 当存在一个完全可行的解(即一个解不需要使用人工变量)时,经过有限步迭代,所有人工变量将被淘汰(或其值收缩为零)。

  • 若最终得到的最优解中仍含有正值的人工变量,则表明原问题没有可行解。


5. 数学证明与思想总结

5.1. 惩罚机制确保解的“真实性”

由于引入了惩罚系数 M ,在目标函数中任何非零的人工变量都会使目标值大幅下降。设若在某一基本解中某个人工变量 a_i 保持正值,则对应目标函数贡献为 M\, a_i

  • 当 M 足够大时,任何含有非零人工变量的解都不是最优解;

  • 如果存在一个可行解(即不存在必须依赖人工变量)时,最优解必然使所有人工变量取零。

5.2. 终止与可行性判断

  • 终止条件:当所有非基变量的检验数都满足最优性条件时,算法终止。

  • 无可行解判断:若在最优解中发现有某个人工变量 a_i > 0,则说明原问题无可行解。

5.3. 收敛性与大 M 的选择

  • 理论上,M 应当取足够大,使得其影响在求解过程中远大于其他系数的作用,但实际计算中需避免因 M 过大而引起数值不稳定;

  • 大 M 法证明的核心在于:在有限次迭代内,若存在一个不依赖人工变量的可行解,则算法必然能将所有人工变量驱逐出基,并找到该最优解。


6. 总结

大 M 法的理论推导过程主要包括以下几个步骤:

  1. 问题标准化:将问题写为等式约束形式,必要时引入松弛、剩余和人工变量。

  2. 目标函数修改:在目标函数中对人工变量施加巨大的惩罚(对于最大化问题,人工变量前系数取 −M )。

  3. 构造初始单纯型表:以包含人工变量的基本可行解作为起始点。

  4. 单纯型迭代:按照单纯型法的标准步骤进行迭代,通过换基操作改善目标函数值,同时尽量淘汰人工变量。

  5. 终止与判断:若最终最优解中所有人工变量均为零,则得到原问题的最优解;反之,则原问题无可行解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤劳的进取家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值