1、線性規划
1.1 線性規划的定義
線性規划的標准形式:
其中的 c 和 x 均為 n 維列向量,A、 Aeq 為適當維數的矩陣,b 、beq 為適當維數的列向量。
例如:x1 和 x2 稱為決策變量,整個式子分為了目標函數和約束條件
總之, 線性規划問題是在一組線性約束條件的限制下, 求一線性目標函數最大或最小的問題。
1.2 線性規划的解
線性規划問題的標准數學形式:
滿足(4)並使(3)達到最大值的可行解稱為最優解;可行解構成的域稱為可行域。
1.2.1 圖解法
1.1 中例子的約束條件 x1 和 x2 可用域如下,顯然,對於目標函數來說,x1 和 x2 越大,目標函數值越大,最優解為 ,最優目標值為 z* = 26。
有如下結論:
- 可行域可出現多種情況,既可能有界,也可能無界。
- 可行域非空時,既可存在有限最優解,也可不存在最優解。
- 若存在最優解,則必可找到具有可行域的“頂點” 。
1.2.2 MATLAB 解法
MATLAB 線性規划標准形式為
線性規划的函數為 linprog ,注意,linprog 求解的為線性規划最小值 min,若想求線性規划最大值,則需要對向量 c 取符號
[x,fval] = linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
fval 返回目標函數的值, LB 和 UB 分別是變量 x 的下界和上界,x0 是 x 的初始值,
例 1
m 文件:注意 linprog 中 c 取了負號
例 2
m 文件:
1.3 可轉換為線性規划的問題
可取
那么問題轉化為
例 3
其中
對於以上問題,取 ,那么問題變為線性規划問題
1.4 運輸問題
某產品有 m 個產地,n 個銷地,各地產量為 a1,a2 ... am,各地需求量為 b1,b2 ... bn,從 i 到 j 的單價運費為 cij,問如何調度才可使總運費最省?
解:
引入 xij,其取值為由 i 產地運往 j 銷地的該商品數量,有
對於產銷平衡問題,有以下關系:
1.5 指派問題
n 個人干 n 項工作,若第 i 個人去干第 j 項工作,需要花費 cij 時間,給定矩陣 C = (cij) 問如何分配才可使花費總時間最短?
解:
引入變量 xij,用來表示第 i 個人是否做第 j 項工作,xij = 1 表示做,xij = 0 表示不做,那么可得到如下數學模型:
同理,xij 也可使用矩陣來表示,每行每列僅有一個為 1,其余為 0,因此這為 0-1 規划問題,針對指派問題,可將約束條件寫為 xij >= 0 ,m = n = n,ai = bi = 1 ,因此可發現,這個問題進一步簡化為了運輸問題。
1.5.1 指派問題的匈牙利算法
對系數矩陣 C 行或列進行線性變換,得到新的矩陣 B,矩陣 B 和 C 具有相同的最優指派。
例 4
指派問題的系數矩陣為
對其進行行列變換得到:
可發現,最優指派為 x12 = 1, x21 = 1, x33 = 1, x44 = 1
例 5
對於較為復雜的指派問題
對其進行線性變換,有
對於第 3 行和第 5 行,都只在第 1 個元素的位置為 0,那么這時無法得到最優指派,只能繼續進行線性變換,有
這時,可發現,最優指派為 x12 = 1, x24 = 1, x31 = 1, x43 = 1, x55 = 1
1.6 對偶理論與靈敏度分析
1.6.1 原始問題和對偶問題
稱(P)為原始問題, (D)為它的對偶問題。 注意變換時 c 和 b 的位置。
對於如下線性規划問題:
可改寫為
那么對偶問題為
令 y = y1 - y2 ,又可寫成
可將原始問題轉化為對偶問題進行求解,在求出最優解后,再根據性質反求出原始問題的最優解。
4.2 靈敏度分析
靈敏度分析就是系數、常數等發生變化時, 已求得的線性規划問題的最優解會有什么變化;或者這些系數在什么范圍內變化時, 線性規划問題的最優解或最優解不變。也可理解為魯棒性。
1.7 投資的收益和風險
以一個題目為例對本知識點進行總結。
1.7.1 問題描述
市場上有 n 種資產 si(i = 1, 2, ..., n),目前資金總數為 M,資產 si 的收益率為 ri,虧損率為 qi,交易費率為 pi,在不超過金額 ui 時,交易費按 ui 計算,假設銀行存款利率為 r0。r0 = 5%
n = 4 時
目標是使凈收益盡可能大,總風險盡可能小。
1.7.2 符號規定
定義 xi 為投資 si 的資金,a 為投資風險度,Q 為總體收益。
基本假設:
- 投資數額 M 相當大,為了便於計算,假設 M = 1
- 投資越分散,總的風險越小
- 總體風險用所投資的所有項目中最大的一個風險來度量
- n 種資產之間是相互獨立的
- ri,pi,qi,r0 為定值,不受外界影響
1.7.3 建模與分析
模型為:目標函數第一個為收益,第二個為風險
1.7.4 模型簡化
固定風險水平,優化收益
在實際中,由於承受風險能力不同,因此規定一個風險界限 a,使得 ,那么模型變為
模型一:
固定盈利水平,極小化風險
若希望總盈利到達 k 以上,則目標函數變為了極小化風險
模型二:
權衡資產風險和預期收益
對風險和收益進行權衡,設置權重 s (0 < s < 1),s 稱為投資偏好系數
模型三:
1.7.5 模型的求解
以上模型的求解可使用 MATLAB 解法進行解決,以模型一為例
從 a = 0 開始,以步長 0.001 循環搜索,MATLAB 代碼如下:
1.7.6 結果分析
- 風險大,收益也大。
- 當投資越分散時,投資者承擔的風險越小,冒險的投資者會出現集中投資的情況,保守的投資者則盡量分散投資。
- (根據 MATLAB 圖形進行說明)在 a = 0.006 附近有轉折點,在這一點左邊,風險增加很少時,利潤增長很快。在這一點右邊,風險增加很大時,利潤增長很緩慢,所以對於風險和收益沒有特殊偏好的投資者來說,應該選擇曲線的拐點作為最優投資組合,大約 a = 0.6%,Q = 20%,(然后計算投入各個資產的資金數量)x0 = 0, x1 = 0.24, x2 = 0.4, x3 = 0.1091, x4 = 0.2212.