运筹学——线性规划单纯形方法

运筹学基础(一)求解线性规划的单纯形法详解 大学的《运筹学》课程中,手算单纯形法是期末的必考题了!(记得期末考试前一周,几个经常逃课的同学来我宿舍楼下,叫了辆车载我去星巴克给他们讲解这个算法,活活讲了一个多小时他们才听懂,不知道最后及格了没哈哈!)当时已经觉得是信手拈来了,但是时间久了+计算过程本身也比较繁琐,慢慢就忘了。后面为了应付面试,又拾起过,但是面完试细节又给忘了,只记得是在可行域的顶点上来回搜索。这次想完整的梳理一篇文章(本文是跟着某位大佬的博客。 阅读详情

对于一个标准形式的 LP 问题:
minz=c1x1+……+cnxns.t.ai1x1+ai2x2+……+ainxn=biai1x1+ai2x2+……+ainxn≤bi式 (1)xj≥0,j=1,……,n \begin{aligned} \\ min \qquad &z=c_1x_1+ …… + c_nx_n \\s.t. \qquad &a_{i1}x_1 + a_{i2}x_2 + …… + a_{in}x_n = b_i \\&a_{i1}x_1 + a_{i2}x_2 + …… + a_{in}x_n ≤ b_i \qquad \qquad \text{式 (1)} \\& x_j ≥ 0, \qquad j = 1, …… , n \end{aligned} mins.t.​z=c1​x1​+……+cn​xn​ai1​x1​+ai2​x2​+……+ain​xn​=bi​ai1​x1​+ai2​x2​+……+ain​xn​≤bi​式 (1)xj​≥0,j=1,……,n​

我们知道他的最优解在多面凸集的顶点上,那么只要找到一个基本可行解,然后让超平面沿着目标函数的负梯度方向移动,就可以得到最优解——单纯形方法。

接下来,从线性代数的角度出发,将式(1)改写为矩阵向量形式:
{minz=cTs.t.Ax=b式(2)x≥0 \left\{ \begin{aligned} min \qquad & z=c^T \\ s.t. \qquad & Ax = b \qquad \qquad \text{式(2)} \\ & x ≥ 0 \end{aligned} \right. ⎩⎨⎧​mins.t.​z=cTAx=b式(2)x≥0​
假设 r(A)=mr(A) = mr(A)=m,即 A 中必有 m 个线性无关的列向量,构成满秩方阵 B,再将其余各列组成的子阵记为 N,有 A=(B,N)A = (B,N)A=(B,N),同理 x=(xB,xN)x = (x_B, x_N)x=(xB​,xN​)。
则 Ax=bAx=bAx=b 可记作 BxB+NxN=bBx_B+Nx_N=bBxB​+NxN​=b 。
由于 B 满秩,B−1B^{-1}B−1 存在,上式两边左乘 B−1B^{-1}B−1 可得 xB=B−1b−B−1NxN式(3)x_B = B^{-1}b -B^{-1}Nx_N \qquad \qquad \text{式(3)}xB​=B−1b−B−1NxN​式(3)
将式(3)代入式(2)中的目标函数有 其中 b‾=B−1b\overline{b} = B^{-1}bb=B−1b , Aj‾=B−1N\overline{A_j} = B^{-1}NAj​​=B−1N
z=cTx=cBTxB+cNTxN=cBT(b‾−B−1NxN)+cNTxN=cBTb‾−(cBTB−1N−cNT)xN=cBTb‾−∑j=m+1n(cBTAj‾−cj)xj式(4) \begin{aligned} z &= c^Tx=c_B^Tx_B+c_N^Tx_N \\&=c_B^T(\overline{b} - B^{-1}Nx_N) + c_N^Tx_N \\&=c_B^T\overline{b} - (c_B^TB^{-1}N-c_N^T)x_N \\&=c_B^T\overline{b} - \sum_{j=m+1}^n(c_B^T\overline{A_j}-c_j)x_j \qquad \qquad \text{式(4)} \end{aligned} z​=cTx=cBT​xB​+cNT​xN​=cBT​(b−B−1NxN​)+cNT​xN​=cBT​b−(cBT​B−1N−cNT​)xN​=cBT​b−j=m+1∑n​(cBT​Aj​​−cj​)xj​式(4)​
然后记 z0=cTx‾=cBTB‾z_0 = c^T\overline{x}=c_B^T\overline{B}z0​=cTx=cBT​B,即 z0z_0z0​ 为目标函数中的常数项。
将式(4)中的 cBTAj‾−cjc_B^T\overline{A_j}-c_jcBT​Aj​​−cj​ 从 (m+1, n) 扩展到 (1, n),并做如下记号有:ζT=(ζBT,ζNT)=(0,cBTAj‾−cj)\zeta^T = (\zeta^T_B, \zeta^T_N) = (0, c_B^T\overline{A_j}-c_j)ζT=(ζBT​,ζNT​)=(0,cBT​Aj​​−cj​)。
从而目标函数可记作: z=cBTb‾−ζTx式(5)z = c_B^T\overline{b}-\zeta^Tx \qquad \qquad \text{式(5)}z=cBT​b−ζTx式(5)
将式(2)可继续改写为:
{minz=z0−ζTxs.t.xB+B−1NxN=b‾式(6)x≥0 \left\{ \begin{aligned} min \qquad & z=z_0 - \zeta^Tx \\ s.t. \qquad & x_B + B^{-1}Nx_N = \overline{b} \qquad \qquad \text{式(6)} \\ & x ≥ 0 \end{aligned} \right. ⎩⎨⎧​mins.t.​z=z0​−ζTxxB​+B−1NxN​=b式(6)x≥0​

其中 xB+B−1NxN=b‾x_B + B^{-1}Nx_N = \overline{b}xB​+B−1NxN​=b 又称为典式。

对于式(5),cBTb‾c_B^T\overline{b}cBT​b 是 xN=0x_N =0xN​=0 时候的一组特解,而 ζTx\zeta^TxζTx 类似于一种损失,我们期望损失小于等于零,那么这就是最小值;如果损失大于0,说明了存在更优解。

定理:如果 ζ\zetaζ 的第 k 个分量 ζk>0(m+1≤k≤n)\zeta_k > 0 \quad (m+1≤k≤n)ζk​>0(m+1≤k≤n) ,Ak‾=B−1Ak≤0\overline{A_k} = B^{-1}A_k ≤0Ak​​=B−1Ak​≤0,则无界。
解释:ζk>0\zeta_k > 0ζk​>0 意味着损失大于0,对于约束条件 xB=B−1b−B−1NxNx_B = B^{-1}b - B^{-1}Nx_NxB​=B−1b−B−1NxN​ ,意味着需要下降。
Ak‾=B−1Ak≤0\overline{A_k} = B^{-1}A_k ≤0Ak​​=B−1Ak​≤0,对于约束条件 xB=B−1b−B−1NxNx_B = B^{-1}b - B^{-1}Nx_NxB​=B−1b−B−1NxN​ ,意味着需要上升,二者相互矛盾,故无界。
证明:构造 KaTeX parse error: Undefined control sequence: \pmatrix at position 5: d = \̲p̲m̲a̲t̲r̲i̲x̲{-\overline{A_k…,有 Ad=0Ad=0Ad=0,对于充分大正数 θ\thetaθ ,考察 cT(x‾+θd)c^T(\overline{x}+\theta d)cT(x+θd) (参照下找最优解)。
若存在最优解,可通过以下方法寻找:
令d=(−Ak‾0)+ek,ek 是第 k 个分量为 1,其余分量为 0 的 n 维向量。构造x^=x‾+θd=(b‾0)+θ(−Ak‾0)+θek=(b‾−θAk‾0)+θek为使 x^≥0,则要求 b‾−θAk‾≥0,故令 θ=min{bi‾aik‾∣aik‾>0,i=1,……,m}从而保证了 x^≥0,因而 x^ 是可行解。 \begin{aligned} \\ &\text{令}\quad d = \begin{pmatrix}-\overline{A_k}\\ 0\end{pmatrix} +e_k \qquad, e_k \text{ 是第 k 个分量为 1,其余分量为 0 的 n 维向量。} \\ &\text{构造} \hat{x} = \overline{x} + \theta d = \begin{pmatrix}\overline{b} \\ 0\end{pmatrix} + \theta \begin{pmatrix}-\overline{A_k}\\ 0\end{pmatrix} + \theta e_k = \begin{pmatrix}\overline{b}-\theta \overline{A_k} \\ 0\end{pmatrix} + \theta e_k \\ &\text{为使 }\hat{x} ≥ 0, \text{则要求 } \overline{b} - \theta \overline{A_k} ≥ 0,\text{故令 } \theta = min\{\frac{\overline{b_i}}{\overline{a_{ik}}}|\overline{a_{ik}} > 0, i=1,……,m \} \\ &\text{从而保证了 } \hat{x} ≥ 0,\text{因而 }\hat{x} \text{ 是可行解。} \end{aligned} ​令d=(−Ak​​0​)+ek​,ek​ 是第 k 个分量为 1,其余分量为 0 的 n 维向量。构造x^=x+θd=(b0​)+θ(−Ak​​0​)+θek​=(b−θAk​​0​)+θek​为使 x^≥0,则要求 b−θAk​​≥0,故令 θ=min{aik​​bi​​​∣aik​​>0,i=1,……,m}从而保证了 x^≥0,因而 x^ 是可行解。​
单纯形方法总结
第 1 步——找一个初始的可行基 B;
第 2 步——求出对应的典式及检验数向量 ζ\zetaζ;
第 3 步——求 ζk=max{ζj∣j=1,……,n}\zeta_k = max\{\zeta_j|j=1,……,n\}ζk​=max{ζj​∣j=1,……,n};
第 4 步——若 ζk≤0\zeta_k ≤ 0ζk​≤0 ,停止;
已找到最优解 x=(xBxN)=(b‾0)x = \begin{pmatrix}x_B \\ x_N \end{pmatrix} = \begin{pmatrix}\overline{b}\\0\end{pmatrix}x=(xB​xN​​)=(b0​) 及最优值 z=cBTb‾z=c_B^T\overline{b}z=cBT​b;
第 5 步——若 Ak‾≤0\overline{A_k} ≤ 0Ak​​≤0,停止,原问题无界;
第 6 步——求 min{bi‾aik‾∣aik‾>0,i=1,……,m}=b‾aik‾min\{\frac{\overline{b_i}}{\overline{a_{ik}}}|\overline{a_{ik}} > 0, i=1,……,m \} = \frac{\overline{b}}{\overline{a_{ik}}}min{aik​​bi​​​∣aik​​>0,i=1,……,m}=aik​​b​;
第 7 步——以 AkA_kAk​ 代替 ABrA_{B_r}ABr​​ 得到新的基,转第 2 步。

单纯形法简易使用方法 单纯形法是一种非常实用的寻找最优基本可行解的方法。它的基本思想是:先找到一个基本可行解,然后判断其是否为最优解;如果不是,则转换到相邻且能改善当前目标函数的基本可行解,一直找到最优解为止。此方法无论在理论还是实际应用中都取得了巨大成功,并且 今天仍是求解纯属规划问题的最有效方法之一。 单纯形法的迭代过程分为三个基本部分:        (1)确定初始基本可行解;        (2) 阅读详情

相关推荐

运筹学期末试题及答案4套

七、(25分)甲、乙双方合资办厂,根据协议,乙方负责提供全部1000台设备,甲方承担其余义务,生产的产品双方共享。八、(20分)某地区有A、B、C三个化肥厂向甲、乙、丙、丁四个销地供应同一种化肥,已知产地产量、销地需求量和各产地运往不同销地单位运价如下表,试用最小元素法确定初始调运方案,并调整求最优运输方案。六、(25分)设有物资从A1,A2,A3处运往B1,B2,B3,B4处,各处供应量、需求量及单位运价见下表。七、(20分)用图解法求解矩阵对策G=(S1,S2,A),其中。

king13jkc的博客 2378

单纯形算法

单纯形法是解决线性规划问题的一个有效的算法。线性规划就是在一组线性约束条件下,求解目标函数最优解的问题。

w_w_wwwww的博客 1307

单纯形法求最小值的检验数_【教学笔记】运筹学课程精讲 | 2.1 单纯形法的矩阵描述 改进单纯形法...

第二章 对偶理论与灵敏度分析2.1 单纯形法的矩阵描述3. 改进单纯形法本节课是利用上节课推导得出的矩阵公式(包括基变量的值、非基变量的检验数、换入变量对应的系数列向量、目标函数值)去计算每一步迭代过程所需数据的一种方法,其本质依然是单纯形法,只不过表现形式,从单纯形表变成了矩阵公式。改进单纯形法的最关键是,需要计算得到每一步迭代时的可行基的逆矩阵,只要得到了该次迭代的B逆,那么就可以相...

weixin_28941715的博客 949

[最优化方法/运筹学] 大M法解决线性规划代码 单纯形法

大M法解决一个线性规划问题的代码 单纯形表的代码可移植

hatrac的博客 330

数学基础——运筹学

⎨⎧​x1​+2x2​≤4x1​+x2​≤22x1​≥3x1​≥0​​ 化标准型 目标函数强制转化为min:max⁡4x1+5x2⇔min⁡−4x1−5x2\max{4x_1+5x_2} \Leftrightarrow \min{-4x_1-5x_2}max4x1​+5x2​⇔min−4x1​−5x2​ 约束条件强制转换为等式:引入松弛变量s≥0 x1+2x2≤4⇔x1+2x2+s1=4,s1≥0x_1+2x_2 \leq 4 \Leftrightarrow x_1+2x_2+s_1 = 4, s_1\

wxz567的博客 1369

9、运筹学线性规划:Excel 与单纯形法求解

本文详细介绍了运筹学中线性规划问题的两种求解方法:Excel Solver 和单纯形法。通过 Rose’s Luxury Restaurant 案例演示了如何使用 Excel 求解最小化问题,并通过单纯形法深入解析了最小化和最大化问题的模型构建、初始解寻找以及迭代改进过程。此外,还探讨了单纯形法求解中可能遇到的特殊情况,包括退化、无界解和不可行解,并提出了相应的应对策略。最后总结了单纯形法的优势与局限性,并展望了未来线性规划的发展趋势。

algae的博客 270

运筹学广泛的使用计算机,运筹学笔记

绪论一、最优化理论方法与运筹学(一)运筹学在管理科学中的地位运筹学是管理科学学科的主要课程。1999年,复旦大学对“管理科学与工程学科的国内外发展动态”的研究结果表明:优化技术是管理科学与工程学科的主流技术。运筹学的英文名称为:Operations Research ,即OR。在国外,有的大学在编写教材时,将运筹学取名为“管理科学”(Management Science),可见运筹学在管理科学中的...

weixin_29958955的博客 923

清华大学运筹学课程精要与实践指南 第三版

运筹学是一门应用数学的分支,它利用数学模型、统计分析和算法来解决复杂的决策问题。这门课程为IT行业以及相关领域的专业人士提供了一个强大的工具箱,以科学化的方式提高效率和解决问题。通过运筹学的学习,学生可以掌握如何运用定量分析方法来辅助决策过程。

weixin_42577735的博客 795

【运筹学笔记】 第一章 线性规划与单纯形法

运筹学绪论 运筹学是一门应用于管理有组织系统的科学,根据问题的要求,通过数学分析与计算,做出综合性的合理安排,以期达到资源的最优化利用。 运筹学考虑系统的整体优化、多学科的配合以及模型方法的应用,其研究可以分为以下几个步骤: 1.分析与表述问题。 2.建立模型 3.对问题求解 4.对模型和由模型导出的解进行检验 5.建立对解的有效控制 6.方案的实施。 其中,建模是运筹学方法的核心和精髓。 线...

weixin_43848054的博客 3591

理解单纯形算法在整数规划中的应用

本文深入探讨了单纯形算法在解决整数线性规划问题中的应用。首先,介绍了原始问题与对偶问题的概念,并阐述了限制性原始问题的构造方法及其特性。接着,重点分析了原始-对偶单纯形算法的迭代过程,包括如何通过解决限制性原始问题来更新对偶解。此外,文中还探讨了如何利用线性规划松弛问题的最优解信息来加强整数规划问题的变量界限,并引入了伪成本的概念,说明了它在分支定界技术中的应用。最后,本文通过引用相关文献,对单纯形算法及其在整数规划中的应用进行了更全面的文献回顾。

weixin_33812391的博客 584

5G移动性管理实战:手把手教你配置NR小区重选参数(附避坑指南)

本文深入解析5G网络移动性管理中的小区重选参数配置实战。通过拆解小区选择与重选的核心机制,结合真实案例,手把手指导如何配置NR小区重选参数,并分享常见避坑指南,帮助工程师优化网络性能,提升用户移动体验。

weixin_29229261的博客 200

【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 单纯形表 | 系数计算方法 | 根据系数是否小于等于 0 判定最优解 )

系数矩阵分析 、单纯形表、最优解判定

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 8985

智能驾驶功能软件平台设计规范 第一部分:系统架构

智能驾驶功能软件平台设计规范 第一部分:系统架构2020-07-29 发布。

爱是与世界平行 6744

【管理运筹学】运筹学“背诵手册”(一) | 线性规划问题与单纯形法

整理一些线性规划问题和单纯形法中容易遗忘的考点。

Douglas的博客 1591

手把手教你用Sentinel-1和SNAP处理InSAR数据:从下载到生成沉降图(附Python脚本)

本文详细介绍了如何使用Sentinel-1数据和SNAP软件处理InSAR数据,从下载到生成地表沉降图的全流程。通过Python脚本实现自动化处理,适用于城市扩张和地质脆弱带的地表沉降监测,提供高性价比的毫米级形变监测方案。

weixin_26800111的博客 267

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

单纯形方法总结

super_dmz的博客 371

无人机VS地面机器人:用AirSim和Gazebo玩转ROS2仿真的5个实战场景对比

本文深度对比了ROS2生态中两大仿真工具AirSim和Gazebo在无人机与地面机器人应用中的表现。通过电力巡检、仓库调度、SLAM建图等5个实战场景,分析了两者在视觉保真度、物理精度、开发效率等方面的差异,并提供了跨平台协作的实用技巧,帮助开发者根据项目需求选择合适的仿真工具。

flink9streamer的博客 900

运筹学笔记——求解线性规划人工变量法

这学期学校开设了运筹学这门课,虽然之前已经对线性规划有过了解,但是几种求解方法则是新接触,写个笔记留作复习备用 前面学习了单纯形法,在 单纯形法中,我们考虑的是一个相对理想的情形,即约束条件的系数矩阵A中已包含应该m阶(m为约束条件个数)的单位矩阵。在这种情况下,取该单位矩阵为基阵可以容易地得到初始基可行解。但是在有些线性规划问题中,如果原始的系数矩阵A中并不包含一个m 阶单位子矩阵。我们如何得到初始的基可行解?这时我们就需要人工变量法来配凑出这样一个单位子矩阵。

jzzhong666的博客 2365

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

Data+AI━━数仓建模的智能进化之路!

Data+AI━━数仓建模的智能进化之路!

ith321的博客 1745

运筹学导论

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

swai1688的博客 579

高通GAIA V3命令参考手册的研读学习(15):自定制命令的详细工作描述

里的示例一样,手机APP发出这个GetManuFacturer的命令发0x0000,那么耳机回复:0x8000, 同时在回复的playload部分,用最多15个字节的ACSII码来表达制造商信息(因此最多15个字母)。那么这个APP在通过GAIA协议控制这个耳机时,不仅可以通过前面讲过的vendor ID来识别,也可以更进一步通过这个命令来识别这个耳机,到底是不是本公司的。通过这个可变长度的playload,真的是可以传达极多的事先约定的信息,相当的灵活,真是不错!这个命令用来得到设备的制造商信息。

qq_37191547的博客 398

matlab实现单纯型法解线性规划_【运筹学教程】求解线性规划问题的单纯形法

这是本公众号的第①篇文章主要讲述运筹学中求解线性规划问题的单纯形方法;单纯形法是运筹学中求解线性规划问题的主要方法,其他一些求解大规模优化问题的算法,如列生成算法等,都是在该算法的基础上发展而来的。该算法原理包括以下几个部分:通过引入人工变量将原本的不等式约束转化为等式约束,选取其中的最大无关组作为变量,其余作为非基变量;通过检验数和比值因子迭代确定进基变量和出基变量,以更新单纯性表;对...

weixin_39733805的博客 1226

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

运筹学基础【五】 之 线性规划

自考 - 运筹学基础【五】 之 线性规划。

吴小迪的博客 846

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

各类线性规划问题化为标准形式

文章目录1. 各类线性规划问题化为标准形式 1. 各类线性规划问题化为标准形式

PursueLuo的博客 9001

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 论文阅读笔记——DiT
下一篇: 论文阅读笔记——AVID:Adapting Video Diffusion Models to World Models
寻丶幽风
博客等级 码龄5年 656粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值