单纯形法的原理

先来举个例子:
用单纯形法求解下面线性规划问题的最优解:
在这里插入图片描述
注释:解的过程是反复迭代的过程,如果第一次迭代没有理解也没关系,再继续看第二次迭代,和第三次迭代,每次迭代的流程都是一样的,建议自己看完之后,再手写一遍回忆一下哦~~

解析:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单纯形法的原理

线性规划问题的标准型如图:

在这里插入图片描述

首先要得到一个初始的基可行解,具体做法如下:

假设系数矩阵A为下图所示的情形:

在这里插入图片描述
它的前m列就可以组成一个满秩矩阵B,且有B=(P1,P2······Pm)=I
再将基变量用非基变量来表示:
在这里插入图片描述
此时的目标函数里面的基变量也用非基变量表示:
在这里插入图片描述
此时,令非基变量全部为0,就可以得到一个初始的基可行解:
在这里插入图片描述

第二步就是判断得到的基可行解是否是最优解,具体做法如下:

目标函数在此时就变为只含非基变量的形式:
在这里插入图片描述
观察目标函数中非基变量的系数:
在这里插入图片描述

在这里插入图片描述
如果从λm+1一直到λn中只要有一个系数是正的,那么就说明当前的基可行解不是最优解,需要进一步改进目标函数的值,只有一直改到所有非基变量的系数全部为负时才说明那个时刻的基可行解是最优解。
因为用λi来判断最优解的情况,所以λi就被称为是检验系数

第三步的改进就是更改基变量,然后迭代出新的目标函数,得到新的基可行解。具体的方法仍然是先比较目标函数中非基变量中的系数,选择系数最大的变量作为入基,然后接着上述步骤来继续进行迭代改变目标函数。
单纯形法的基本步骤总结
在这里插入图片描述

定理1

对基可行解,如所有的检验系数λk≤0,k=m+1······n,那么X^(0)就是线性规划问题的最优解。
因为只有非基变量都是≤0的情况时,此时Z才能获得最大值。
(如果随以上步骤理解的话,这个定理就很明显了。

定理2

若某一个非基变量xk的检验系数为正,对应的列向量Pk=(a1k,a2k,······amk)所有的元素为非正,那么线性规划问题就没有最优解。

这个定理可以来判断无界解。

单纯形表

单纯形表的布局方式:
在这里插入图片描述

在这里插入图片描述
具体的计算步骤如下:
在这里插入图片描述

举个例子:
就以这篇文章开头的例子为题,用单纯形表来解的步骤如下:
在这里插入图片描述
在第一个表中,只是将初始的全部数据列出,需要计算的是最后一行检验系数和最后一列Θi的值.x1所在列对应的检验值由公式:μi=ci - ∑cjxi可得μ1=2 -(01+04+00)=2,那么x2所在列对应的检验值由公式就可得μ2=3 -(02+04+0*4)=3,选出最大的项是x2对应的3。
再计算最后一列Θi的值,第一行Θi的值:8➗2=4,第二行Θi的值:16➗0是不存在的,所以画一条横线,第三行Θi的值:12➗4=3,选取Θi的值最小的数为3,所以具体就对应到中间系数矩阵的第三行,第二列的数值4,说明x2为入基,x4为出基,此时将4所在位置的这一列化为单位向量,也就是这一列化成(0,0,1)T的形式。一定要以增广矩阵为整体来做初等行变换。
一直到所有的检验系数都是负数时停止换基迭代,此时对应的z值就是:z=∑ci✖️b。
每一步对应的基不同时,一定要记得变换,基的确定是在对增广矩阵做初等行变换后才确定的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95973.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95973.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95973.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python GUI 框架 -- DearPyGui 简易入门

DearPyGui 关于 DPG 是一个简单且功能强大的 Python 图形用户界面框架。 与其他Python图形用户界面库相比,DPG具有以下独特之处: GPU 渲染多线程高度可定制内置开发人员工具:主题检查、资源检查、运行时指标带有数百种小部件组合的 70 多…

gcloud cli 使用 impersonate模拟 服务帐号

什么是模拟服务帐号 众所周知, gcloud 登陆的方式有两种 使用个人帐号, 通常是1个邮箱地址使用一个service account 通常是1个 json key 文件 所谓模式服务帐号意思就是, 让操作人员用个人帐号登陆, 但是登陆后所有的操作都是基于…

idf--esp32的看门狗menuconfig

1.Interrupt Watchdog Timeout (ms):意思是中断看门狗,也就是专门监管中断响应时间的看门狗,如果某个中断服务程序超过了这个运行时间,就会导致程序重启。2.红框是任务看门狗的最大看门时间,超过时间就会警告&#xff…

git在Linux中的使用

git-Linux中的使用一、下载git二、https方式上传三、ssh秘钥方式上传一、下载git 版本信息 [rootrocky ~]# cat /etc/rocky-release Rocky Linux release 9.4 (Blue Onyx) [rootrocky ~]# cat /etc/rocky-release-upstream Derived from Red Hat Enterprise Linux 9.4 [rootro…

HMI(人机界面)

新晋码农一枚,小编定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!一、核心…

嵌入式解谜日志—多路I/O复用

多路 I/O复用(Multiplexed I/O):1.定义:系统提供的I/O事件通知机制2.应用:是一种 I/O 编程模型,用于在单线程中同时处理多个(阻塞) I/O 操作,避免因等待某个 I/O 操作完成…

关于嵌入式学习——单片机4

ds18b20温度传感器的使用一、传感器分类:数字温度传感器,实现简单,不需要额外转换电路,采集过来的就是数字温度值模拟温度传感器->热敏电阻->AD转换电路->数字值二、传感器接口:GPIO接口:&#xf…

Kali搭建sqli-labs靶场

1.输入apt-get install docker.io即可下载靶场镜像。 下载好后,我们输入docker search sqli-labs搜索sqli-labs靶场。2.我们选择第一个,输入docker pull acgpiano/sqli-labs,将该靶场装到本地。此时输入docker images,发现本地有s…

电脑外接显示屏字体和图标过大

当外接显示屏的分辨率过高时,可以调整显示器设置来解决字体和图标过大的问题。具体操作包括在桌面右击选择显示设置,切换到外接显示器,将分辨率调至推荐的1920x1080,或根据个人偏好进行适当调节,然后保存更改。 原因&a…

Linux 网络流量监控 Shell 脚本详解(支持邮件告警)

前言 一、脚本功能 二、实现原理 三、Shell 脚本实现 四、关键知识点解析 1. Bash 关联数组 2. 命令组 { } 与子 Shell ( ) 3. 字符串拼接换行 4. 流量计算逻辑 五、测试方法 六、优化建议 七、总结 前言 在生产环境中,监控服务器的 网络流量 非常重要…

【牛客刷题-剑指Offer】BM18 二维数组中的查找:一题四解,从暴力到最优

文章目录 一、题目介绍 1.1 描述 1.2 示例1 1.3 示例2 1.4 给的部分代码 二、题解 方法一:暴力遍历 方法二:二分查找(逐行) 方法三:Z字形查找(最优解) 方法四:递归分治(拓展思路) 三、总结 心得体会 一、题目介绍 原题链接:https://www.nowcoder.com/practice/abc3…

使用pyspark对上百亿行的hive表生成稀疏向量

背景:一张上百亿行的hive表,只有id和app两列,其中app的去重量是8w多个(原app有上百万枚举值,此处已经用id数量进行过筛选,只留下有一定规模的app),id的去重量大概有八九亿&#xff0…

【设计模式】关于学习《重学Java设计模式》的一些成长笔记

【设计模式】关于学习《重学Java设计模式》的一些成长笔记 没有几个人是一说就会的,掌握一些技能,不仅要用心,而且还需要从温故中知新。 为此,好记性不如烂笔头,我干脆一步一脚印地系统学习一遍设计模式! (关注不迷路哈!!!) 文章目录 【设计模式】关于学习《重学Jav…

【基础-判断】@Entry装饰的自定义组件将作为页面的入口。在单个页面中可以使用多个@Entry装饰不同自定义组件。

@Entry装饰的自定义组件将作为页面的入口。在单个页面中可以使用多个@Entry装饰不同自定义组件。 解释: @Entry 的核心作用与唯一性:@Entry 装饰器用于明确声明该组件是一个页面的入口组件,即整个页面的“根”和“起点”。当UIAbility实例加载并显示页面时,系统需要明确知道…

医学影像AI应用-实践:使用MONAI实现肺部CT图像分割的原理与实践

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

如何训练一个简单的Transformer模型(附源码)李宏毅2025大模型-作业4

摘要:一、作业目标:使用只有2层transformer的GPT-2,生成完整宝可梦图像。二、源码&解析:使用提供的Transformer模型(GPT-2)进行训练,FID Score: 96.3425一、作业目标1)目标使用T…

leetcode211.添加与搜索单词-数据结构设计

与208.前缀树的设计是一样的,关键点在于word中存在通配符“.",所以针对该特殊情况,在search时针对这里进行全子节点的深度搜索class WordDictionary {TrieNode root;private class TrieNode {char val;// 当前节点的值,冗余了…

项目中的一些比较实用的自定义控件

本文是记录项目开发中一些相对复杂但都比较实用的控件,这些控件都是基于自定义的方式去实现,如果有需要的朋友,这个可以作为一个参考,同时也做一个自我总结。 (1)子项大小不一致的RecyclerView(…

[iOS] 折叠 cell

目录 前言 1.原理 2.折叠 cell 的点击选中 3.折叠 cell 高度的变化 4.实现效果 5.总结 前言 折叠 cell 是在 3GShare 中写过的一个小控件,这篇博客是一个小小的总结。 1.原理 在这里的核心就是我们可以通过改变按钮的 tag 值来判断我们是否应该展开还是回收…

MySQL的组复制(MGR)高可用集群搭建

一、MySQL 组复制(MGR)核心概念 MySQL Group Replication(简称 MGR)是 MySQL 官方推出的 高可用(HA) 强一致性 解决方案,基于改进的 Paxos 协议实现,核心能力可概括为 3 点&#xf…