案例18:基于鱼群算法的函数寻优算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【注】原帖网址:/thread-9222-1-1.html My Email:hehaiwanghui@

案例18:基于鱼群算法的函数寻优算法

*

**********************************************************************************

论坛申明:

1 案例为原创案例,论坛拥有帖子的版权,转载请注明出处(MATLABSKY论坛,《MATLAB智能算法30个案例分析》

2 案例内容为书籍原创内容,内容为案例的提纲和主要内容。

3 作者长期驻扎在板块,对读者和会员问题有问必答。

4 案例配套有教学视频和完整的MATLAB程序,MATLAB程序在购买书籍后可以自由下载,教学视频需要另外购买。

MATLAB书籍预定方法和优惠服务:/thread-9258-1-1.html

点击这里,预览该案例程序:

/znsf/view/s18/example1.html

/znsf/view/s18/example2.html

已经预定的朋友点此下载程序源代码:/thread-9395-1-1.html

*

*********************************************************************************

*

1、人工鱼群算法原理

人工鱼群算法是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾、随机等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.

生物的视觉是极其复杂的,它能快速感知大量的空间事物,这对于任何仪器和程序都是难以与之相比的,为了实施的简便和有效,在鱼群模式中应用了如下的方法来实现虚拟人工鱼的视觉:

如图5.1所示,一虚拟人工鱼实体的当前位置为,它的视野范围为,位置

为其在某时刻的视点所在的位置,如果该位置的食物浓度高于当前位置,则考虑向该位置方向前进一步,即到达位置;如果位置不比当前位置食物浓度更高,则继续巡视视野内的其他位置。巡视的次数越多,则对视野内的状态了解更全面,从而对周围的环境有一个全方面立体的认知,这有助于做出相应的判断和决策,当然,对于状态多或无限状态的环境也不必全部遍历,允许一定的不确定性对于摆脱局部最优,从而寻找全局最优是有帮助的。

【注:帖子中的公式字符没显示】

图5.1 人工鱼的视野和移动步长

其中,位置,位置,则该过程可以表示如下:

式中,函数为产生范围(-1,1)之间的随机数, 为移动步长。由于环境中同伴的数目是有限的,因此在视野中感知同伴的位置,并相应的调整自身位置的方法与上式类似。

2、案例目录:

第五章人工鱼群算法 1

—ARTIFICIAL FISH SCHOOL ALGORITHM(AFSA) 1

5.1 案例背景 1

5.1.1人工鱼群算法原理 1

5.1.2人工鱼群算法的主要行为 2

5.1.3 问题的解决 2

5.1.4 案例分析 2

5.2 模型建立 4

5.2.1 变量及函数定义 4

5.2.2 算法流程 5

5.2.3 人工鱼群算法实现 7

5.2.3.1 鱼群初始化 7

5.2.3.2 觅食行为 7

5.2.3.4 聚群行为 7

5.2.3.5 追**为 8

5.2.3.6 随机行为 9

5.3 编程实现 9

5.3.1 鱼群初始化函数 9

5.3.2 觅食行为 10

5.3.3 聚群行为 11

5.3.4 追**为 12

5.3.5 食物浓度函数 13

5.3.6 案例1 13

5.3.7 案例2 16

5.4 总结 19

5.4.1 人工鱼群算法优点 19

5.4.2算法改进的几个方向 19

5.5 参考文献 20

3、案例实例及结果:

案例1:

一元函数的优化实例:,该函数的图形如图5.2所示:

图 5.2 一元函数图像

结果:

鱼群算法的运行结果如下:

图5.8 50次鱼群算法迭代结果

图5.9 最优解的变化C

ommand Window上的运行结果:

最优解X:1.85060

最优解Y:3.85027

Elapsed time is 1.640857 seconds.

案例2

二元函数的优化实例:

该函数的图形如图5.3所示:

图 5.3 二元函数图像

结果:

鱼群算法的运行结果如下:

图5.10 50次鱼群算法迭代结果

图5.11 最优解的变化

Command Window上的运行结果:最优解X:-0.002690.00018

最优解Y:1.00000

Elapsed time is 3.094503 seconds.

4、主程序

案例1:

1.clc

2.clear all

3.close all

4.tic

5.figure(1);hold on

6.ezplot('x*sin(10*pi*x)+2',[-1,2]);

7.%% 参数设置

8.fishnum=50; %生成50只人工鱼

9.MAXGEN=50; %最多迭代次数

10.try_number=100;%最多试探次数

11.visual=1; %感知距离

12.delta=0.618; %拥挤度因子

13.step=0.1; %步长

14.%% 初始化鱼群

15.lb_ub=[-1,2,1];

16.X=AF_init(fishnum,lb_ub);

17.LBUB=[];

18.for i=1:size(lb_ub,1)

19.LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];

20.end

21.gen=1;

22.BestY=-1*ones(1,MAXGEN); %每步中最优的函数值

23.BestX=-1*ones(1,MAXGEN); %每步中最优的自变量

24.besty=-100; %最优函数值

25.Y=AF_foodconsistence(X);

26.while gen<=MAXGEN

27.fprintf(1,'%d\n',gen)

28.for i=1:fishnum

29.[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y); %聚群行为

30.[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y); %追**为

31.if Yi1>Yi2

32.X(:,i)=Xi1;

33.Y(1,i)=Yi1;

34.else

35.X(:,i)=Xi2;

36.Y(1,i)=Yi2;

相关文档
最新文档