文档库 最新最全的文档下载
当前位置:文档库 › 自适应人工鱼群算法

自适应人工鱼群算法

自适应人工鱼群算法
自适应人工鱼群算法

Computer Engineering and Applications 计算机工程与应用

基金项目:国家自然科学基金重点项目(91016006);黑龙江省自然科学基金项目(F201008)。

作者简介: 李会(1974-),男,硕士,副教授,CCF 会员,会员号:E200023308M 主要研究领域为群体智能算法、无线传感器网络;张天丽

(1975-),女,博士,副教授,主要研究方向为智能材料、器件及其应用;陶佰睿(1972-),男,博士,副教授,主要研究方向为IC 设计、无线传感器网络、语音信号处理、物联网应用;王新红(1990-),男,本科,主要研究方向为群体智能算法,数字信号处理。E-mail:mike-e@https://www.wendangku.net/doc/ca11993431.html,

动态分组方案的自适应人工鱼群算法

李会1 、张天丽2 、陶佰睿1、王新红1

LI Hui 1, ZHANG

Tian-li 2, TAO Bai-rui 1, WANG Xin-hong 1 1.齐齐哈尔大学 通信与电子工程学院 黑龙江 齐齐哈尔 161006 2.北京航空航天大学 材料科学与工程学院 北京 100191

1. Institute for Communication Engineering ,Qiqihar University ,Heilongjiang ,Qiqihar ,161006,China

2. School of Materials Science and Engineering ,Beihang University ,Beijing, 100191, China

LI Hui, ZHANG Tian-li, TAO Bai-rui,et al. Dynamic dividing plan of adapting artificial fish-swarm algorithm

Abstract :In order to overcome the limitations lies at slow convergence, poor accuracy and the propensity of getting into a local best answer in Artificial Fish-Swarm Algorithm(AFSA), improved measures, which adaptively tuned algorithm parameter of artificial fish-swarm, are presented. This measure accorded the comparison between the adaptive value of individual fish and the average adaptive value of the fish-swarm, dividing the whole fish into three groups which including better fish, general fish and poor fish, adaptively turning the step length and view field of fish in each group, in order to optimize and improve the basic algorithm. Then analysis the adapting fish-swarm step length and view field, the algorithm of optimization accuracy, speed and stability of convergence through four typical test function simulation. we can get the conclusion that adapting fish-swarm 's field of view and steps can make the algorithm converges quickly to the better solution of global, and has good optimization performance. Key words :Artificial Fish-Swarm; swarm intelligence; adaptive adjustment; function optimization;

摘 要:为了克服基本人工鱼群算法收敛速度慢、求解精度不高和易陷入局部最优的不足。提出了自适应调整

人工鱼群算法参数的方法,该方法采用个体鱼适应值与整个鱼群的平均适应值作比较,将整个鱼群分为三组,再采用自适应调整每组鱼群的视野范围和步长的方法,对基本鱼群算法进行了优化和改进。应用四个典型的测试函数进行仿真实验,分析算法的寻优精度、收敛速度及稳定性。实验结果表明改进后的算法能够较快地收敛至全局较优解,并具有较好的寻优性能。

关键词:人工鱼群;群体智能;自适应调整;函数优化; 文献标识码: A 中图分类号: TP391.9

1 引言

群体智能算法的研究是人工智能、计算机、自动化科学技术的发展动向之一。国内学者李晓磊等[1]模仿鱼类行为提出了人工鱼群算法。该算法是一种基于模拟鱼群行为的优化算法,具有群体智能特性,是一种典型的多智能主体的分布式人工智能算法。它根据“水域中鱼生存数目最多的地方一般是该水域中富含食物最多的地方”这一特点来模拟鱼群的觅食等行为来实现全局优化。目前有很多国内学者对人工鱼群算法进行了研究,并取得了一定成果。如学者王联国[2]

提出了根据迭代过程动态调整人工鱼的视野和步长,让人工

鱼直接移动到较优位置的思想,以加快算法的搜索速度,仿真结果有了较大的改善。何静媛等[3]提出了对步长和拥挤度因子进行自适应调整的策略,并将其应用在RNA 二级结构的预测,取得了较理想的预测结果。任彦军等[4]提出了在觅食行为过程中采用基于交换列表的排序法,在随机移动行为中采用自适应的小范围移动行为来改进人工鱼群算法,并应用在置换Flow Shop 调度,其仿真实验结果表明这种改进算法具有较强的全局搜索能力、更高的搜索效率。

本文依据学者韩江洪[5]在粒子群算法领域提出的自适

网络出版时间:2012-06-12 09:32

网络出版地址:https://www.wendangku.net/doc/ca11993431.html,/kcms/detail/11.2127.TP.20120612.0932.001.html

2

Computer Engineering and Applications 计算机工程与应用

应调整策略,将鱼群根据个体鱼适应值和鱼群平均适应值进行比较,根据比较结果将鱼群分为三组:较优鱼群,一般鱼群和较差鱼群。赋予较优鱼群组较小的视野范围和步长,赋予较差鱼群组较大的视野范围和步长,使得局部寻优的责任由较优鱼群组承担,全局寻优的责任由其他两组鱼群组承担。仿真实验结果表明,该方法能够提高整体鱼群的寻优速度,加快收敛速度,提高搜索精度,同时避免了鱼群严重聚集的问题。结合无线网络相关特征,该方法可以解决

无线网络路由协议优化、无线传感器节点分簇以及无线传感器节点能量等优化问题。 2 基本人工鱼群算法和行为描述 2.1 基本人工鱼群算法

人工鱼群算法是一种基于模拟鱼群行为的优化算法。它通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优。在基本鱼群算法中,主要是利用了鱼的觅食、聚群和追尾行为,从构造单条鱼的底层行为做起,通过鱼群中各个体的局部寻优,达到全局最优值在群体中突现出来的目的,即它主要利用单条鱼的觅食、聚群、追尾等个体行为和鱼群之间的相互协作进行全局最优值的寻找。

2.2 行为描述

第i 条人工鱼个体的状态可表示为),,(21m i x x x X …=,其中),3,2,1(m i x i …=为欲寻优的变量,

人工鱼当前所在位置的食物浓度可表示为)(i i X f Y =,其中i Y 为目标函数值,人工鱼个体之间的距离表示为j i j i X X d ?=,。visual 表示人工鱼的视野范围,step 表示人工鱼移动的步长,δ表示拥挤度因子。

2.2.1 觅食行为

觅食行为:一般情况下鱼在水中随机地自由游动,当发现食物时,则会向食物逐渐增多的方向快速游去。设人工鱼当前状态为i X ,在其视野范围内随机选择一个状态j X ,如果该状态周围的食物浓度大于当前状态时,则向该方向前进一步;反之,再重新随机选择状态j X ,判断是否满足前进条件。试探try_number 次后,如果仍不满足前进条件,则执行随机行为。 2.2.2 聚群行为

聚群行为:鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群。鱼聚群时所遵守的规则有三条:分隔规则,尽量避免与临近伙伴过于拥挤;对准规则,尽量与临近伙伴的平均方向一致;内聚规则:尽量朝临近伙伴的中心移动。设人工鱼当前状态为i X ,在其可视范围内的同伴的个数f N 及中心位置c X ,如果伙伴中心有较多食物且不太拥挤,则人工鱼向中心位置c X 的方向前进一步,否则执行其他行为。

2.2.3 追尾行为

追尾行为:设人工鱼当前状态为i X ,该个体人工鱼i

X 在其可视范围内寻找状态最优的邻居,设为max X ,如果max Y Y i <,并且满足δ

食物并且不太拥挤,则向max X 的位置前进一步,否则执行觅食。

2.2.4 随机行为

随机行为:人工鱼在视野中随机选择一个状态,然后向

该方向移动,它是觅食行为的一个缺省行为。在觅食行为中,当重复尝试次数try_number 较小时,为人工鱼提供了随机游动的机会,增加了种群的多样性,以实现跳出局部极值。 2.2.5 公告板

公告板:是记录最优人工鱼个体状态的地方,每条人工鱼在执行完一次行为后,将自身当前状态与公告板中记录的状态进行比较,如果优于公告板中的状态则用自身状态更新公告板中的状态,否则公告板的状态不变,当整个算法的迭代结束后,输出公告板的值,即为所求的最优值。 2.2.6 行为选择

根据所要解决的问题性质,每条人工鱼对当前所处的环境进行评价,从而选择一种合适的行为来执行,如对于求最大值问题,最简单的就是先模拟执行聚群、追尾等行为,然后评价行动后的值,选择其中的最大者来实际执行,缺省的行为方式为觅食行为。最终,大量人工鱼会聚集在几个局部极值的周围,这有助于获取全局极值域,而值较优的极值区域周围一般会聚集大量的人工鱼,这有助于获取全局极值,从而达到了寻优的目的。

3 动态调整人工鱼群视野和步长

3.1 视野和步长对人工鱼群寻优的影响

(1)视野的影响:若当前个体鱼在最优值附近(可能是局部最优),应适当采取较小的视野范围值,进行深度搜索,但是如果视野范围较小时,有时却不利于算法跳出局部最优值;当视野范围大时,算法容易跳过最优值,不利于算法的整体寻优。本文采用动态调整人工鱼群视野的方法,使视野范围随个体鱼的适应值的变化而变化。

(2)步长的影响:通常在使用固定步长条件下,步长越大越有利于尽快收敛。但步长过大,反而容易错过全最优解,且搜索得到解的精度也差;在算法的后期还容易出解的震荡现象,不利于快速收敛。小步长有利于局部搜索,但寻找全局最优解较慢,且易陷入局部极值。本文采用步长随着视野范围共同调整,即在视野范围大的时候,步长也有所增加;视野范围小的时候,步长也跟随调整为较小值。见公式(1)。

step=visual ·A ,A ∈(0.5,1) (1)

3.2 人工鱼群视野动态调整

根据个体鱼自适应值与整个鱼群的平均自适应值作比

李会,张天丽,陶佰睿,等:动态分组方案的自适应人工鱼群算法 3

较,将人工鱼群分为三组,并动态调整每组鱼的视野范围和步长。具体实现如下。

设人工鱼i X 的适应值为i Y ,最优人工鱼的适应值是best Y ,人工鱼群的平均适应值是()m Y Y Y m

Y +++=

…21avg 1

;将优于avg

Y 的个体鱼的适应值求平均得到avg

Y ′;定义avg

best Y Y ′?=?。依据i Y 、avg Y ′和avg Y 将人工鱼群群体分为三类子群,

下:

(1)将适应值野动态调整为:

visual visual ?=(其中:end visual _(2)将适应值(3)将适应值调整其视野为:

优解,力的效果;某一常数,为集中,visual 步骤如下:

1.初始化:初始化人工鱼群数目、end visual _、拥挤度因子和最大重复尝试次数try_number 及最大迭代次数,k 1、k 2参数,固定的视野范围等;

2.更新公告板:计算出当前人工鱼群中每个个体的适应值,并将最优值赋予公告板,判断是否满足结束条件,如果满足结束条件,则输出公告板;否则执行步骤3;

3.人工鱼群分组:计算整个鱼群平均适应值值avg Y ,找出适应值优于平均适应值的个体鱼并计算其平均适应值avg

Y ′,将适应值大于avg Y ′的个体鱼分为第一组,适应值在avg Y 与avg Y ′个体鱼分为第二组,将适应值低于avg Y 的个体鱼分为第三组。

4.调整视野范围及步长:根据分组情况,利用公式(2)、

(3)确定视野范围及步长;

5.行为选择:根据情况选择追尾行为、聚群行为、觅食行为、随机行为;

6.新一代人工鱼群:执行步骤2。

4.2 改进算法流程框图

根据上述算法描述得算法流程框图如图1。

e

0=。 5。23. Sphere 函数 ∑==D

i i z z f 123)(

此函数是非线性的对称单峰函数,不同维之间是可分离

的。此函数相对比较简单,主要用于测试函数的寻优精度。搜索范围为-5≤i z ≤5。全局最优值为0)0,0,0(3=…f 。

4. Schaffer 函数 222212

22124)]

(001.01[5.0sin 5.0)(z z z z z f ++?++

=

此函数是一多峰函数,在搜索区域内有无数个全局最小

值,但只有一个全局最小值。此函数具有强烈的震荡性,故

人工鱼群算法的仿真程序-matlab

tic figure(1);hold on ezplot('x*sin(10*pi*x)+2',[-1,2]); %% 参数设置 fishnum=50; %生成50只人工鱼 MAXGEN=50; %最多迭代次数 try_number=100;%最多试探次数 visual=1; %感知距离 delta=0.618; %拥挤度因子 step=0.1; %步长 %% 初始化鱼群 lb_ub=[-1,2,1]; X=AF_init(fishnum,lb_ub); LBUB=[]; fori=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(1,MAXGEN); %每步中最优的自变量 besty=-100; %最优函数值 Y=AF_foodconsistence(X); while gen<=MAXGEN fprintf(1,'%d\n',gen) fori=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); if Yi1>Yi2 X(:,i)=Xi1; Y(1,i)=Yi1; else X(:,i)=Xi2; Y(1,i)=Yi2; end end [Ymax,index]=max(Y); figure(1); plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0]) ifYmax>besty besty=Ymax; bestx=X(:,index); BestY(gen)=Ymax;

人工鱼群算法matlab实现

functionlhl_AF clc;clear all; close all; format long Visual = 2.5; %人工鱼的感知距离 Step = 0.3; %人工鱼的移动最大步长 N = 10; %人工鱼的数量 Try_number = 50;%迭代的最大次数 delta=0.618; %拥挤度因子 a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = [];%存储50个状态下的目标函数值; k = 0; m = 50;%迭代次数 X1 = rand(N,1)*(b1-a1)+a1; %在-10~10之间,随机生成50个数; X2 = rand(N,1)*(b2-a2)+a2; X = [X1 X2]; %X = ones(N,2); %for i = 1:N % X(i,1)=-10; % X(i,2)=10; %end % 人工鱼数量,两个状态变量X1和X2; %计算50个初始状态下的; for i = 1:N www = [X(i,1),X(i,2)]; d(i) = maxf(www); end %公告牌用于记录人工鱼个体的历史最好状态 [w,i] = max(d); % 求出初始状态下的最大值w和最大值的位置i; maxX = [X(i,1),X(i,2)]; % 初始公告板记录,最大值位置; maxY = w; % 初始化公告板记录,最大值; figurex = []; figurey = []; figurez = []; figurex(numel(figurex)+1) = maxX(1); % 将maxX(1)放入figurex中, figurey(numel(figurey)+1) = maxX(2); % numel返回数组或者向量中所含元素的总数,matlab数组下标默认是从1开始的 figurez(numel(figurez)+1) = maxY; while(k

改进的人工鱼群算法(1)

改进的人工鱼群算法 江铭炎、袁东风、程永明著 山东大学信息科学与工程学院 Email:jiangmingyan@https://www.wendangku.net/doc/ca11993431.html,

摘要: 人工鱼群算法(AFSA)是一种新型的智能优化算法。它有许多优点,比如鲁棒性好、全局搜索能力强、参数公差的设定,而且它也被证明对初始值不敏感。然而,它有一些弱点,表现为在后期优化的优化精度和收敛速度比较差。在本文中,提出了一种改进AFSA(IAFSA),在更新的过程中它将全局信息添加到人工鱼的位置。这实验结果表明,该优化精度和收敛速度的方法与原AFSA相比有明显地改善。 1.简介 人工鱼群算法(AFSA)[1]是(SAS)鱼群优化算法的一种。近年来,如蚁群优化(ACO)的算法的SA [2],粒子群优化(PSO)[3]算法,蜂群算法(BA)[4]越来越多的应用到工程应用中,由此他们在研究领域成为了热点。 这是一种把鱼群行为寻找食物比为社会行为的基础上智能优化算法AFSA。在鱼群行为包括觅食,聚群行为,尾随行为[1],随机行为[5]和觅食行为[6]。与其他(SAS)相似,和它工作在一起的每个种群的个体被称为一个人工鱼(AF),每个人工鱼在“游”的搜索空间根据自己的经验及附近的伙伴来寻找有食物的地区。结果, 随着共享的社会信息、来自于之前人工鱼附近搜索的经验和发现的食物浓度, AFSA可以像其他SA有能力在很宽的空间找到更好的解决方案,有效地搜索全局最优的自适应。 仿照AFSA动物行为的过程,并通过个人的局部优化找出全局最优。在这种算法中,有时人工鱼个体的行为很难避免个体为时过早的

寻找局部最优[1][5]。在这种情况下,许多人工鱼陷入局部最优,只有少数的鱼能达到全局最优的区域。因此,AFSA的优化精度和收敛速度的往往不是十分令人满意。为了提高AFSA的性能, 在IAFSA更新过程中全区域最好的AFSA数据被加到了这个位置。三个基准函数是用来检测新算法的性能;实验结果表明,该IAFSA提高了AFSA的性能,并保留其很多优点,如鲁棒性、公差的参数的设置,寻找适应性等。2.人工鱼群算法 在自然界中,鱼能通过个体独立的搜索还有跟随其它鱼找到更有营养的区域,这个地区的鱼所在的地方通常是营养最丰富的。AFSA 的基本思想是模仿鱼类行为,如觅食,聚群和追尾使鱼个体局部搜索并达到全局最优[1][5]。人工鱼所在环境主要包括解的空间和其它人工鱼的状态。它的下一个行为取决于它现在的状态和地方环境状况(包括解决目前问题的特性和周围同伴的状态)。一人工鱼将会通过其自己的活动影响环境和它的同伴的活动。 从算数角度来讲,把一群人工鱼的N popsize,AF i 和位置向量X i相联系,(D是最优参数)在一个最优的问题中是一种可行的解决方案。让X i(t)表示一个人工鱼现在的位置,X i(t+1)是下一个选择的位置。每次迭代步长t+1, 人工鱼的行为的执行和位置矢量X i(t+1)的更新是通过增加一个增量更新向量△X i(t+1),仅包括局部最优信息。向量的增加是通过当前状态X i(t)和更好的状态X better (t+1),方程如下:

基本人工鱼群算法

基本人工鱼群算法 摘要人工鱼群算法(Artificial Fish-Swarm Algorithm,AFSA)是由李晓磊等在2002年提出的,源于对鱼群运动行为的研究,是一种新型的智能仿生优化算法。它具有较强的鲁棒性、优良的分布式计算机制易于和其他方法结合等优点。目前对该算法的研究、应用已经渗透到多个应用领域,并由解决一维静态优化问题发展到解决多维动态组合优化问题。人工鱼群算法已经成为交叉学科中一个非常活跃的前沿性学科。本文主要对鱼群算法进行了概述,引入鱼群模式的概念,然后给出了人工鱼的结构,接下来总结出了人工鱼的寻优原理,并对人工鱼群算法的寻优过程进行仿真,通过四个标准函数选取不同的拥挤度因子进行仿真实验,证实了利用人工鱼群算法进行全局寻优确实是有效的。 关键词:人工鱼群算法;拥挤度因子;寻优 0 引言 动物在进化过程中,经过漫长的优胜劣汰,形成了形形色色的觅食和生存方式,这些方式为人类解决生产生活中的问题带来了不少启发和灵感。动物不具备复杂逻辑推理能力和综合判断等高级智能,但他们通过个体的简单行为和相互影响,实现了群体的生存和进化。动物行为具有以下几个特点。 (1)适应性:动物通过感觉器官来感知外界环境,并应激性的做出各种反应,从而影响环境,表现出与环境交互的能力。 (2)自治性:在不同的时刻和不同的环境中能够自主的选取某种行为,而无需外界的控制或指导。 (3)盲目性:单个个体的行为是独立的,与总目标之间没有直接的关系。 (4)突现性:总目标的完成是在个体行为的运动过程中突现出来的。 (5)并行性:各个个体的行为是并行进行的。 人工鱼群算法是根据鱼类的活动特点提出的一种基于动物行为的自治体寻优模式。 1 鱼群模式描述 1.1 鱼群模式的提出 20世纪90年代以来,群智能(swarm intelligence,SI)的研究引起了众多学者的极大关注,并出现了蚁群优化、粒子群优化等一些著名的群智能方法。 集群是生物界中常见的一种现象,如昆虫、鸟类、鱼类、微生物乃至人类等等。生物的这种特性是在漫长的进化过程中逐渐形成的,对其生存和进化有着重

基于全局最优的快速人工鱼群算法及其应用研究

基于全局最优的快速人工鱼群算法及其应用研究 人工鱼群算法是一种有关动物行为的算法,这种算法 具有一定的智能性,是最近几年国内学者提出来的。这种人工鱼群算法是从行为方面进行的主要研究,并对原来存在的问题进行解决。 关键词】人工鱼群算法优化方法群体智能 众多实验能够证明,群体智能优化的相关算法在很多问 题的解决上都发挥了至关重要的作用,也得到了十分广泛的应用。 1人工鱼群算法 1.1鱼群及其算法的基本思想人工鱼群算法主要依据的是鱼群的行为启 发,在2002 年被提出的一种有关动物行为的比较优化的算法。一般情况 个范围之内,鱼群中的鱼会跟随群体中的其它成员 起找到食物比较多的地方。而通常情况下,一片水域范围内食物最多的地方往往会有最多的鱼群数目。根据这个特点,使用人工制作的鱼对鱼群的各种行为进行模拟,进而完成直线寻优的目的。 1.2人工鱼模型有关人工鱼模型的算法使用的是基于animats 的模 式,

设计采用的顺序是从上到下的,因此先进行的步骤就是人工 鱼模型的建造。通常情况下使用的是面向对象的技术方式, 并用会用C++语言的伪代码形式来加以说明。人工鱼一般的 模型描述方式如下: Various : float AF_swarm (); //the behavior of swarm float AF_evaluate (); //evaluate and select the behavior float AF_init (); //to initialize the AF Aritificial_fish (); float AF_X[n] ; //AF 's position step float AF_step ; //the distance that AF can moue for each float AF_visual ; //the visual diatance of AF float try_number ; //attempt time in the behavior of prey float AF_delta ; //the condition of jamming Functions : float AF_foodconsistence (); //the food consistence of AF ' s current position float AF_move (); //AF move to the next position float AF_follow (); //the behavior of follow float AF_prey (); //the behavior of prey

人工鱼群算法源代码

人工鱼群算法源代码 %人工鱼群算法;formatlong;Visual=2.5;;Step=0.3;;N=50;;Try_numb er=50;;a1=-10;;b1=10;;a2=-10;;b2=10;;d=[];;h=1e-1;;Friend_numb er=50;;k=0;;m=50;;X1=rand(N,1)*(b1-a1)+a1;;X2=rand(N,1)*(b2-a2) %人工鱼群算法 format long Visual=2.5; Step=0.3; N=50; Try_number=50; a1=-10; b1=10; a2=-10; b2=10; d=[]; h=1e-1; Friend_number=50; k=0; m=50; X1=rand(N,1)*(b1-a1)+a1; X2=rand(N,1)*(b2-a2)+a2; X=[X1 X2];%人工鱼数量 for i=1:N wwww=[X(i,1),X(i,2)]; d(i)=maxf(wwww); end [w,i]=max(d); maxX=[X(i,1),X(i,2)];%初始公告板记录 maxY=w;%初始公告板记录

figurex=[]; figurey=[]; figurez=[]; figurex(numel(figurex)+1)=maxX(1); figurey(numel(figurey)+1)=maxX(2); figurez(numel(figurez)+1)=maxY; kkk=0; while(kmaxf(XX)) XXnext1=XX+rand*Step*(Xc-XX)/norm(Xc-XX); if(XXnext1(1)>b1) XXnext1(1)=b1; end if(XXnext1(1)b2) XXnext1(2)=b2; end if(XXnext1(2)

人工鱼群算法matlab实现

function lhl_AF clc;clear all; close all; format long Visual = 2、5; %人工鱼的感知距离 Step = 0、3; %人工鱼的移动最大步长 N = 10; %人工鱼的数量 Try_number = 50;%迭代的最大次数 delta=0、618; %拥挤度因子 a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = [];%存储50个状态下的目标函数值; k = 0; m = 50;%迭代次数 X1 = rand(N,1)*(b1-a1)+a1; %在-10~10之间,随机生成50个数; X2 = rand(N,1)*(b2-a2)+a2; X = [X1 X2]; %X = ones(N,2); %for i = 1:N % X(i,1)=-10; % X(i,2)=10; %end % 人工鱼数量,两个状态变量X1与X2; %计算50个初始状态下的; for i = 1:N www = [X(i,1),X(i,2)]; d(i) = maxf(www); end %公告牌用于记录人工鱼个体的历史最好状态 [w,i] = max(d); % 求出初始状态下的最大值w与最大值的位置i; maxX = [X(i,1),X(i,2)]; % 初始公告板记录,最大值位置; maxY = w; % 初始化公告板记录,最大值; figurex = []; figurey = []; figurez = []; figurex(numel(figurex)+1) = maxX(1); % 将maxX(1)放入figurex中, figurey(numel(figurey)+1) = maxX(2); % numel返回数组或者向量中所含元素的总数,matlab数组下标默认就是从1开始的 figurez(numel(figurez)+1) = maxY; while(k

人工鱼群算法综述

人工鱼群改进算法研究综述 摘要:人工鱼群算法源于对鱼群运动行为的研究,是一种新型的群体智能随机全局优化算法,人工鱼群算法(AFSA)起步较晚,还存在着许多不足之处。因此本文主要通过阐述鱼群算法的基本理论的同时,对人工鱼群算法的改进方法进行文献综述,并根据这些改进方法指出了人工鱼群算法未来的改进与研究方向。 关键词:人工鱼群算法算法改进综述 1.引言 1.1 人工鱼群算法的基本概念 人工鱼群算法是李晓磊等[1]人于2002年提出的一种基于动物自治体[2-3]的优化方法,是集群智能思想[4]的一个具体应用,该算法根据水域中鱼生存数目最多的地方就是本水域中富含营养物质最多的地方这一特点来模拟鱼群的觅食行为而实现寻优。它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工鱼个体的局部寻优行为,最终在群体中使全局最优值突现出来,有着较快的收敛速度[5]。 人工鱼群算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的[6]。 (1)觅食行为:这是鱼趋向食物的一种活动,一般认为它是通过视觉或味觉来感知水中的食物两或食物浓度来选择行动的方向[6]。 (2)聚群行为:大量或少量的鱼聚集成群,进行集体觅食和躲避敌害,这是它们在进化过程中形成的一种生存方式[6]。 (3)追尾行为:当某一条鱼或几条鱼发现食物时,它们附近的鱼会尾随而来,导致更远处的鱼也会尾随过来[6]。

人工鱼群算法就是通过模拟鱼类的觅食、聚群、追尾等行为在搜索域中进行寻优的。 1.2 人工鱼群算法的行为描述 觅食行为:设置人工鱼当前状态,并在其感知范围内随机选择另一个状态,如果得到的状态的目标函数大于当前的状态,则向新选择得到的状态靠近一步,反之,重新选取新状态,判断是否满足条件,选择次数达到一定数量后,如果仍然不满足条件,则随机移动一步[6]。 聚群行为:人工鱼探索当前邻居内的伙伴数量,并计算伙伴的中心位置,然后把新得到的中心位置的目标函数与当前位置的目标函数相比较,如果中心位置的目标函数优于当前位置的目标函数并且不是很拥挤,则当前位置向中心位置移动一步,否则执行觅食行为[6]。 追尾行为:人工鱼探索周围邻居鱼的最优位置,当最优位置的目标函数值大于当前位置的目标函数值并且不是很拥挤,则当前位置向最优邻居鱼移动一步,否则执行觅食[6]。 根据所要解决的问题性质,对人工鱼当前所处的环境进行评价,从而选择一种行为。较常用的评估方法是:选择各行为中使得向最优方向前进最大的方向,也就是各行为中使得人工鱼的下一步状态最优的行为,如果没有能使下一个状态优于当前状态的行为,则采用随机行为。 1.3 人工鱼群算法步骤[6] Step1:设定鱼群的参数,包括鱼群的规模m, 最大迭代次数gen,人工鱼的感知范围Visual,最大移动步长step,拥挤度因子d等; Step2:在参数区间内随机生成m条人工鱼个体作为初始鱼群; Step3:计算每条鱼的食物浓度函数(目标函数),把最优的值放入公告板[7]中; Step4:对于每条人工鱼执行以下操作 (1)计算出追尾行为、聚群行为的值,采用行为选择策略,选择最优的行为作为鱼的移动方向,缺省行为是觅食行为。 (2)计算出每条鱼的食物浓度函数(目标函数),其最优值与公告板中的值

一种新型的智能优化方法—人工鱼群算法

浙江大学 博士学位论文 一种新型的智能优化方法—人工鱼群算法 姓名:李晓磊 申请学位级别:博士 专业:控制科学与工程 指导教师:钱积新 2003.1.1

加,,Z掌博士学位论文一III- 摘要 (优化命题的解决存在于许多领域,对于国民经济的发展也有着巨大的应用前景。随着优化对象在复杂化和规模化等方面的提高,基于严格机理模型的传统优化方法在实施方面变得越来越困难。厂吖 本文将基于行为的人工智能思想通过动物自治体的模式引入优化命题的解决中,构造了一种解决问题的架构一鱼群模式,并由此产生了一种高效的智能优化算法一人工鱼群算法。 文中给出了人工鱼群算法的原理和详细描述,并对算法的收敛性能和算法中各参数对收敛性的影响等因素进行了分析;针对组合优化问题,给出了人工鱼群算法在其中的距离、邻域和中心等概念,并给出了算法在组合优化问题中的描述;针对大规模系统的优化问题,给出了基于分解协调思想的人工鱼群算法;给出了人工鱼群算法中常用的一些改进方法;给出了人工鱼群算法在时变系统的在线辨识和鲁棒PID的参数整定中两个应用实例j最后指出了鱼群模式和算法的发展方向。 f在应用中发现,人工鱼群算法具有以下主要特点: ?算法只需要比较目标函数值,对目标函数的性质要求不高; ?算法对初值的要求不高,初值随机产生或设定为固定值均可以; ?算法对参数设定的要求不高,有较大的容许范围; ?算法具备并行处理的能力,寻优速度较快; ?算法具备全局寻优的能力; 鱼群模式和鱼群算法从具体的实施算法到总体的设计理念,都不同于传统的设计和解决方法,同时它又具有与传统方法相融合的基础,相信鱼群模式和鱼群算法有着良好的应用前景。∥ / 关键词人工智能,集群智能,动物自治体,人工鱼群算法,f优∥ ,l/。7

人工鱼群算法源代码

%人工鱼群算法 format long Visual=2.5; Step=0.3; N=50; Try_number=50; a1=-10; b1=10; a2=-10; b2=10; d=[]; h=1e-1; Friend_number=50; k=0; m=50; X1=rand(N,1)*(b1-a1)+a1; X2=rand(N,1)*(b2-a2)+a2; X=[X1 X2];% 人工鱼数量 for i=1:N wwww=[X(i,1),X(i,2)]; d(i)=maxf(wwww); end [w,i]=max(d); maxX=[X(i,1),X(i,2)];% 初始公告板记录 maxY=w;% 初始公告板记录 figurex=[]; figurey=[]; figurez=[]; figurex(numel(figurex)+1)=maxX(1); figurey(numel(figurey)+1)=maxX(2); figurez(numel(figurez)+1)=maxY; kkk=0; while(k

nf=0; Xc=0; for j=1:N %聚群行为开始 XXX=[X(j,1),X(j,2)]; if(norm(XXX-XX)maxf(XX)) XXnext1=XX+rand*Step*(Xc-XX)/norm(Xc-XX); if(XXnext1(1)>b1) XXnext1(1)=b1; end if(XXnext1(1)b2) XXnext1(2)=b2; end if(XXnext1(2)b1) XXnext1(1)=b1; end if(XXnext1(1)

人工鱼群算法实现最佳路径选择源码

无约束连续函数优化的人工鱼群算法通用MATLAB源码(2008-11-15 09:49:29)标签:杂谈 题目:无约束连续函数优化的人工鱼群算法通用MATLAB源码 此源码是对人工鱼群算法的一种实现,用于无约束连续函数的优化求解,对于含有约束的情况,可以先使用罚函数等方法,把问题处理成无约束的模型,再使用本源码进行求解,本源码由GreenSim团队原创,转载请注明,有意购买源码或代写相关程序,请与GreenSim团队联系(主页.cn/greensim)。 function [BESTX,BESTY,ALLX,ALLY]=FSOUCP(K,N,V,Delta,L,LB,UB) %% Fish Swarm Optimization for Unconstrained Continuous Problem %% FSOUCP.m %% 无约束连续函数的人工鱼群优化算法 % GreenSim团队原创作品,转载请注明 % Email: % GreenSim团队主页:.cn/greensim % [color=red]欢迎访问GreenSim——算法仿真团队→ [url=.cn/greensim].cn/greensim[/url][/color] %% 此函数实现人工鱼群算法,用于求解无约束连续函数最小化问题 %% 对于最大化问题,请先将其加负号转化为最小化问题 %% 输入参数列表 % K 迭代次数 % N 鱼群规模 % V 人工鱼的感知范围 % Delta 拥挤程度的判决门限,取值0~1之间 % L 觅食行为的试探次数 % LB 决策变量的下界,M×1的向量 % UB 决策变量的上界,M×1的向量 %% 输出参数列表 % BESTX K×1细胞结构,每一个元素是M×1向量,记录每一代的最优人工鱼的状态% BESTY K×1矩阵,记录每一代的最优人工鱼的评价函数值 % ALLX K×1细胞结构,每一个元素是M×N矩阵,记录每一代人工鱼的位置 % ALLY K×N矩阵,记录每一代人工鱼的评价函数值 %% 测试函数设置 % 测试函数用单独的子函数编写好,在子函数FIT.m中修改要调用的测试函数名即可 % 注意:决策变量的下界LB和上界UB,要与测试函数保持一致 %% 参考设置 %[BESTX,BESTY,ALLX,ALLY]=FSOUCP(50,30,0.5,0.3,20,LB,UB)

人工鱼群算法matlab实现

人工鱼群算法m a t l a b 实现 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

function lhl_AF clc;clear all; close all; format long Visual = ; %人工鱼的感知距离 Step = ; %人工鱼的移动最大步长 N = 10; %人工鱼的数量 Try_number = 50;%迭代的最大次数 delta=; %拥挤度因子 a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = [];%存储50个状态下的目标函数值; k = 0; m = 50;%迭代次数 X1 = rand(N,1)*(b1-a1)+a1; %在-10~10之间,随机生成50个数; X2 = rand(N,1)*(b2-a2)+a2; X = [X1 X2]; %X = ones(N,2); %for i = 1:N % X(i,1)=-10; % X(i,2)=10; %end % 人工鱼数量,两个状态变量X1和X2; %计算50个初始状态下的; for i = 1:N www = [X(i,1),X(i,2)]; d(i) = maxf(www); end %公告牌用于记录人工鱼个体的历史最好状态 [w,i] = max(d); % 求出初始状态下的最大值w和最大值的位置i; maxX = [X(i,1),X(i,2)]; % 初始公告板记录,最大值位置; maxY = w; % 初始化公告板记录,最大值; figurex = []; figurey = []; figurez = []; figurex(numel(figurex)+1) = maxX(1); % 将maxX(1)放入figurex中,figurey(numel(figurey)+1) = maxX(2); % numel返回数组或者向量中所含元素的总数,matlab数组下标默认是从1开始的 figurez(numel(figurez)+1) = maxY; while(k

人工鱼群算法matlab实现

人工鱼群算法m a t l a b实 现 Revised by Jack on December 14,2020

function lhl_AF clc;clear all; close all; format long Visual = ; %人工鱼的感知距离 Step = ; %人工鱼的移动最大步长 N = 10; %人工鱼的数量 Try_number = 50;%迭代的最大次数 delta=; %拥挤度因子 a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = [];%存储50个状态下的目标函数值; k = 0; m = 50;%迭代次数 X1 = rand(N,1)*(b1-a1)+a1; %在-10~10之间,随机生成50个数; X2 = rand(N,1)*(b2-a2)+a2; X = [X1 X2]; %X = ones(N,2); %for i = 1:N % X(i,1)=-10; % X(i,2)=10; %end % 人工鱼数量,两个状态变量X1和X2; %计算50个初始状态下的; for i = 1:N www = [X(i,1),X(i,2)]; d(i) = maxf(www); end %公告牌用于记录人工鱼个体的历史最好状态 [w,i] = max(d); % 求出初始状态下的最大值w和最大值的位置i; maxX = [X(i,1),X(i,2)]; % 初始公告板记录,最大值位置; maxY = w; % 初始化公告板记录,最大值; figurex = []; figurey = []; figurez = []; figurex(numel(figurex)+1) = maxX(1); % 将maxX(1)放入figurex中,figurey(numel(figurey)+1) = maxX(2); % numel返回数组或者向量中所含元素的总数,matlab数组下标默认是从1开始的 figurez(numel(figurez)+1) = maxY; while(k

人工鱼群算法的现状与改进分析

人工鱼群算法的现状与改进分析 王闯,薛婷,孙林燕 大连海事大学,辽宁大连 (116026) E-mail: wch-7408549@https://www.wendangku.net/doc/ca11993431.html, 摘要:本文首先对人工鱼群算法目前的发展情况进行了简单的综述。然后,通过分析人工鱼群算法的优点和缺点,提出了四种改进思路-改进参数、改进鱼群行为、高阶行为模式、与其它优化算法相融合,并用已有的改进算法加以论证。进而为人工鱼群算法的改进研究提供了新的便利。 关键词:人工鱼群算法,优化算法,算法改进 1. 引言 优化命题的解决存在于许多领域,对于国民经济的发展也有着巨大的应用前景。随着优化对象在复杂化和规模化等方面的提高,基于严格机理模型的传统优化方法在实施方面变得越来越困难。 人工鱼群算法(Artificial Fish-swarm Algorithm,AFSA)是一种基于模拟鱼群行为的优化算法,是由李晓磊等[1]于2002年提出的一种新型的寻优算法。AFSA是一种新型的思路,从具体的实施算法到总体的设计理念,都不同于传统的设计和解决方法,但同时它又能与传统方法相融合。因此,AFSA自提出以来,得到了国内外学者的广泛关注,对算法的研究应用已经渗透到多个应用领域,并由解决一维静态优化问题发展到解决多维动态组合优化问题。AFSA己经成为交叉学科中一个非常活跃的前沿性研究问题。 2. 研究现状 在基本AFSA中,主要是利用了鱼群的觅食、聚群和追尾行为,从构造单条鱼的底层行为做起,通过鱼群中各个体的局部寻优,达到全局最优值在群体中突现出来的目的。通过研究发现,AFSA具有以下特点[1]: l)算法只需要比较目标函数值,对目标函数的性质要求不高; 2)算法对初值的要求不高,初值随机产生或设定为固定值均可以; 3)算法对参数设定的要求不高,有较大的容许范围; 4)算法具备并行处理的能力,寻优速度较快; 5)算法具备全局寻优的能力,能够快速跳出局部极值点。 从目前对AFSA的研究来看,绝大部分集中在如何应用AFSA解决实际问题,对于算法本身的研究和优化,见到的还不多。 通过深入研究和实践发现,AFSA虽然具有很多优良的特性,但它本身也还是存在一些问题,如随着人工鱼数目的增多,将会需求更多的存储空间,也会造成计算量的增长;对精确解的获取能力不够,只能得到系统的满意解域;当寻优的区域较大,或处于变化平坦的区域时,收敛到全局最优解的速度变慢,搜索效率劣化;算法一般在优化初期具有较快的收敛性,而后期却往往收敛较慢。这些算法本身存在的问题,在一定程度上也影响了算法的实际应用。 因此,针对以上缺点,研究如何对人工鱼群算法进行优化、改进,解决算法本身存在的问题,提高算法求解各类优化问题的适应性,提高算法的搜索效率,具有比实际应用研究更重要的意义。

人工鱼群算法的简介及应用

德州律师https://www.wendangku.net/doc/ca11993431.html, 人工鱼群算法是根据鱼在水中寻找食物的行为演化而来。我们知道,在鱼塘里对着某一区域撒下食物,不一会儿就会有大量的鱼儿集中过来,鱼儿在水中一般有觅食,聚群,追尾三种行为,以下是这些行为的描述:(1)觅食行为:鱼一般会呆在食物较多的地方。一般在水里游的鱼,当它发现食物时,会向其游去。(2)聚 群行为:鱼在水中大多是群聚在一起,这样是为了能够更好的在水中生存,观察鱼群不难发现,鱼群中每条鱼之间都保持有一定的距离,而且它们会尽量保持方向一致,而外围的鱼也 都是不断像中心的位置靠近。 (3) 追尾行为:在鱼群中,当一条鱼或者几条鱼发现食物时,其它的鱼也会尾随其快速 的游到食物分布较多的地方。 1.人工鱼群算法原理 1.1人工鱼群算法具的特点 (1)收敛速度较快,可以用来解决有实时性要求的问题; (2)针对一些精度要求不高的情况,可以用来快速的得到一个可行解; (3)不需要问题的严格机理模型,甚至不需要问题的精确描述,这使得它的应用范围得 以扩展。 1.2人工鱼群算法常用终止条件 (1) 判断连续多次所得的均方差小于允许的误差。 (2)判断一些区域的人工鱼群的数量达到某个比率。 (3)连续多次所获取的值均不得超过已寻找的极值。 (4)迭代次数到达设定的最大次数 1.3人工鱼群算法的基本流程 人工鱼群算法演化到具体计算技术,具体流程如下:为两个体之间的距离,xp(v1,v2……vn)个体的当前位置,visual一只鱼的感知距离。 @拥挤度因子。 (1)觅食人工鱼当前位置为Xi,在可见域内随机选择一个位置Xj(d(ij) <=visual),如xj优于xi向xj前进一步,否则随机移动一步。如出现不满足约束则剪去。不变,else =随 机(0,1)}。 (2)聚群:xi可见域内共有nf1条鱼。形成集和KJi,,if KJi不为空, then (xjk属于kji) , 若:(FCc为中心食物浓度,FCi为Xi点食物浓度) 则:向中心移动:X(i+1,k)=不变, 当Xik=X(center,k)时,Xik=随机(0,1), 当Xik!=X(center,k)时,若:FCc/n - [论文网https://www.wendangku.net/doc/ca11993431.html,]f1<@FCi则:进行觅食。 (3)追尾在visual范围内,某一个体食物浓度最大则称为Xmax,若:FCmax>@FCi,则向其移动:X(i+1,k)=当X(i,k)=X(max,k)时,X(i,k)不变,当X(i,k)!=X(max,k)时, X(i,k)=随机(0,1)。 (4)公告板在运算过程中,用于记录下最优Fci 2.人工鱼群算法在各领域的应用 (1)电力系统规划中的应用。电力系统规划的重要组成部分是输电网规划,其目的是

相关文档