1. 问题背景与标准化
在求解某些线性规划问题时,往往难以直接找到初始的基本可行解。特别是当约束中存在等式或 “≥” 类型的不等式时,我们需要引入人工变量来构造一个初始可行解。
考虑如下标准形式问题(假设为最大化问题):
当约束中有“=”或“≥”约束时,为使模型满足“基本变量个数等于约束个数”的条件,我们引入人工变量 a≥0 。
2. 引入人工变量与大 M 惩罚
2.1. 人工变量的引入
-
对于形如
的约束,如果直接采用松弛或剩余变量无法得到初始可行解,则引入人工变量 a≥0 ,使约束变为
.
-
对于 “≥” 约束,同样引入剩余变量后再补充人工变量,保证约束满足等式形式。
2.2. 修改目标函数
为避免在最终解中保留人工变量,需在目标函数中给予这些变量一个巨大的惩罚。对于最大化问题,通常将人工变量前的系数设为 −M (其中 M 是一个非常大的正数),修改后的目标函数为:
其中 表示所有人工变量的集合。这样做的目的在于:
-
若人工变量在最优解中不为零,则由于扣分 −M 其目标值会大幅降低,迫使求解过程中尽量消除人工变量;
-
当存在一个可行解不需要使用人工变量时,最终解会将所有人工变量淘汰(即取零)。
3. 构造初始单纯型表
将原问题中所有变量(原决策变量、松弛/剩余变量、人工变量)统一构成向量,再构造单纯型表。设扩展后的变量记为
目标函数写成:
相应的约束矩阵也经过扩充,使得原约束变为标准等式形式。
初始时,我们选取人工变量作为基本变量,从而构造一个初始基本可行解(注意:此解可能并非真实意义下的“可行解”,因为人工变量仅为辅助求解而引入)。
4. 大 M 法的单纯型迭代过程
4.1. 目标函数的重写
类似于普通单纯型法,我们把目标函数用基变量和非基变量表示。令 B 为当前基矩阵(其中包含人工变量),则基本解为
目标函数可以写为
其中:
-
中可能包含 −M 对应的人工变量;
-
检验数(相对成本)为
4.2. 迭代与淘汰人工变量
在迭代过程中,由于目标函数中对人工变量赋予了极大负值 −M ,如果存在能使目标函数改善的换入操作,就会倾向于选择那些能使人工变量离开基的换入变量。单纯型法的迭代步骤与普通方法类似:
-
进基变量选择:检查所有非基变量的检验数,若存在
(对于最大化问题),则选择最有利的变量进基;
-
出基变量选择:计算方向向量,利用最小比值法确定允许步长和出基变量。
关键在于:
-
当存在一个完全可行的解(即一个解不需要使用人工变量)时,经过有限步迭代,所有人工变量将被淘汰(或其值收缩为零)。
-
若最终得到的最优解中仍含有正值的人工变量,则表明原问题没有可行解。
5. 数学证明与思想总结
5.1. 惩罚机制确保解的“真实性”
由于引入了惩罚系数 M ,在目标函数中任何非零的人工变量都会使目标值大幅下降。设若在某一基本解中某个人工变量 保持正值,则对应目标函数贡献为
。
-
当 M 足够大时,任何含有非零人工变量的解都不是最优解;
-
如果存在一个可行解(即不存在必须依赖人工变量)时,最优解必然使所有人工变量取零。
5.2. 终止与可行性判断
-
终止条件:当所有非基变量的检验数都满足最优性条件时,算法终止。
-
无可行解判断:若在最优解中发现有某个人工变量
,则说明原问题无可行解。
5.3. 收敛性与大 M 的选择
-
理论上,M 应当取足够大,使得其影响在求解过程中远大于其他系数的作用,但实际计算中需避免因 M 过大而引起数值不稳定;
-
大 M 法证明的核心在于:在有限次迭代内,若存在一个不依赖人工变量的可行解,则算法必然能将所有人工变量驱逐出基,并找到该最优解。
6. 总结
大 M 法的理论推导过程主要包括以下几个步骤:
-
问题标准化:将问题写为等式约束形式,必要时引入松弛、剩余和人工变量。
-
目标函数修改:在目标函数中对人工变量施加巨大的惩罚(对于最大化问题,人工变量前系数取 −M )。
-
构造初始单纯型表:以包含人工变量的基本可行解作为起始点。
-
单纯型迭代:按照单纯型法的标准步骤进行迭代,通过换基操作改善目标函数值,同时尽量淘汰人工变量。
-
终止与判断:若最终最优解中所有人工变量均为零,则得到原问题的最优解;反之,则原问题无可行解。