基于Matlab實(shí)現(xiàn)多目標(biāo)粘液霉菌算法的示例代碼
1.概述
多目標(biāo)粘液霉菌算法(MOSMA),這是最近開(kāi)發(fā)的粘液霉菌算法(SMA)的多目標(biāo)變體,用于處理工業(yè)中的多目標(biāo)優(yōu)化問(wèn)題。最近,為了處理優(yōu)化問(wèn)題,已經(jīng)為優(yōu)化社區(qū)推薦了幾種元啟發(fā)式和進(jìn)化優(yōu)化技術(shù)。在評(píng)估多目標(biāo)優(yōu)化(MOO)問(wèn)題時(shí),這些方法往往受到低質(zhì)量解的影響,而不是解決識(shí)別帕累托最優(yōu)解的準(zhǔn)確估計(jì)和增加所有目標(biāo)的分布的目標(biāo)函數(shù)。SMA方法遵循從實(shí)驗(yàn)室實(shí)驗(yàn)中粘液霉菌振蕩行為中獲得的邏輯。與其他成熟的方法相比,SMA算法顯示出強(qiáng)大的性能,它是通過(guò)使用正負(fù)反饋系統(tǒng)結(jié)合最佳食物路徑而設(shè)計(jì)的。所提出的MOSMA算法采用相同的底層SMA收斂機(jī)制,結(jié)合精英非支配排序方法來(lái)估計(jì)帕累托最優(yōu)解。作為后驗(yàn)方法,在MOSMA中保持多目標(biāo)公式,并利用擁擠距離運(yùn)算符來(lái)確保增加所有目標(biāo)中最佳解決方案的覆蓋范圍。為了驗(yàn)證和確認(rèn)MOSMA的性能,考慮了41個(gè)不同的案例研究,包括無(wú)約束,約束和現(xiàn)實(shí)世界的工程設(shè)計(jì)問(wèn)題。將MOSMA的性能與多目標(biāo)共生生物搜索(MOSOS),基于分解的多目標(biāo)進(jìn)化算法(MOEA / D)和多目標(biāo)水循環(huán)算法(MOWCA)在不同的性能指標(biāo)方面進(jìn)行了比較,例如代際距離(GD),倒置代際距離(IGD),最大傳播(MS),間距和運(yùn)行時(shí)。仿真結(jié)果驗(yàn)證了所提算法在實(shí)現(xiàn)線性、非線性、連續(xù)和離散帕累托最優(yōu)前沿等多目標(biāo)問(wèn)題高質(zhì)量解方面的優(yōu)勢(shì)。結(jié)果表明了所提算法在解決復(fù)雜的多目標(biāo)問(wèn)題方面的有效性。
2.算法過(guò)程
3.數(shù)值實(shí)驗(yàn)
4.Matlab代碼實(shí)現(xiàn)
%% (ZDT3) function f = zdt3 (x) % 兩個(gè)目標(biāo)函數(shù) % 變量數(shù)目是 30. x [0,1] f = []; n=length(x); g=1+9*sum(x(2:n))/(n-1); f(1)=x(1); f(2)=1-sqrt(x(1)/g)-(x(1)/g)*sin(10*pi*x(1));
%%===MOSMA:多目標(biāo)粘液霉菌算法===== %% 目標(biāo)函數(shù) % 目標(biāo)函數(shù)描述包含了有關(guān)目標(biāo)函數(shù)的信息。M為目標(biāo)空間的維數(shù),D為決策變量空間的維數(shù), % LB和UB為決策變量空間中變量的取值范圍。 % 用戶必須使用決策變量定義目標(biāo)函數(shù)。務(wù)必編輯功能‘評(píng)估_目標(biāo)',以適應(yīng)您的需要。 clc clear all D = 30; % 決策變量數(shù)目 M = 2; % 目標(biāo)函數(shù)的個(gè)數(shù) K=M+D; LB = ones(1, D).*0; % LB - 表示每個(gè)決策變量的最小值的十進(jìn)制值的向量。 UB = ones(1, D).*1; % UB - 決策變量的最大可能值向量。 GEN = 200; % 設(shè)置最大生成數(shù) ecosize = 200; % 種群數(shù)量 (NP) ishow = 10; %% 開(kāi)始進(jìn)化過(guò)程 Pareto = MOSMA(D,M,LB,UB,ecosize,GEN,ishow); Obtained_Pareto= Pareto(:,D+1:D+M); % extract data to plot Obtained_Pareto=sortrows(Obtained_Pareto,2); True_Pareto=load('ZDT3.txt'); %% 可視化 %% =========兩個(gè)目標(biāo)函數(shù)時(shí)====================== if M == 2 plot(Obtained_Pareto(:,1),Obtained_Pareto(:,2),'o','LineWidth',2,... 'MarkerEdgeColor','r','MarkerSize',2); hold on plot(True_Pareto(:,1),True_Pareto(:,2),'k'); title('采用MOSMA算法求解Pareto最優(yōu)解集'); legend('MOSMA'); xlabel('F_1'); ylabel('F_2'); %% =====3個(gè)目標(biāo)函數(shù)時(shí)========================== elseif M == 3 plot3(Obtained_Pareto(:,1),Obtained_Pareto(:,2),Obtained_Pareto(:,3),'o','LineWidth',2,... 'MarkerEdgeColor','r','MarkerSize',2); hold on plot3(Obtained_Pareto(:,1),Obtained_Pareto(:,2),Obtained_Pareto(:,3),'.','LineWidth',2,... 'MarkerEdgeColor','k','MarkerSize',6); title('采用MOSMA算法求解Pareto最優(yōu)解集'); legend('MOSMA'); xlabel('F_1'); ylabel('F_2'); zlabel('F_3'); end %% Metric Value M_IGD=IGD(Obtained_Pareto,True_Pareto); M_GD=GD(Obtained_Pareto,True_Pareto); M_HV=HV(Obtained_Pareto,True_Pareto); M_Spacing=Spacing(Obtained_Pareto,True_Pareto); M_Spread=Spread(Obtained_Pareto,True_Pareto); M_DeltaP=DeltaP(Obtained_Pareto,True_Pareto); display(['The IGD Metric obtained by MOSMA is : ', num2str(M_IGD)]); display(['The GD Metric obtained by MOSMA is : ', num2str(M_GD)]); display(['The HV Metric obtained by MOSMA is : ', num2str(M_HV)]); display(['The Spacing Metric obtained by MOSMA is : ', num2str(M_Spacing)]); display(['The Spread Metric obtained by MOSMA is : ', num2str(M_Spread)]); display(['The DeltaP Metric obtained by MOSMA is : ', num2str(M_DeltaP)]);
以上就是基于Matlab實(shí)現(xiàn)多目標(biāo)粘液霉菌算法的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Matlab多目標(biāo)粘液霉菌算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系
Linux下父進(jìn)程可以使用fork 函數(shù)創(chuàng)建子進(jìn)程,但是當(dāng)父進(jìn)程先退出后,子進(jìn)程會(huì)不會(huì)也退出呢?通過(guò)下面這個(gè)小實(shí)驗(yàn),我們能夠很好的看出來(lái)2014-02-02C++入門(mén)之vector的底層實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了C++入門(mén)之vector的底層實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-11-11C語(yǔ)言超詳細(xì)講解輪轉(zhuǎn)數(shù)組
這篇文章主要給大家講解輪轉(zhuǎn)數(shù)組的問(wèn)題,一個(gè)問(wèn)題不局限于一種解法,希望你看了本文的解決方法以后可以舉一反三自己編寫(xiě),這樣你的技術(shù)水平會(huì)有質(zhì)的提高2022-04-04C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之排序總結(jié)(一)
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法中的插入類和交換類的各種排序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12