原版的**本無法執行,被我改了很多地方:
(先發一下主函式,明天發子函式)
先來看一下動態搜尋的效果圖和最大值以及迭代曲線
主函式
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 主要是一些特徵提取 濾波類搜尋演算法。其中特徵提取主要有 區域性 全域性特徵 模...