分支限界法實現最優裝載c 最優化模型入門

2021-10-11 23:21:39 字數 2047 閱讀 2894

1.引例:

其中2.迭代下降演算法

迭代下降準則(框架演算法):

1)給出目標函式的初始迭代點

2)按一定規則產生

處的乙個

下降方向

3)再沿方向

搜尋得到

下乙個迭代點,使得

4)若滿足停機條件,則終止迭代並輸出

,否則轉步驟2)

注意:a.在適當的假設下一般可以說明演算法能在有限步之內找到最優解或得到乙個收斂到最優解的迭代點列。

1.函式:fminbnd

即求2.函式fminsearch和fminunc

3.線性規劃linprog

這裡 向量為決策變數;

為目標函式係數;其餘為不等式、等式條件約束的係數、向量。

為決策變數的下邊界和上邊界。

混合整數線性規劃intlinprog,新增限制條件:

4.非線性規劃fmincon

表示非線性不等式、等式約束,

表示非線性目標函式。

程式設計思路:

首先建立m檔案定義優化目標函式 function f = fun(x)

然後建立m檔案定義非線性約束條件function [c,ceq] = nonlcon(x)

建立主程式,呼叫上述兩個函式代入fmincon

待續。附:

matlab優化工具箱:

%命令                    %           演算法                          %       問題

fminbnd() %**分割法,拋物線插值法 求單變數無約束最優化

[xmin,ymin] = fminbnd(fun,x1,x2);%fun是目標函式,x是搜尋區間,xminymin分別是極小點,極小值

fminsearch() %基於免導數的演算法:nelder-mead單純形方法 求多變數無約束最優化

fminunc() %基於導數的演算法:擬牛頓方法,信賴域方法 求多變數無約束最優化

[xmin,fmin] = fminsearch(fun,x0);

[xmin,fmin] = fminunc(fun,x0);

linprog() %內點法、(對偶)單純形法、有效集法 求線性規劃問題

intlinprog() %分支定界法 求解混合整數線性規劃問題

[xmin,fmin] = linprog(c,a,b,aeq,beq,lb,ub)如果條件無則用空矩陣代替

[xmin,fmin] = intlinprog(c,i,a,b,aeq,beq,lb,ub)如果條件無則用空矩陣代替

fmincon() %信賴域法、有效集法、內點法、序列二次規劃 求多變數有約束最優化

[xmin,fmin]=fmincon(fun,x0,a,b,aeq,beq,lb,ub,nonlcon)%nonlcon是針對非線性約束編寫的函式檔名

ga() %遺傳演算法 求困難複雜多型最優化的最優解

partideswarm() %粒子群優化 求困難複雜多型最優化的最優解

simulannealbnd() %模擬退火 求困難複雜多型最優化的最優解

^張勇主編,數學實驗與數學建模基礎,電子科技大學出版社,2020

分枝限界法 最優裝載問題

採用分枝限界法求解最優裝載問題。給出以下裝載問題的求解過程和結果 n 5,貨櫃重量為w 5,2,6,4,3 限重為 w 10。在裝載重量相同時最優裝載方案是貨櫃個數最少的方案。include include using namespace std define maxn 21 最多的貨櫃數 問題表示...

回溯法 最優裝載問題

以簡單的語言說,就是給定兩艘船,要求一批貨物分別裝入。這道問題採用 先盡可能以最大載重裝一艘船,再以剩下的貨物裝另一艘 這樣,我們就將問題簡化為了0 1揹包問題。採用回溯法構建解空間,之後遍歷即可。思路很簡單,的注釋我也寫的很詳細了。def traceback depth global n,good...

最優裝載問題回溯法 貪心選擇之最優裝載問題

有一批貨櫃要裝上一艘載重量為c的輪船。其中貨櫃i的重量為wi。最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能多的貨櫃裝上輪船。問題可以描述為 該問題可以用貪心演算法求解,要使用貪心演算法解決問題,我們必須先證明 1 該問題具備貪心選擇性質 2 該問題具備最優子結構性質.1 首先先證明貪心選...