蒲公英優(yōu)化器Dandelion Optimizer附matlab代碼
?作者簡(jiǎn)介:熱愛(ài)科研的
開(kāi)發(fā)者,修心和技術(shù)同步精進(jìn),matlab項(xiàng)目合作可私信。??個(gè)人主頁(yè):
??個(gè)人信條:格物致知。
更多Matlab仿真內(nèi)容點(diǎn)擊??
?? ? ?
? ? ? ? ?
? 內(nèi)容介紹
群智能優(yōu)化算法作為當(dāng)前優(yōu)化算法中的一個(gè)主要研究熱點(diǎn),經(jīng)過(guò)近年的發(fā)展,已經(jīng)發(fā)展為較為新穎的演化計(jì)算技術(shù),受到越來(lái)越多不同領(lǐng)域研究工作者的關(guān)注.群智能優(yōu)化算法比傳統(tǒng)優(yōu)化方法求解各種復(fù)雜優(yōu)化問(wèn)題上表現(xiàn)出了更好的高效性以及穩(wěn)定性,并且算法的結(jié)構(gòu)和操作性相對(duì)簡(jiǎn)單,隱含并行性,容易理解和編程,因此在優(yōu)化技術(shù)應(yīng)用上有較強(qiáng)的實(shí)用性,具有一定的現(xiàn)實(shí)意義.本文首先介紹了群體智能優(yōu)化算法研究背景、意義及其國(guó)內(nèi)外研究現(xiàn)狀和應(yīng)用情況.本文的主要研究工作如下:1.通過(guò)模擬蒲公英飄落繁殖過(guò)程,提出了一種新的群體智能算法——蒲公英智能優(yōu)化算法(Dandelion Optimization Algorithm,簡(jiǎn)稱DOA),蒲公英智能優(yōu)化算法為解決優(yōu)化問(wèn)題提供一種新的基礎(chǔ)算法.模擬蒲公英在繁殖過(guò)程中飄落生長(zhǎng)的植物特性,以彌漫式并行搜索方式對(duì)解空間進(jìn)行搜索,直到找到最優(yōu)解為止。
每值春夏之際,大地上長(zhǎng)滿了成片的蒲公英,每片的蒲公英群都會(huì)由一定范圍內(nèi)星星點(diǎn)點(diǎn)
的蒲公英繁殖而來(lái),受蒲公英飄落繁殖現(xiàn)象的啟發(fā),本人在導(dǎo)師高岳林的指導(dǎo)下提出模擬蒲公
英繁衍方式的蒲公英優(yōu)化算法( DOA ),將蒲公英繁殖生長(zhǎng)的空間比作成優(yōu)化問(wèn)題的搜索空間,
將生長(zhǎng)在此區(qū)域內(nèi)的母代和子代蒲公英個(gè)體看作是問(wèn)題的候選解,通過(guò)目標(biāo)函數(shù)評(píng)估蒲公英
子代的適應(yīng)度值,算法越接近目標(biāo)函數(shù)的最優(yōu)解,對(duì)應(yīng)的適應(yīng)度值就會(huì)越高,以此來(lái)比較算法
的優(yōu)劣性.根據(jù)蒲公英植物的生長(zhǎng)繁殖規(guī)律,實(shí)時(shí)對(duì)蒲公英子代的飄落位置進(jìn)行更新,同時(shí)對(duì)
蒲公英子代進(jìn)行增肥和灌溉,提高幼苗的生長(zhǎng)質(zhì)量.幼苗作為下一階段蒲公英繁衍的位置,且
生長(zhǎng)的蒲公英個(gè)體將保留在原來(lái)的位置上.通過(guò)對(duì)挑選出的優(yōu)質(zhì)蒲公英個(gè)體進(jìn)行不停的繁殖,
這樣的操作不停地進(jìn)行,繁殖的后代也會(huì)不停的接近最適合蒲公英種子生長(zhǎng)的位置附近,最終
在算法滿足終止條件時(shí),蒲公英種群中適應(yīng)度值最優(yōu)的位置就當(dāng)作目標(biāo)函數(shù)在解空間的最優(yōu)
值.
蒲公英算法通過(guò)實(shí)數(shù)編碼的方式,隨機(jī)地初始化種群,種群的迭代過(guò)程是受 3 個(gè)分量(風(fēng)
速、風(fēng)向、種群密度)的共同作用,在整個(gè)迭代過(guò)程中,為了保持種群多樣性,對(duì)蒲公英種子落
地生根時(shí)的位置進(jìn)行更新移植,并通過(guò)施肥和灌溉等操作,直到滿足終止條件


? 部分代碼
%__________________________________________________________________
%? Dandelion Optimizer
%? Developed in MATLAB R2018a
%? Engineering Applications of Artificial Intelligence
%? DOI:10.1016/j.engappai.2022.105075
%
%__________________________________________________________________
clear all?
clc
N=30; % Number of search agents
Max_iter=500; % Maximum numbef of iterations
F_name='F15'; % Name of the test function
% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(F_name);
tic;
[Bestfitness,Bestposition,Convergencecurve]=DO(N,Max_iter,lb,ub,dim,fobj);
Run_time=toc;
figure('Position',[500 500 660 290])
%Draw search space
subplot(1,2,1);
func_plot(F_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])
%Draw objective space
subplot(1,2,2);
semilogy(1:Max_iter,Convergencecurve,'color','r','linewidth',2.5);
title('Convergence curve');
xlabel('Iteration');
ylabel('Best score obtained so far')
display(['The running time is:', num2str(Run_time)]);
display(['The best fitness is:', num2str(Bestfitness)]);
display(['The best position is: ', num2str(Bestposition)]);
? 運(yùn)行結(jié)果



? 參考文獻(xiàn)
?? 關(guān)注我領(lǐng)取海量matlab電子書(shū)和數(shù)學(xué)建模資料
??部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除