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

单纯形法之两阶段法

1. 问题描述与标准化

考虑标准形式的线性规划问题

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

其中 b \in \mathbb{R}^m 的元素可能有正有负。
为方便起见,通常将约束全部变为等式并且右端向量 b≥0(若不满足,可通过乘以 −1 调整),然后对不容易构造初始基本可行解的约束引入人工变量。


2. 构造人工变量及辅助问题

2.1 引入人工变量

对那些无法直接从原问题中获得初始可行解的约束,引入人工变量。设原问题经过适当变换后变为

Ax = b, \quad x \ge 0,

若某些行约束中不存在明显的基本变量,则在相应位置引入人工变量 a≥0(假设共有 p 个这样的约束)。记人工变量构成向量 a ,则系统变为

Ax + I\cdot a = b, \quad x \ge 0, \quad a \ge 0.

2.2 辅助问题的构造

为消除人工变量,构造辅助目标函数,将所有人工变量的和作为新的目标函数(最小化形式):

\text{Minimize } \; W = \sum_{i=1}^{p} a_i.

辅助问题写为

\begin{aligned} \text{Minimize } & W = \mathbf{1}^T a, \\ \text{Subject to } & Ax + I\cdot a = b, \\ & x \ge 0,\quad a \ge 0. \end{aligned}

若辅助问题的最优值 W^* = 0,则说明存在一个满足原约束 Ax=b 且 x≥0 的解,此时去除人工变量得到原问题的初始可行解;若 W^* > 0,则原问题无可行解。


3. 两阶段法的具体推导与求解过程

阶段一:求解辅助问题

3.1 构造初始基

通常将所有人工变量 a 作为初始基变量,令原变量 x 均为零。此时基本解为

x = 0,\quad a = b.

辅助目标函数值为

W = \mathbf{1}^T a = \mathbf{1}^T b. 

3.2 应用单纯形法求解辅助问题

利用单纯形法迭代,调整基变量组合,使辅助目标函数 W 得到最小化。在迭代过程中,我们进行以下两点操作:

  • 进基变量的选择:根据辅助目标函数的相对成本,选择能降低 W 的变量进入基中。注意此时目标函数的系数来自于辅助问题的目标,即对人工变量系数均为 1,对原变量系数为 0。

  • 出基变量的选择:利用最小比值法确定在保持可行性的前提下的最大步长,从而选择合适的基变量离开基。

当辅助问题经过若干次迭代后,若达到 W^* = 0 且所有人工变量均为零,则成功获得一个原问题的基本可行解;否则若 W^* > 0,说明原问题无可行解。


阶段二:求解原问题

3.3 去除人工变量

在第一阶段结束后,若辅助问题的最优解满足 a=0 ,则将辅助问题中所构造的人工变量从约束中去除。注意:

  • 有时可能存在基中仍含有人工变量(但其值为 0),此时需要通过适当的换基操作,将人工变量剔除出基,从而获得纯原变量构成的初始基。

3.4 构造原问题的单纯形表

利用第一阶段获得的基本可行解作为原问题的初始解,对原问题目标函数

Z = c^T x

重新构造单纯形表,调整目标函数系数,并利用单纯形法继续迭代求解,直至满足最优性条件。


4. 两阶段法推导总结

4.1 两阶段法的核心思想

  • 阶段一:构造并求解辅助问题,消除人工变量,从而获得原问题的初始基本可行解。

    • 通过构造目标函数 W = \sum a_i,使得只要存在满足原约束的解,辅助问题的最优值必为 0。

  • 阶段二:利用第一阶段的解构造原问题的单纯形表,开始求解原问题。

    • 在这一阶段,人工变量被剔除,目标函数变回原始目标 Z = c^T x,然后继续利用单纯形法的换基操作寻找最优解。

4.2 数学依据

  • 有限性:基本可行解的个数有限,因此辅助问题和原问题均在有限步内结束(在非循环规则下)。

  • 保持可行性:在每一步迭代中,通过最小比值法确保解始终满足非负性条件。

  • 目标函数改进:在单纯形迭代过程中,每一次换基(在非退化情况下)都会使目标函数改善,从而最终达到最优解。


总结

两阶段单纯形法的计算过程可概括为:

  1. 问题标准化:将原问题转为等式约束形式,并引入人工变量构造辅助问题。

  2. 阶段一:以人工变量为基本变量,构造辅助目标函数 W = \sum a_i,利用单纯形法求解辅助问题,判断原问题是否可行。

  3. 阶段二:在辅助问题最优解 W^*=0 的前提下,剔除人工变量,利用第一阶段得到的基本可行解作为原问题的初始解,重新构造原问题单纯形表并继续迭代求解原问题最优解。

相关文章:

  • 网页制作与网站建设》在线作业 答案鼓楼网页seo搜索引擎优化
  • 网站制作公司成都nba体育新闻
  • 成品网站超市源码5118营销大数据
  • 北京临沂商会网站建设b站视频未能成功转码
  • 做地方特产的网站谷歌 google
  • 酒店网站建设策划书怎么写关键词搜索推广
  • 命令行HTTP客户端:HTTPie
  • C++基础系列【28】string的split
  • SMOTE算法
  • C++类与对象的的第三个简单的实战练习-3.25笔记
  • SvelteKit 最新中文文档教程(10)—— 部署 Cloudflare Pages 和 Cloudflare Workers
  • 【HarmonyOS Next】三天撸一个BLE调试精灵
  • 记录firefly的3566-sdk的下载及解压更新
  • docker使用命令笔记
  • Java多线程精讲:线程操作与状态转换全解析
  • Mycat安装验证流程整理
  • 深度学习|表示学习|多头注意力在计算时常见的张量维度变换总结|28
  • C盘急救实录:从爆红到畅快
  • 量子计算模拟中的测量与噪声建模:基于 3 量子比特系统分析
  • AI-Sphere-Butler之Ubuntu服务器如何部署Nginx代理,并将HTTP升级成HTTPS,用于移动设备访问
  • 余弦退火算法与学习率预热
  • Apache HttpClient使用
  • 内核编程十二:打印task_struct中的数据
  • 高性能C#定时删除图片,包含定时触发、分批删除、异步处理和资源监控
  • JavaScript基础-常用的鼠标事件
  • 卷积神经网络的原理、实现及变体