6.運籌學復刻 之其他單純形法+靈敏度分析


單純形法

單純形法羅列

普通單純形法
	從一個基本可行解開始,迭代到最優可行解
對偶單純形法
    從一個最優不可行解開始,迭代到最優可行解
廣義單純形法
    從一個不最優不可行的解,迭代到最優可行解

1.普通單純形法:
最簡單款,前面講的很詳細

2.對偶單純形法:
標準形式:
max Z = CTX
(最優性條件:C <= 0)
AX <= b

or

min Z = CTX
(最優性條件:C >=0)
AX <= b

解釋,必須 AX <= b的原因:
爲了可以通過引入 鬆弛變量 直接獲得 初始基本不可行解
例如 X + Y = 1,標準化後得到兩個:
X + Y <= 1
-X - Y<= -1
此時因爲第二個式子不滿足 b>=0,所以是不可行解
最優性條件:
1.極大值問題,我們單純形表的最優性判斷:Z行係數爲非負數,即C<=0
2.極小值問題,我們單純形表的最優性判斷:Z行係數爲非正數,即C>=0

化標準型的方法:引入冗餘人工約束

對於目標函數中,不滿足最優性的係數,添加冗餘人工約束來描述:

eg. max Z = 2X1 - X2 + X3,由最優性條件,C <= 0
所以對於:X1,X3添加約束:

X1 + X3 <= M(因爲M很大,所以這是一個冗餘約束,對原先解空間沒有影響)

此時考慮因爲Z中有不滿足最優的係數,所以依舊不滿足最優的要求,此刻進行依次迭代即可:

1.選擇(max)Z行最負的作爲入基變量
2.選擇人工約束中的人工變量爲出基變量
解釋:
因爲我們添加的 人工約束 是針對 Z行係數不滿足的 變量,
所以 人工約束中的鬆弛變量的對應行 只有 對應 Z行係數負的 那一列 有值 1,其餘爲 0
例如上例中,假設 X1 +X3 +X7 = M,則X7對應行係數:1 0 1 0 ...

所以我們選擇 Z行係數 - 最負的值×【X7】,我們讓最小的加上X變成了0,
其餘負的都加上了X,所以必定是非負

到此完成了用對偶單純形法解決問題的初始化。

迭代過程:

1.選離基變量:取值最負的基變量(最不可行的)

2.選進基變量:針對離基變量那一行係數,只選擇係數爲負數的列,
  Z行係數/對應係數,選擇最小的,爲進基變量
如果不存在係數爲負數,則無可行解

3.持續迭代,當所有b>=0後,答案爲最終解

3.廣義單純形法:混合普通單純形法+對偶單純形法
標準型:
max/min Z = CTX
AX <= b
X >= 0,b,c無條件

AX<=b 目的還是可以輕鬆地通過鬆弛變量找到初始解,此時這個解既不可行,又不最優

意味着:對max:最後一列有小於0,Z行有小於0

解題:
1.恢復可行:對偶單純形法
2.恢復最優:普通單純形法



後最優分析(靈敏度分析)

目的:在模型參數、模型結構變化時,通過簡便方法得到新的解
1.b變化
B:初始基變量在最終表中對應的係數
XBnew= B-1b
Znew = CTXnew


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章