演算法函式 Matlab 人工魚群演算法(主函式)

2021-10-14 17:08:58 字數 2430 閱讀 4495

原版的**本無法執行,被我改了很多地方:

(先發一下主函式,明天發子函式)

先來看一下動態搜尋的效果圖和最大值以及迭代曲線

主函式

clcclear all 

close all

tic%% 引數設定

fishnum=100;       %生成100只人工魚

maxgen=100;        %最多迭代次數

try_number=100;    %最多試探次數

visual=1;          %感知距離

delta=0.618;       %擁擠度因子

step=0.1;          %步長

%% 初始化魚群

lb_ub=[-10,10,2];

x=af_init(fishnum,lb_ub);

lbub=repmat(lb_ub(1:2),lb_ub(1,3),1);   %用作邊界判斷

gen=1;

times=1;

besty=zeros(1,maxgen);   %每步中最優的函式值

bestx=zeros(2,maxgen);   %每步中最優的自變數

besty=-inf;                %最優函式值

y=af_food(x);

%% 初始狀態圖

[x_plot,y_plot] = meshgrid(-10:0.1:10);

z=(sin(x_plot)./x_plot).*(sin(y_plot)./y_plot);

mesh(x_plot,y_plot,z);

xlabel('第一維度x的取值範圍');

ylabel('第二維度y的取值範圍');

zlabel('函式值');

hold on;

%% 演算法開始

while gen<=maxgen

for i=1:fishnum   %每個座標點都更新一次

[xi1,yi1]=af_swarm(x,i,visual,step,delta,try_number,lbub,y);     %聚群行為

[xi2,yi2]=af_follow(x,i,visual,step,delta,try_number,lbub,y);    %追尾行為

%這兩種行為的xnext更新方式類似,保留乙個就好

if yi1>yi2     %選擇聚群和追尾行為的較大值保留

x(:,i)=xi1;

y(1,i)=yi1;

else

x(:,i)=xi2;

y(1,i)=yi2;

endend

if times==2   %兩次重新整理一次

cla;

mesh(x_plot,y_plot,z);

plot3(x(1,:),x(2,:),y,'o','color',[gen/maxgen,0,0])

title('魚群演算法動態搜尋');

pause(0.2);

times=0;

end%顏色根據迭代次數而顏色不同

[ymax,index]=max(y);

if ymax>besty

besty=ymax; %更新一下最大值

bestx=x(:,index);

besty(gen)=ymax;

bestx(:,gen)=x(:,index);

else

besty(gen)=besty(gen-1);   %如果沒有上次值大則保持

bestx(:,gen)=bestx(:,gen-1);

end    

gen=gen+1;

times=times+1;

endfigure

mesh(x_plot,y_plot,z);

hold on;

plot3(bestx(1),bestx(2),besty,'r*','markersize',10)

title('魚群演算法最大值點')

figure

plot(besty)

xlabel('迭代次數')

ylabel('優化值')

title('魚群演算法迭代過程')

disp(['最大值位置:',num2str(bestx')])

disp(['最大函式值:',num2str(besty,'%1.5f')])

toc;

人工蜂群演算法(ABC)演算法筆記丨matlab實現

二 演算法流程 在乙個n維空間,種群規模為np,即僱傭蜂的個數,僱傭蜂 蜜源 的位置xi 那麼其目標函式值指定為fit 初始化後進入僱傭蜂階段 其中,是擾動因子,通常設定區間 1,1 i j,在種群np中尋找乙個不等於i的蜜源。更新蜜源並求解目標函式值,將使用貪婪選擇方法將xi替換或保留。選擇結束後...

人工勢場演算法 Matlab版原始碼

人工勢場演算法,用於路徑規劃 main.m程式 初始化車的引數 xo 0 0 起點位置 k 15 計算引力需要的增益係數 k 0 初始化 m 5 計算斥力的增益係數,都是自己設定的。po 2.5 障礙影響距離,當障礙和車的距離大於這個距離時,斥力為0,即不受該障礙的影響。也是自己設定。n 7 障礙個...

目標識別與跟蹤演算法matlab 目標跟蹤演算法 彙總

一些目標跟蹤領域的benchmark,後期將會保持更新。參考 online object tracking a benchmark mot16 a benchmark for multi object tracking 主要是一些特徵提取 濾波類搜尋演算法。其中特徵提取主要有 區域性 全域性特徵 模...