多目标优化(智能算法)
生活随笔
收集整理的這篇文章主要介紹了
多目标优化(智能算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多目標優化模型求解方案
文章目錄
- (1) 概念引入
- 1.多目標優化模型
- 2.支配
- (2) 多目標優化的傳統解法
- (3) 智能優化算法
- (3) matlab的智能優化算法
- 1. 基本的兩個函數
- 2. 例子
- 3. 如果有三個目標
(1) 概念引入
1.多目標優化模型
- 數學模型(一般都轉化成最小問題)min?F(x)=(f1(x),f2(x),…,fm(x))s.t.x∈Ω\min{F(x)}=(f_1(x),f_2(x),\dots,f_m(x))\\ ~~\\ s.t. x\in\OmegaminF(x)=(f1?(x),f2?(x),…,fm?(x))??s.t.x∈Ω
- 決策空間: x=(x1,x2,…,xn)x=(x_1,x_2,\dots,x_n)x=(x1?,x2?,…,xn?)所在的空間 Ω\OmegaΩ,其中 Ω={x∈Rn∣gi(x)≤0,i=1,2,…,p}\Omega=\{x\in R^n|g_i(x)\le0,i=1,2,\dots,p \}Ω={x∈Rn∣gi?(x)≤0,i=1,2,…,p}。
- 目標空間:mmm維向量F(x)F(x)F(x)所在的空間。
2.支配
- 定義1:對最小化問題,一個向量 u=(u1,u2,…,uw)u=(u_1,u_2,\dots,u_w)u=(u1?,u2?,…,uw?) 稱為支配(優于)另一個向量 v=(v1,v2,…,vw)v=(v_1,v_2,\dots,v_w)v=(v1?,v2?,…,vw?),當且僅當 ui≤vii=1,2,?,mu_i\le v_i i=1,2,\dotsb,mui?≤vi?i=1,2,?,m 且 ?j∈{1,2,?,m},uj<vj。\exist j\in\{1,2,\dotsb,m\},u_j<v_j。?j∈{1,2,?,m},uj?<vj?。
- 定義2:對于任意兩個自變量向量x1,x2?Ωx_1,x_2\exist\Omegax1?,x2??Ω,如果下列條件成立:fi(x1)≤fi(x2),?i∈{1,2,?,m}fj(x1)≤fj(x2),?j∈{1,2,?,m}f_i(x_1)\le f_i(x_2),\forall i\in\{1,2,\dotsb,m\}\\ f_j(x_1)\le f_j(x_2),\forall j\in\{1,2,\dotsb,m\}fi?(x1?)≤fi?(x2?),?i∈{1,2,?,m}fj?(x1?)≤fj?(x2?),?j∈{1,2,?,m}則稱 x1x_1x1? 支配 x2x_2x2?。
- 定義3:
- 如果 QQQ 中沒有支配(優于)xxx 的解,則稱 xxx 是問題的一個Pareto最優解。
- Pareto最優解的全體被稱作Pareto最優解集;Pareto最優解集在目標函數空間的像集稱為Pareto Front(Pareto前沿,陣(界)面)。
(2) 多目標優化的傳統解法
- 加權法
- 理想點法(TOPSIS)
- 分層序列法(就是每次先求出一個最優值,然后把這個最優值當作不等式限制)
- 把 mmm 個目標篇按重要程度排序。假定 f1(x)f_1(x)f1?(x) 最重要,fm(x)f_m(x)fm?(x) 最不重要。
- 先求問題min?f1(x)s.t.x∈Ω\min{f_1(x)}\\s.t. x\in\Omegaminf1?(x)s.t.x∈Ω 的最優解 x(1)x^{(1)}x(1) 及最優值 f1?f_1^*f1??。
- 再求問題min?f2(x)s.t.x∈Ω1=Ω∩{x∣f1(x)≤f1?}\min{f_2(x)}\\s.t. x\in\Omega_1=\Omega\cap\{x|f_1(x)\le f_1^*\}minf2?(x)s.t.x∈Ω1?=Ω∩{x∣f1?(x)≤f1??} 的最優解 x(1)x^{(1)}x(1) 及最優值 f1?f_1^*f1??。
- 重復上面的步驟。
(3) 智能優化算法
- 這里選取 NSGA-II 方法
- 算法簡介
- 首先隨機產生種群規模為 NNN 的初始種群 PtP_tPt?,進化代數 t=0t=0t=0。
- 開始循環,對 PtP_tPt? 進行交叉變異操作生成新種群 QtQ_tQt?。
- 取 Rt=Pt∪QtR_t=P_t\cup Q_tRt?=Pt?∪Qt?。
- 對 RtR_tRt? 進行非劣分類。
- 按非劣等級從低到高選出 NNN 個個體填充到 Pt+1P_{t+1}Pt+1? 中。
- 獲取 RtR_tRt? 中的第一非劣等級個體集,判斷并決定該非劣等級能否全被新種群容納。如果能,將該非劣等級的所有個體填充到新種群中,繼續判斷下一非劣等級能否全被新種群容納。
- 如此反復,直到不能容納該非劣等級的所有個體,假設為第 i+1i+1i+1 級。對最后不能被完全容納的非劣組中的個體求其擁擠距離,并選擇分布最廣的個體填充滿新種群。
- 重復
- 快速非支配排序方法
- 首先不被任何點支配的點選出來,成為 F1F_1F1?。
- 把選出來的點支配的點的支配關系全部刪除,然后再看現在有哪些點不被任何點支配,成為 F2F_2F2?.
- 擁擠距離di=∑m=1M∣fmi+1?fmi?1∣d_i=\sum_{m=1}^{M}|f_m^{i+1}-f_m^{i-1}|di?=m=1∑M?∣fmi+1??fmi?1?∣
- did_idi? 表示第 iii 個個體的擁擠距離。
- i?1i-1i?1 和 i+1i+1i+1 是個體 iii 沿著 iii 所在的Pareto Front Line 的兩邊鄰近的兩個個體。
- fmi+1f_m^{i+1}fmi+1? 和 fmi?1f_m^{i-1}fmi?1? 分別表示 i?1i-1i?1 和 i+1i+1i+1 個個體第 mmm 個目標函數值。(下面的圖m=1,2m=1,2m=1,2)
(3) matlab的智能優化算法
1. 基本的兩個函數
- 參數設置
- options=gaoptimset('paretoFraction',0.3,'populationsize',100'generations',200,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto);
- paretoFraction:最優個體系數這里設為0.3
- populationsize:種群大小這里設為100
- generations:最大進化代數這里設為200
- stallGenLimit:停止代數這里設為200
- TolFun:適應度函數偏差這里設為1e-10
- gaplotpareto:繪制Pareto前沿
- 函數引用
- [X,FVAL]=gamultiobj(fitnessfcn,nvars,A,b, Aeq,beq,lb,ub,nonlcon,options))
- fitnessfcn:函數句柄。
- nvars:變量個數。
- ub,lb:上下限。
- A,b:線性不等式約束。
- Aeq,beq:線性等式約束。
2. 例子
- 函數定義
- 進行計算
- 結果
3. 如果有三個目標
- 可以先優化出來,得到 fval 然后用 scatter3 進行繪制。
- 對上面的問題增加條件 minx1+x2min~{x_1+x_2}min?x1?+x2?
- 增加 scatter3(fval(:,1),fval(:,2),fval(:,3))
- 得到結果
現在已經轉移到知乎,之后的文章會在知乎更新。
總結
以上是生活随笔為你收集整理的多目标优化(智能算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mcafee(麦咖啡)8.5i 使用设置
- 下一篇: dell服务器装不了无线网卡,DELL