運籌學——求解線性規劃的單純形法

單純形法的原理

先來舉個例子:
用單純形法求解下面線性規劃問題的最優解:
在這里插入圖片描述
注釋:解的過程是反復迭代的過程,如果第一次迭代沒有理解也沒關系,再繼續看第二次迭代,和第三次迭代,每次迭代的流程都是一樣的,建議自己看完之后,再手寫一遍回憶一下哦~~

解析:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

單純形法的原理

線性規劃問題的標準型如圖:

在這里插入圖片描述

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

假設系數矩陣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…