|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、简介; H5 H. v# F- k% A! `2 M
启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。9 [- M2 e0 f; k, u5 Q! k- D2 b9 n
在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。; T9 r1 @. |- @- |% }2 `
启发中的估价是用估价函数表示的,如:f(n)=g(n)+h(n);
0 m8 W/ @1 K" E) ?3 k: N& b+ k最佳优先搜索的最广为人知的形式称为A*搜索。它把到达节点的耗散g(n)和从该节点到目标节点的消耗h(n)结合起来对节点进行评价:f(n)=g(n)+h(n)。, O7 V3 b H6 P/ K# C! i, W
1 粒子群算法PSO8 q4 m ]& j7 \) b# R; D
粒子群算法(PSO)是一种基于群体的随机优化技术。粒子群算法(PS0)首先初始化一组随机值作为粒子群,粒子以一定的速度更新当前最优粒子和最优种群(Shi和Eberhart,1999)。每次迭代,更新“个体最优”值 、“种群最优”值 和粒子速度值 ,最终得到一组较为合理的结果。粒子群算法简单易实现,然而易出现早熟等现象,以致不能全局寻优。因此其改进算法层出不穷。
0 b) L T% d( D4 ?1 Y2 遗传算法GA
/ y; \+ \, y3 {3 g遗传算法(GA)是模仿自然界生物进化理论发展而来的一个高度并行,自适应检测算法。遗传算法通过仿真生物个体,区别个体基因变化信息来保留高适应环境的基因特征,消除低适应环境的基因特征,以实现优化目的。遗传算法能够在数据空间进行全局寻优,而且高度的收敛。缺点就是不能有效的使用局部信息,因此需要花很长时间收敛到一个最优点。
7 S. d$ Q" e) k: {3 人群搜索算法SOA
9 T" o% j5 e ?) ^7 |人群搜索算法(SOA)是对人的随机搜索行为进行分析,借助脑科学、认知科学、心理学、人工智能、多Agents系统、群体智能等的研究成果,分析研究人作为高级Agent的利己行为、利他行为、自组织聚集行为、预动行为和不确定性推理行为,并对其建模用于计算搜索方向和步长。由于SOA直接模拟人的智能搜索行为,立足传统的直接搜索算法,概念明确、清晰、易于理解,是进化算法研究领域的一种新型群体智能算法。( [, k- E9 u7 b+ E
4 模拟退火算法SA0 O5 ` Z9 ?0 ]
模拟退火算法(SA)的依据是固体物质退火过程和组合优化问题之间的相似性。物质在加热的时候,粒子间的布朗运动增强,到达一定强度后,固体物质转化为液态,这个时候再进行退火,粒子热运动减弱,并逐渐趋于有序,最后达到稳定。' p7 w: R' N3 M- |
5 蚁群算法ACO
& D( L& |5 X+ \. K m4 O蚁群算法(ACO)是由意大利学者M. Dorigo等人于20世纪90年代初期通过观察自然界中蚂蚁的觅食行为而提出的一种群体智能优化算法。蚂蚁在运动的路线上能留下信息素,在信息素浓度高的地方蚂蚁会更多,相等时间内较短路径里信息素浓度较高,因此选择较短路径的蚂蚁也随之增加,如果某条路径上走过的蚂蚁越多,后面的蚂蚁选择这条路径的概率就更大,从而导致选择短路径的蚂蚁越来越多而选择其它路径(较长路径)的蚂蚁慢慢消失,蚁群中个体之间就是通过这种信息素的交流并最终选择最优路径来搜索食物的,这就是蚁群算法的生物学背景和基本原理。
6 w) e: d, d' A' ~' N+ q! s& n6 鱼群算法FSA' R. M( ?3 x4 z7 D9 f' o
在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食。聚群及追尾行为,从而实现寻优。
, C) O e8 [3 `1 q
4 w( X' \1 i+ u. R) s4 S
1 o, h ?6 z8 ^% z$ y
5 w m0 [3 Q) M# @% b
$ a( l* ~* \1 I+ E
% H6 X9 q- E2 ~# ~7 T2 E) t二、源代码 W$ m0 @& u+ Z
" S: c3 y0 P/ ~/ g* u
- clc,clear,close all
- warning off
- N = 40; % 种群个数
- c1 = 2; % 粒子群参数
- c2 = 2; % 粒子群参数
- wmax = 0.9; % 最大权重
- wmin = 0.6; % 最小权重
- M = 100; % 循环迭代步数
- D = 2; % 种群中个体个数,2个未知数
- format long;
- %------初始化种群的个体------------
- for i=1:N
- for j=1:D
- x(i,j)=rands(1); %随机初始化位置
- v(i,j)=rands(1); %随机初始化速度
- end
- end
- %% ------先计算各个粒子的适应度----------------------
- for i=1:N
- p(i)=fitness(x(i,:));
- y(i,:)=x(i,:);
- end
- pg=x(N,:); % Pg为全局最优
- for i=1:(N-1)
- if fitness(x(i,:))<fitness(pg)
- pg=x(i,:);
- end
- end
- %% ------进入主要循环------------
- for t=1:M
- for j=1:N
- fv(j) = fitness(x(j,:)); % 适应度值
- end
- fvag = sum(fv)/N; % 平均适应度值
- fmin = min(fv); % 最小适应度值
- for i=1:N
- if fv(i) <= fvag
- w = wmin + (fv(i)-fmin)*(wmax-wmin)/(fvag-fmin); % 自适应权值
- else
- w = wmax; % 权值
- end
% ~1 J/ _3 o9 e, n0 u D
( s* A3 e) c9 o- Y, g, B4 |. i' g
0 D. G5 M4 c/ a D! x3 V三、运行结果
8 a) D% ?7 g, c! C2 b- R: z9 r
: V2 s* q M, p& Y) {2 f
( \! D7 G, i3 R |
|