惊!?人工鱼群算法与函数寻优

基于人工鱼群的函数寻优算法

人工鱼群算法

在这里插入图片描述

人工鱼群算法是指在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优。人工鱼群

 鱼类通常具有以下行为:
 觅食行为:这是生物一种最基本的行为,也是趋向食物的一种活动;一般认为这种行为是通过视觉或味觉感知水中
 的食物量或浓度来选择趋向的。
 聚群行为:这是鱼类常见的一种现象,大量或少量的鱼都能聚集成群,这是它们在进化过程中形成的一种生存
 方式,可以进行集体觅食或躲避敌害。
 随机行为:鱼在水中悠闲自由游动,基本上是随机的,其实它们也是为了更大范围地寻找食物和伙伴。

以上活动是鱼的几个典型的行为,这些行为在不同时刻会相互转化,而这种转换通常是鱼通过对环境的感知来自主实现的,这些行为与鱼的觅食和生存都存在着密切的关系,并且与优化问题的解决也有着密切的关系。

例题与算法思路

在这里插入图片描述
在这里插入图片描述

代码实现

详细代码和过程可以私聊笔者或评论

% 鱼群算法
clear
clc
figure(1)
hold on
% 参数设置及鱼群初始化
fishnum = 100;
maxgen = 50;
trynumber = 100;
visual = 2.5;
delta = 0.618;
step = 0.3;
lb_ub = [-10,10,2;];
x = afinit(fishnum,lb_ub);
lbub = [];
for i = 1:size(lb_ub,1)
    lbub = [lbub;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];
end
gen = 1;
BestY = -1*ones(1,maxgen);
BestX = -1*ones(2,maxgen);
besty = -100;
y = affood(x);
while gen < maxgen
    for i = fishnum
        [xi1,yi1] = afswarm(x,i,visual,step,delta,trynumber,lbub,y);     % 聚群行为
        [xi2,yi2] = affollow(x,i,visual,step,delta,trynumber,lbub,y);   % 追尾行为
    end
    if yi1 > yi2
        x(:,i) = xi1;
        y(1,i) = yi1;
    else
        x(:,i) = xi2;
        y(1,i) = yi2;
    end
    [ymax,index] = max(y);
    figure(1)
    hold on
    plot(x(1,index),x(2,index),'.','color',[gen/maxgen,0,0])
    hold on
    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;
end
plot(bestx(1),bestx(2),'ro','MarkerSize',100)
ylabel('y')
title('鱼群算法在迭代过程中最优坐标的移动')
figure
plot(1:maxgen,BestY)
xlabel('迭代次数')
ylabel('优化值')
title('迭代过程')
disp(['最优解X',num2str(bestx','%1.5f')])
disp(['最优解Y',num2str(besty,'%1.5f')])
xlabel('x')

详细代码和过程可以私聊笔者或评论

结果与分析

在这里插入图片描述
在这里插入图片描述
很感谢你能看到这里,向你比心哦。
关于此类问题,如果还有问题可以参看我的其他文章,如果能帮助到大家,是笔者的荣幸。
多种群遗传算法的函数寻优
遗传算法与非线性规划求解
GA在一般线性或非线性规划问题中的应用
浅谈使用遗传算法工具箱的优化实例
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wlfyok/article/details/108044935