谈一谈|浅谈单纯形法其中奥妙

简介: 谈一谈|浅谈单纯形法其中奥妙

1单纯形法简介

单纯形法是求解线性规划问题最常用、最有效的算法之一。基本思路是:先找出可行域的一个顶点,据一定规则判断其是否最优;若否,则转换到与之相邻的另一顶点,并使目标函数值更优;如此下去,直到找到某最优解为止。

单纯形法的原理可以简单理解成将解通过枚举得出来,但是这个方法很巧妙得减少了枚举的次数,这也是单纯形法中很关键的一个步骤:换基迭代。在换基迭代中,主要需要解决两个问题:

(1)、出基变量的确定

(2)、入基变量的确定

在解决这两个问题时,单纯形法给出了明确的定义,可其中原理是什么呢?我们下面来分析一下。


2原理分析

如下是一张初始单纯形表

表2.1标准型初始单纯形表

对于一个标准型线性规划问题

使用矩阵形式表示上面的标准型:

其中,XB构成了初始基变量,因此,初始可行解可以得出

根据矩阵的运算规律,XB=B-1b,所以,初始可行解还可以表示为:

目标函数

由2式可以得出

将5式带入1式,有

其中m代表基变量的个数,Pj参考标准型,结合矩阵的知识,知道

6式中,选取一个合适的XK,其他的非基变量全为0,只要它的检验数大于0,就可以让函数值增大。每次选择检验数最大正值对应的XK,达到的效果最好,这就是换入变量的确定。

且此时,目标函数变为:

再根据下面中XB必须大于等于0,可以计算出XK的取值范围,

所以,

只要将对应的Xi替换成Xk,函数值就会增大(Ck-Zk)Xk这就是换出变量的确定。然后一直迭代,直到找到最优解或者判断出无解,就可以解决线性规划问题。


3阅读背景

上述分析思路建立在矩阵的基础上,所以需要一定的线性代数的知识作为支撑,这里只分析了标准型单纯形法的思路,对于改进的单纯形法没有深入,所以在理解时也要结合标准型线性规划问题,对于其他的单纯形法,还需要结合它的使用方法具体分析。

目录
相关文章
|
2月前
|
算法 程序员
探寻技术之美:代码世界的奇妙旅程
在数字化时代,技术已经渗透到生活的方方面面,而作为程序员,我深深感受到了代码世界的奇妙之处。本文将带领读者一起探寻技术之美,感悟代码背后的精妙之处。
|
6天前
|
算法 开发者
代码之美:我的编程之旅与技术感悟
【6月更文挑战第23天】编程不仅是技术的实践,更是艺术的创造。本文将通过个人经历,探讨如何从初学者成长为一名有洞察力的开发者,并分享在编程旅途中的技术感悟。我们将一起探索编程的本质、学习过程中的挑战与乐趣,以及如何培养解决问题的能力,最终达到技术与创造力的融合。
|
2月前
|
机器学习/深度学习 人工智能
技术人的四大「造神」学习法,为啥就没人好好用呢?
技术人的四大「造神」学习法,为啥就没人好好用呢?
28 2
|
2月前
|
设计模式 算法 开发者
代码之美:探索编程艺术与实践的交汇点
【4月更文挑战第2天】 在数字世界的构建中,代码不仅仅是一种工具,它亦是艺术家手中的画笔。本文旨在探讨编程作为一种技术和艺术相结合的领域,揭示那些隐藏在代码背后的美学原则和创造力。我们将从编程的基础出发,逐步深入到设计模式、算法优雅性以及代码的可读性和维护性,最终探讨如何通过技术实现创新并解决问题。文章的目的是为那些渴望在技术实践中寻找创造性和美感的开发者提供灵感和指导。
|
2月前
|
安全 算法 前端开发
作为程序员变强了也变秃了遇到令人膛目结舌的代码技巧
作为程序员变强了也变秃了遇到令人膛目结舌的代码技巧
36 1
|
2月前
|
Java C++ Python
编程的奇妙世界:膛目结舌的代码技巧探秘
编程的奇妙世界:膛目结舌的代码技巧探秘
|
10月前
|
Java 程序员 开发者
优秀程序员的学习习惯和方法你都不知道,还学什么编程
好的学习习惯和方法会让你的工作事半功倍,快来看看你还差哪些
44 0
优秀程序员的学习习惯和方法你都不知道,还学什么编程
|
11月前
|
存储 机器学习/深度学习 自然语言处理
探索编程世界的宝藏:程序员必掌握的20大算法(下)
探索编程世界的宝藏:程序员必掌握的20大算法
106 0
|
11月前
|
机器学习/深度学习 存储 运维
探索编程世界的宝藏:程序员必掌握的20大算法(中)
探索编程世界的宝藏:程序员必掌握的20大算法
120 0
|
11月前
|
搜索推荐 算法 程序员
探索编程世界的宝藏:程序员必掌握的20大算法(上)
探索编程世界的宝藏:程序员必掌握的20大算法
116 0