課程爲山東大學軟件學院人工智能專業2020年大二下學期的“最優化方法”課程
文章目錄
一.介紹
- 背景:2020年5月22日的考試由於疫情影響,與往年不同,所有考試題目都爲計算題,共8道。
- 考試範圍:
(1)線性規劃的圖解法
(2)基本單純形法
(3)兩階段單純形法
(4)給線性規劃,寫其對偶規劃
(5)對偶單純形法
(6)揹包問題的動態規劃算法
(7)最速下降法
(8)牛頓法
(9)阻尼牛頓法
(10)用K-T條件解約束優化問題
(11)外點罰函數法
(12)內點罰函數法
(1)~ (6)爲組合優化內容,(7)~(12)爲連續優化內容。 - 本筆記內容:算法的標準計算過程、計算實例和部分相應練習題(書爲《最優化理論與算法》陳寶林編著 第二版)
二.算法
1.線性規劃的圖解法
圖解法在考試中一般只涉及兩個變量x1和x2即二維空間,只需將x1作爲x軸,x2作爲y軸,根據不等式約束和非負約束做圖並確定範圍。接着,畫出目標函數並根據變量的正負值確定移動方向。最後確定相應頂點或線段則爲最優解,若沒有則無解。
第二章 習題 1
2.基本單純形法
筆算時採用表格化的單純形算法
(1)找一個初始可行基B
(2)求出典式和檢驗數向量
(3)令k = arg max{| j = 1, 2, …, n}
(4)如果 <= 0則當前bfs就是最優解,停止
(5)如果 <= 0,則問題無界,停止
(6)令r = arg min{ | , i = 1, 2, …, n}
(7)以替代B中的第r列(即,B® <- k),得到一個新的基B,轉第2步
注:按照老師的方法,檢驗數放在第0行,那麼最優解根據單純性表的最右側按照基變量的順序寫,最優值爲表中右上角的值;選取進基變量和出基變量時可以採取Bland反循環法則,進基變量選擇大於0的且編號最小的那一個,出基變量如果有多個達到最小選擇編號最小的那一個,當然不採取這個法則也可以;過程中進基變量最好圈出,一目瞭然;該算法適用於比較容易找到初始可行基的情況,或考試中明確指定“基本單純形法”。
第三章 習題 1
3.兩階段單純形法
(1)原問題化爲標準型。通過行變換,使b >= 0
(2)添加人工變量,得到輔助問題
(3)使用人工變量作爲初始的基,構造輔助問題的初始單純形表。在該表中同時也包含原問題的檢驗數行
(4)(第一階段)使用單純形表算法求解輔助問題
(5)若求得輔助問題最優值g* > 0,則原文題無解,結束
(6)(否則g* = 0)若某些人工變量爲基變量,則調整,直到沒有人工變量爲基變量
(7)去掉當前單純形表上的輔助問題的檢驗數行和人工變量對應的列,得到原問題的單純形表。此時已有一個初始的基可行解
(8)(第二階段)運行單純形算法,解原問題。最後或判斷得原問題無界,或求到最優解
注:標準型中有幾個等式約束就添加幾個人工變量;第一階段的單純形算法兩行檢驗數都要參與旋轉變換,其實只要輔助問題的檢驗數行參與運算即可最後進行改動,但一起變換至少從思維程度上簡單一些;第(6)步調整時,在A中找一個非零元進行調整即可;適用於初始可行基不好找的情況。
第三章 習題 2
4.給線性規劃,寫其對偶規劃
有助於記憶的口訣:不等式約束對應於限制變量,等式約束對應於無限制變量
下面的三個實例考慮到了所有情況
第四章 習題 1
5.對偶單純形法
(1)找一個原始LP的基本解(但不可行)和對偶LP的一個可行解( <= 0),組成初始單純形表
(2)r = arg min{ | i = 1, 2, …, n}
(3)若 >= 0,則當前解就是原始LP的最優解,停止
(4)若,則原始問題無可行解,停止
(5)k = arg min{ | < 0, j = 1, 2, …, n}
(6)以轉軸元做一次旋轉變換(以替代(即)得到一個新的基B),轉第2步
注:檢驗數行全部小於等於0,右端項即b至少有一個小於0,存在一個基矩陣,此時可以運算;簡單來說,出基變量從b中選擇值最小的那個,進基變量用檢驗數除以b中出基變量所在行的每一個值(要求爲負數),從中選擇最小的那個;最後發現右端項b都大於等於0,那麼此時就是原始LP的最優解;檢驗數行都小於等於0表明現在處於對偶可行狀態,右端項都大於等於0表明現在處於原始可行狀態,因此結束時就是這種情況;如果當前的單純形表原始不可行且對偶不可行,那麼引入人工變量採用兩階段單純形法,自然會得到無解。
第四章 習題 7
6.揹包問題的動態規劃算法
這個與我的“算法設計與分析學習筆記”中的“十. 動態規劃”是一樣的。
其中 i 是編號,j 是揹包現有容量,是物品的價值,是物品的重量
例:W = 5
下面的動態規劃表,列 i 是0 ~ n,行 j 是0 ~ m
該算法的代碼和如何通過回溯確定放置的物品。都在前面提到的“算法設計與分析學習筆記”中,這裏就不再重複了。
7.最速下降法
最速下降法的基本思想是:噹噹前點處的梯度不爲時(或不滿足精度要求時),從當前點出發,沿負梯度方向
前進到下一個點
輸入:函數,具有一階連續偏導數,初始點,允許誤差
輸出:滿足精度要求的點
在算法第4步,若使用精確線性搜索,則找到的應滿足
注:求步長因子時,對得到的結果求一階導並令等於0進行求解,而不是求根公式,那是大錯特錯的。
第十章 習題 1、3
8.牛頓法
牛頓法的基本思想:在極小點附近用簡單的函數——二階Taylor多項式近似目標函數,進而求出極小點的估計值。
輸入:函數,具有二階導數,初始點,允許誤差
輸出:滿足精度要求的點
注:一元優化問題和多元優化問題的牛頓法都是相同的,這裏選擇更通用的多元優化問題的牛頓法;二次凸函數
,用牛頓法求解,經過1次迭代即達到極小點。
第十章 習題 2
9.阻尼牛頓法
注:個人感覺阻尼牛頓法就是最速下降法和牛頓法的結合
10.用K-T條件解約束優化問題
(1)寫出約束優化問題的形式
(2)寫出Lagrange函數
(3)計算Lagrange函數的梯度,並寫出K-T條件
(4)根據約束條件寫出等的範圍即可行性條件
(5)採用觀察法根據互補鬆緊條件和其他條件合理推斷
11.外點罰函數法
“外點罰函數法”又叫做“罰函數法”(等式約束和不等式約束都可以)
一定要注意原形式:
(1)構造罰函數:
(2)用解析法求解:令導數或偏導等於0,求解
(3)時的結果,即爲最優解
12.內點罰函數法
“內點罰函數法”又叫做“障礙罰函數法”(只適用於不等式約束)
一定要注意原形式:
(1)構造障礙函數:(其中)
(2)用解析法求解:令導數或偏導等於0,求解
(3)時的結果,即爲最優解
三. 感受
張老師講的非常非常好,課程準備非常非常用心,講義做的非常非常好,很幸運也很感謝能夠遇上這麼優秀的老師。雖然由於疫情此次考試只考計算題,但最優化中的其他內容也都是和諧與美好的,值得鑽研。