學點數學(5)--線性規劃對偶形式的理解

線性規劃對偶問題的理解

  • 1.弱對偶
  • 2.強對偶

曾在上課的時候多次遇到這個求一個問題的對偶形式,大多是硬套公式。記一次,忘一次。后來在蘇大佬的博客中看到了相關闡述,感覺豁然開朗,(可以記得就一些了)遂做筆記記之。原文詳見:https://spaces.ac.cn/archives/6280

在規劃和優化問題中,對偶形式 是一個非常重要的概念。一般情況下,對偶是一種變換,能夠將原問題轉換成一個等價的,看起來幾乎不一樣的新問題:
原問題?對偶變換對偶問題原問題\overset{\text{對偶變換}}{\longrightarrow}對偶問題?對偶變換?

線性規劃的一般目標式為:
min?x{cTx∣Ax=b,x≥0}(1)\min_x\{c^Tx|Ax=b, \ x\ge0\}\tag{1}xmin?{cTxAx=b,?x0}(1)

在離散化情況下,x,c∈Rnx,c \in \mathbb{R^n}x,cRn(行向量),b∈Rmb \in \mathbb{R}^mbRm, A∈Rm×nA\in \mathbb{R}^{m\times n}ARm×n, Ax=bAx=bAx=b對應為m個等式約束。

1.弱對偶

假定式 (1)的最小值在x?x^*x?處取得,那么將有:
Ax?=bAx^*=bAx?=b

在其兩邊個乘上一個y∈Rmy\in\mathbb{R}^myRm,使其變成一個標量:
yTAx=yTb(2)y^TAx=y^Tb\tag{2}yTAx=yTb(2)

假設(1)yTA<cTy^TA < c^TyTA<cT,那么有(x非負):
yTAx?<cTx?y^TAx^* < c^Tx^*yTAx?<cTx?

帶入(2)式,有(x在左邊不見了):
yTb<cTx?y^Tb<c^Tx*yTb<cTx?

也就是說,在假設(1)的條件下,任意的yTby^TbyTb總是不大于(1)式,即使是最大的yTby^TbyTb也一樣:
max?y{yTb∣yTA<cT}≤min?x{cTx∣ATx=b,x≥0}(3)\max_y\{y^Tb | y^TA < c^T\} \le \min_x\{c^Tx|A^Tx = b, x\ge0\}\tag{3}ymax?{yTbyTA<cT}xmin?{cTxATx=b,x0}(3)

即左邊的最大值 不大于 右邊的最小值。弱對偶只是找到了原來問題的下界,就是那個極大值。這個下界可以給優化問題提供一個近似目標 用于計算。

(在構造的過程中 原來的約束構了新的目標。將自變量消除了)

2.強對偶

強對偶形式是說(3)式中的等號成, 即:
max?y{yTb∣yTA<cT}=min?x{cTx∣ATx=b,x≥0}(3)\max_y\{y^Tb | y^TA < c^T\} = \min_x\{c^Tx|A^Tx = b, x\ge0\}\tag{3}ymax?{yTbyTA<cT}=xmin?{cTxATx=b,x0}(3)

強對偶形式的推到需要用到Farkas引理,從等式約束中得出的得出的一個結論(矩陣A和向量b )基本思路是max 可以任意程度的接近于min(詳見蘇大神的博文)。

結論:強弱對偶的變換形式是一致的,區別就在于等號是否能夠取得到

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444887.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關系數據庫——視圖/存儲過程/觸發器

視圖 視圖是虛擬的表&#xff0c;與包含數據的表不同&#xff0c;視圖只包含使用時動態檢索數據的查詢,主要是用于查詢。 為什么使用視圖 重用sql語句簡化復雜的sql操作&#xff0c;在編寫查詢后&#xff0c;可以方便地重用它而不必知道他的基本查詢細節。使用表的組成部分而…

C++(5)--運算符、表達式、條件結構(if, switch)

C運算符、表達式 條件結構1.表達式與運算符1.1賦值運算符1.2算術運算符1.3關系運算符1.4邏輯運算符1.5位運算符1.6 sizeof()1.7 三目運算符1.8 運算符的優先級2.條件結構2.1--if2.2 --switch結構2.3 switch 和 多重if 結構的對比條件結構)《老九學堂C課程》《C primer》學習筆記…

關系數據庫——mysql常用函數總結

文本處理函數 Left(x,len) – 返回串左邊的字符&#xff08;長度為len&#xff09; Right(x,len) Length(x) – 返回串的長度 Locate(x,sub_x) – 找出串的一個子串 SubString(x, from, to) – 返回字串的字符 Lower(x) Upper(x) LTrim(x) RTrim(x) Soundex(x) – 讀…

setsockopt()用法(參數詳細說明)

先來看看函數的原型: int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); 然后我們來看看參數: s(套接字): 指向一個打開的套接口描述字 level:(級別): 指定選項代碼的類型。

再議libcurl編程

那是2年前用libcurl了,我肯定好久不用的知識,放置久了就會遺忘,現在我又重拾起這個知識點,重頭再來,至于前面的基礎知識,可以參考我的 http://blog.csdn.net/pbymw8iwm/article/details/6675754 假設你要獲取URL所表示的遠程主機上的資源。你需要寫一段程序用來完…

關系數據庫——并發控制

并發控制 多用戶數據庫&#xff1a;允許多個用戶同時使用的數據庫&#xff08;訂票系統&#xff09; 不同的多事務執行方式&#xff1a; 1.串行執行&#xff1a;每個時刻只有一個事務運行&#xff0c;其他事務必須等到這個事務結束后方能運行。 2.交叉并發方式&#xff1a; …

C++(6)--初識循環while,do-while

初識循環1.使用while 循環結構2.使用do-while 循環3.python中的while循環《老九學堂C課程》《C primer》學習筆記。《老九學堂C課程》詳情請到B站搜索《老九零基礎學編程C入門》-------------簡單的事情重復做&#xff0c;重復的事情用心做&#xff0c;用心的事情堅持做(老九君…

map類的erase方法的在Linux與Windows中的差異

這次的代碼是跨平臺的,尼瑪在win32上通過,但是在linux上不通過了,查找了一下原來是平臺linux不支持。 有人舉了例子: std::map< int , float > i_f_map; i_f_map[1] = 1.2f; i_f_map[23] = 1.4f;

C++(7)--for循環,break,continue語句

for循環1.for循環2.break 語句3.continue語句4.while,do-while,for 循環的異同5.for循環demo 嵌套循環-打印圖形6.python 中的for循環《老九學堂C課程》《C primer》學習筆記。《老九學堂C課程》詳情請到B站搜索《老九零基礎學編程C入門》-------------簡單的事情重復做&#x…

關系數據庫——數據庫恢復

實現技術 恢復操作的基本原理&#xff1a;冗余 恢復機制涉及的兩個關鍵問題 如何建立冗余數據 數據轉儲&#xff08;backup&#xff09;登錄日志文件&#xff08;logging&#xff09; 如何利用這些冗余數據實施數據庫恢復數據轉儲 數據轉儲定義&#xff1a; 轉儲是指DBA將整個數…

Lua語言中pairs和ipairs的區別

tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"} for key, value in ipairs(tbl) do print(key, value) end --pairs() --pairs()函數基本和ipairs()函數用法相同, 區別在于pairs()可以遍歷整個table…

算法(22)-leetcode-劍指offer6

leetcode-劍指offer-545.面試題55- 二叉樹的深度46.面試題55-2-平衡二叉樹47.面試題57-1-和為s的兩個數字-雙指針48.面試題57-2-和為s 的連續正數序列-雙指針49.面試題56-數組中出現數字的次數-位運算leetcode-136 只出現一次的數字Ileetcode-137 只出現一次的數字IIleetcode-2…

leetcode160 相交鏈表

編寫一個程序&#xff0c;找到兩個單鏈表相交的起始節點。 如下面的兩個鏈表&#xff1a; 在節點 c1 開始相交。 示例 1&#xff1a; 輸入&#xff1a;intersectVal 8, listA [4,1,8,4,5], listB [5,0,1,8,4,5], skipA 2, skipB 3 輸出&#xff1a;Reference of the node…

lua的一些api文檔總結吧

打算記錄一些我認為重要的常用的api: 1. 建一個新表 void lua_createtable (lua_State *L, int narr, int nrec) 創建一個新的table, 并把它放在棧頂. narr和nrec分別指定該table的array部分和hash部分的預分配元素數量 無返回值 棧高度+1, 棧頂元素是新table #define l…

關于mysql的一些時間格式和字符的問題

最近在做一些游戲的數據分析&#xff0c;需要對大量數據的用戶行為進行處理存庫&#xff0c;其中有個數據庫字段是datetime類型的&#xff0c;這個以前都沒用過&#xff0c;我以前都喜歡用int來存放時間戳&#xff0c;但這次這樣用&#xff0c;我就得在數據庫中轉換了&#xff…

算法(17)-leetcode-劍指offer1

leetcode-劍指offer-11.面試題3-數組中的重復數字2.面試題04-二維數組中的查找3.面試題05-替換空格4.面試題06-從尾到頭打印鏈表5.面試題07-重建二叉樹6.面試題09-兩個堆棧實現隊列7.面試題10-1-斐波那契數列8.面試題10-2-青蛙跳臺階問題9.面試題11-旋轉數組的最小數字10.面試題…

蟻群算法的一些東西

運行了三個TSP經典用例,基本符合要求。僅僅是一份按照蟻群算法的原理寫的代碼,沒有做任何優化。 // bigSearch.cpp : 定義控制臺應用程序的入口點。 // #include<iostream> #include<math.h> #include<time.h> using namespace std; //該程序是以…

leetcode101 對稱二叉樹

給定一個二叉樹&#xff0c;檢查它是否是鏡像對稱的。 例如&#xff0c;二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的: 1 / \ 2 2 \ \ 3 3 說明: 如果你可以運用遞歸和迭…

Linux內核OOM機制的詳細分析

Linux 內核有個機制叫OOM killer&#xff08;Out-Of-Memory killer&#xff09;&#xff0c;該機制會監控那些占用內存過大&#xff0c;尤其是瞬間很快消耗大量內存的進程&#xff0c;為了防止內存耗盡而內核會把該進程殺掉。典型的情況是&#xff1a;某天一臺機器突然ssh遠程登…

算法(18)-leetcode-劍指offer2

leetcode-劍指offer-211.面試題13-機器人的運動范圍-廣度優先搜索12.面試題14-1-剪繩子13.面試題14-2-剪繩子214.面試題16-二進制中1的個數-布萊恩克尼根15.面試題16-數值的整數次方-快速冪解析法16.面試題17-打印從1到最大的n位數17.面試題18-刪除鏈表的節點18.面試題19-正則匹…