MATLAB演算法多元宇宙優化器

Mondo 科技 更新 2024-03-06

該演算法的靈感主要來自宇宙學中的三個概念:白洞、黑洞和蟲洞。 這三個概念的數學模型分別用於探索、開發和區域性搜尋。 2015年發表在SCI權威期刊《神經計算與應用》上。擁有近 2000+ 次引用,它仍然有很大的潛力。 多元宇宙優化演算法利用白洞和蟲洞的概念來探索搜尋空間,相反,蟲洞在多元宇宙優化演算法中協助搜尋空間的發展。 假設每個解都是乙個宇宙,並且每個解中的變數都是宇宙中的物件。 在求解優化問題的過程中,多元宇宙優化演算法應用了以下規則:物體可以通過白洞和黑洞隧道在不同的宇宙之間移動。 當在白洞和黑洞隧道之間建立兩個宇宙時,宇宙有膨脹率,膨脹率較高的宇宙有白洞,膨脹率較低的宇宙被認為有黑洞,通過粒子從白洞轉移到黑洞位置的原理,對宇宙中的粒子進行模擬通過蟲洞。這種機制使得宇宙之間可以輕易地交換物體,無論宇宙中物質的膨脹速度如何,宇宙中的所有物質都會隨機地通過蟲洞移動,到達宇宙的最佳位置。 其中,整個宇宙的迭代次數,可以確保平均暴脹率的提高。 在每次迭代中,根據其通貨膨脹率的分類,依靠輪盤機制來建立乙個白洞。 演算法個體的組成如下:

其中 d 是變數的數量,n 是宇宙的數量(候選解)。

step1.初始化控制引數:Universe數n,引數wep、tdr、閾值h和最大迭代次數itermax;

step2.初始化宇宙群,找到當前宇宙黑洞及其位置,計算其適應度值;

step3.根據步驟2中得到的計算值,初始化最優值和最優記錄點。

step4.所有個體都從白洞轉移到黑洞。 以當前最優宇宙定位點為中心,根據轉移聚合規則生成新的最優定位點,並替換原有點。

step5.計算各點的擬合度,記錄最優值和最優宇宙點。

step6.黑洞個人更新。 設定WEP,如果黑洞的2R WEP和更新後的個體適應度值優於原來,則按照更新後的公式(23)更新個人,否則不會更新。

step7.記錄最佳值和最佳值。

step8.評估整個宇宙群落並分析結果。

step9.如果迭代次數小於指定的迭代次數,請執行步驟4,否則執行步驟10。

step10.如果滿足演算法的最終先決條件,則輸出最優解並完成結束,否則繼續步驟 4。

為了驗證結果,將MVO演算法與灰狼優化演算法GWO、粒子群優化演算法PSO、遺傳演算法GA和引力搜尋演算法GSA進行了對比。 結果證明,該演算法能夠提供非常有競爭力的結果,並且在大多數測試平台上優於文獻中的最佳演算法。 實際案例研究的結果也證明了MVO在解決具有未知搜尋空間的實際問題方面的潛力。

function[best_universe_inflation_rate,best_universe,convergence_curve]=mvo(n,max_time,lb,ub,dim,fobj)%two variables for s**ing the position and inflation rate (fitness) of the best universebest_universe=zeros(1,dim);best_universe_inflation_rate=inf;%initialize the positions of universesuniverses=initialization(n,dim,ub,lb);%minimum and maximum of wormhole existence probability (min and max in% eq.(3.3) in the **wep_max=1;wep_min=0.2;convergence_curve=zeros(1,max_time);%iteration(time) countertime=1;%main loopwhile time %eq. (3.3) in the **wep=wep_min+time*((wep_max-wep_min)/max_time); tr**elling distance rate (formula): eq. (3.4) in the **tdr=1-((time)^(1/6)/(max_time)^(1/6));inflation rates (i) (fitness values) inflation_rates=zeros(1,size(universes,1));for i=1:size(universes,1) %boundary checking (to bring back the universes inside search % space if they go beyoud the boundaries flag4ub=universes(i,:)ub; flag4lb=universes(i,:)universes(i,:)=(universes(i,:)flag4ub+flag4lb)))ub.*flag4ub+lb.*flag4lb; %calculate the inflation rate (fitness) of universes inflation_rates(1,i)=fobj(universes(i,:)elitism if inflation_rates(1,i) best_universe_inflation_rate=inflation_rates(1,i); best_universe=universes(i,:)end end [sorted_inflation_rates,sorted_indexes]=sort(inflation_rates); for newindex=1:n sorted_universes(newindex,:)=universes(sorted_indexes(newindex),:end %normaized inflation rates (ni in eq. (3.1) in the **normalized_sorted_inflation_rates=normr(sorted_inflation_rates); universes(1,:)= sorted_universes(1,:)update the position of universes for i=2:size(universes,1)%starting from 2 since the firt one is the elite back_hole_index=i; for j=1:size(universes,2) r1=rand();if r1 white_hole_index=roulettewheelselection(-sorted_inflation_rates);%for maximization problem -sorted_inflation_rates should be written as sorted_inflation_rates if white_hole_index==-1 white_hole_index=1; end %eq. (3.1) in the **universes(back_hole_index,j)=sorted_universes(white_hole_index,j); end if (size(lb,2)==1) %eq. (3.2) in the **if the boundaries are all the same r2=rand();if r2 r3=rand();if r3<0.5 universes(i,j)=best_universe(1,j)+tdr*((ub-lb)*rand+lb); end if r3>0.5 universes(i,j)=best_universe(1,j)-tdr*((ub-lb)*rand+lb); end end end if (size(lb,2)~=1) %eq. (3.2) in the **if the upper and lower bounds are %different for each variables r2=rand();if r2 r3=rand();if r3<0.5 universes(i,j)=best_universe(1,j)+tdr*((ub(j)-lb(j))*rand+lb(j));end if r3>0.5 universes(i,j)=best_universe(1,j)-tdr*((ub(j)-lb(j))*rand+lb(j));end end end end end %update the convergence curve convergence_curve(time)=best_universe_inflation_rate; %print the best universe details after every 50 iterations% if mod(time,50)==0% display(['at iteration ', num2str(time), ' the best universes fitness is ', num2str(best_universe_inflation_rate)])end time=time+1;endendfunction choice = roulettewheelselection(weights) accumulation = cumsum(weights); p = rand() accumulation(end); chosen_index = -1; for index = 1 : length(accumulation) if (accumulation(index) >p) chosen_index = index; break; end end choice = chosen_index;end

相關問題答案

    MATLAB 演算法排序演算法(如下)。

    這次MATLAB演算法的主題是排序演算法 下圖 參考資料和分類方法基本都是網路上第一,比如維基百科 CSDN等。會附上原理部分,上面也會有 便於直觀理解,就不多說了。.插入排序。直接插入 由於 MATLAB 中的向量長度不確定,因此寫出的 看起來很簡單。但實際上,插入排序要複雜得多。由於二進位搜尋在...

    AI演算法專案優化流程

    演算法優化的除錯過程可能會因具體情況而異,但通常包括以下關鍵步驟,希望對您有所幫助。通過以程,可以有效地識別和解決演算法優化過程中的問題,提高演算法的效能和穩定性。北京木琪移動科技是國內最專業的軟體外包開發公司,歡迎前來交流合作。測試初始版本 實現並測試演算法的初始版本,以確保其有效並產生可用的結果...

    享受多元宇宙之旅,VR宇宙公園將帶來一場感官的神奇盛宴

    作為中國宮殿級的豪華地標購物中心,上海國際金融中心致力於打造世界頂級購物中心的頂級商業空間,引領時尚風尚。歡樂的頌歌響起,聖誕節如期而至,上海國金中心商場將舉行 享受多元宇宙我們邀請了日本著名藝術家Kota Yamaji打造乙個多元宇宙聖誕公園,增添了設計感和互動的節日裝置場景,如VR宇宙飛船 失重...

    程式設計思維在演算法優化中的應用

    隨著計算機技術的不斷發展,演算法優化已成為電腦科學的乙個重要研究方向。程式設計思維在演算法優化中起著至關重要的作用。本文將從程式設計思維的角度入手,探討其在演算法優化中的應用。.程式設計思維概述。程式設計思維是一種解決問題的思維方式,它採用計算機的操作方式,將現實世界的問題轉化為計算機可以理解和處理...

    推薦系統多目標優化演算法研究

    推薦系統作為資訊檢索和過濾的重要應用領域,近年來受到廣泛關注。在眾多的推薦系統演算法中,多目標優化演算法由於可以同時考慮多個目標並找到它們之間的平衡點,逐漸成為研究熱點。本文將對推薦系統中的多目標優化演算法進行深入研究,包括其核心思想 常用方法和未來發展方向。.多目標優化演算法概述。傳統的推薦系統演...