遗传算法与蚁群算法的改进融合_陈亚云
改进的蚁群遗传算法求解旅行商问题

中图分类号 : T P 3 ' 0 1 . 6 ; T P 1 8 文献 标 识 码 : B
I mp r o v e d An t Co l o n y - Ge n e t i c Al g o r i t h m f o r S o l v i n g TS P
g o r i t h m b a s e d o n p h e r o mo n e a s t h e i n i t i a l p o p u l a t i o n o f G e n e t i c A l g o it r h m,a n d ma k e s a f e w i mp r o v e me n t s a b o u t t h e Ge n e t i c A l g o i r t h m.F i n ll a y ,t o i l l u s t r a t e i t mo r e c l e a r l y ,a p r o g r a m b a s e d o n t h e s e t h r e e a l g o r i t h ms O F s o l v i n g T S P w a s
YU Yi n g -y i n g, CHEN Ya n, LI Ta o — y i n g
( C o l l e g e o t T r a n s p o r t a t i o n Ma n a g e m e n t , D a l i a n Ma r i t i me U n i v e r s i t y , D l a i a n L i a o n i n g 1 1 6 0 2 6 , C h i n a )
改进蚁群算法在云环境下路径优化设计

改进蚁群算法在云环境下路径优化设计作者:崇阳来源:《硅谷》2014年第09期摘要云环境作为一种新的网络服务环境,提供大量的网络资源服务,云环境中的资源分配问题受带宽、负载以及响应时间的影响。
蚁群算法是一种自适应搜索算法,对组合优化问题的解决发挥了重大的作用,但是其缺陷是容易陷入局部最优以及搜索速度慢。
本文提出的蚁群优化算法,将蚁群算法和遗传算法结合起来,能够加快蚁群算法的收敛速度,提高搜索速度,降低云环境下的网络负载,使得云环境下的任务运行时间有效缩短,网络利用率明显提高。
关键词云环境;蚁群算法;路径优化中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2014)09-0046-02云环境是一种新的网络服务环境,具有强大的网络资源,强调网络资源的共享,为用户的信息访问和资源共享提供了方便的信息平台。
随着人们对云计算的广泛认可和推广,云计算的规模也在不断的扩大,如何提高云计算的服务性能,增加网络利用率逐渐成为云计算时代社会关注的重点问题。
蚁群算法通过对蚂蚁种群觅食过程的模拟,利用蚂蚁群落在觅食的多条路径上所留下的信息元素的累积来找出最佳的路径。
蚁群算法在解决组合优化的优化方面具有其独特的优势。
但是,在对规模较大的系统进行处理时,采用蚁群算法往往会陷入局部最优解的缺陷,而且搜索的时间也较长,这就导致在其选择的局部最优路径上的负载过大,网络发生拥堵或者瘫痪。
云计算的路径优化实际上就是资源分配的组合方式的最优化选择,通过改进的蚁群算法在云环境下的路径优化,实现云环境下的网络资源优化分配,这对降低网络负载,提高网络访问率和利用率具有重要意义。
1 蚁群算法蚂蚁群落在寻觅食物的时候在其经过的路径上会留下信息素,蚂蚁们能够对这种信息素进行感知,并根据信息素的强度来决定自身的前进方向。
蚂蚁种群的集体觅食行动就形成了一种信息反馈:越短的路径,经过的蚂蚁数量就越多,则遗留下来的信息素强度越高,后来的蚂蚁就越容易选择这条路径。
遗传算法与蚁群算法的融合研究

第l 6期
2 1 6月 0 0年
科
学
技
术
与
工
程
Vo. 0 No 1 J n 0 0 11 .6 u e2 1
17 —8 5 2 1 )6 4 1 —4 6 11 1 ( 00 1—0 70
S in e T c n l g n gn ei g ce c e h o o y a d En i e rn
D r o等最早 提 出的 , 群 算 法 主要 是 通 过 蚂 蚁 oi g 蚁 群体 之 间 的 信 息 传 递 而 达 到 寻 优 的 目 的 。其 优
点是:
① 其原 理是 一种正 反馈机 制 , 过信 息 素 的不 通 断更新 达 到最终 收敛 于最 优路径 上 ;
成 一个初始 种群 , 后 模拟 遗 传 选 择 和 自然 淘 汰 的 然
而蚁群算法是通过信息素的累积和 更新来收敛 于最优 路径 , 具有分 布、 并行、 局 收敛 能力 , 全 但是搜 索初期信 息素 匮乏 , 导致 算法速度慢。通 过将 两种 算法进行 融合 , 克服两种算法各 自的缺 陷, 优势 互补 , 成一种 时 间效 率和求解效 率都 比较好 的启 形
发 式 算 法 。 并通 过 仿 真计 算 , 明融 合 算 法 的 性 能优 于 遗传 算 法和 蚁 群 算 法 。 表
成为 提高算 法优 化性 能 的一 个重 要 且 有 效 的途 径 ,
③ 具有 可扩展 性 , 以与其他 算法相 结合 。 可
其 缺 点是 : 系 统 中 的反 馈 信 息 利 用 不 够 , 对 当
求解 到一定 范 围时往 往 做 大量 无 为 的冗余 迭代 , 求
精确解 效率 低 。 蚁 群算 法 ( n o n pi i t n 是 近几 年逐 A t l yO t z i ) Co m ao 渐 发展起 来 的 随机 优 化 方 法 , 是 意 大 利 学 者 M. 它
蚁群算法与遗传算法的混合算法

蚁群算法与遗传算法的混合算法最近,蚁群算法和遗传算法在优化寻优问题方面得到了许多关注。
考虑到蚁群算法和遗传算法的优势相结合,可以提出一种新的算法:蚁群算法与遗传算法的混合算法。
本文将讨论蚁群算法与遗传算法的混合算法的概念,优势以及应用实例,以期为解决优化寻优问题提供有价值的参考。
蚁群算法是一种基于群智能和人工智能的算法,它根据蚂蚁群体的行为模式来解决优化问题。
蚁群算法主要分为三个过程:观察、选择和更新。
首先,个体蚂蚁会观察环境,根据观察结果选择该解决问题的一条路径;然后,其他蚂蚁会根据第一只蚂蚁的结果对当前路径进行更新;最后,该过程将反复执行,以期得到最优解。
遗传算法是一种从量子计算机科学中汲取灵感而发展起来的算法,其本质是一种模拟自然进化过程的过程。
遗传算法通过基因水平的操纵实现基因的选择、交叉和变异,从而解决优化寻优问题。
遗传算法主要是由种群初始化、生成器构造、选择器优化、交叉变异等步骤组成。
其中,种群初始化阶段,通过在种群中随机生成候选解的编码,来构建起种群;然后,在生成器构造阶段,根据某种选择规则,从种群中选择出一组更优的个体用于进行交叉变异;最后,在交叉变异阶段,将两个种群中的候选解进行交叉运算以及变异运算,从而最终得到最优解。
基于蚁群算法和遗传算法的优势,将这两种算法结合起来,可以构成蚁群算法与遗传算法的混合算法。
该混合算法将蚁群和遗传的优势有机的结合起来,实现对多目标优化问题的更好的求解。
首先,蚁群算法可以解决离散和连续的优化问题,并且具有自学习能力,能够进行快速搜索;其次,遗传算法具有很好的全局优化能力,具有很好的收敛性;最后,通过混合这两种算法,可以更全面地考虑优化问题,充分调动蚁群和遗传算法的优势,从而实现最优解的求解。
此外,蚁群算法和遗传算法的混合算法也在实际应用中得到了广泛的应用。
例如,它可以用来解决机器学习领域的优化问题,如模型参数选择、参数调优等;另外,也可以用来解决数据挖掘领域的优化问题,如聚类算法的改进、分类算法参数调优等。
遗传算法与蚁群算法结合

遗传算法与蚁群算法结合遗传算法1、基本思想2、算法原理3、代码实现4、结果截图5、总结1·基本思想吸取两个算法的优点,优缺互补,克服两个算法的缺点,利⽤了遗传算法的快速时间效率,优于蚂蚁算法的时间效率。
并且求解精度效率优于遗传算法。
这样就提⾼了两个算法结合的算法时间效率和求解精度。
2、算法原理这个算法的原理是先利⽤遗传算法的快速性、全局收敛性和随机性求出结果,结果产⽣有关问题的初始信息素分布,遗传算法执⾏完在运⽤蚁群算法,在⼀定初始信息素分布的情况下,充分利⽤蚁群算法并⾏性、正反馈性、求解精度效率⾼的特点。
3、代码实现%mainclear;clc;%%%%%%%%%%%%%%%输⼊参数%%%%%%%%N=50; %%城市的个数M=100; %%种群的个数ITER=500; %%迭代次数%C_old=C;m=2; %%适应值归⼀化淘汰加速指数Pc=0.8; %%交叉概率Pmutation=0.05; %%变异概率%%⽣成城市的坐标pos=randn(N,2);%%⽣成城市之间距离矩阵D=zeros(N,N);for i=1:Nfor j=i+1:Ndis=(pos(i,1)-pos(j,1)).^2+(pos(i,2)-pos(j,2)).^2;D(i,j)=dis^(0.5);D(j,i)=D(i,j);endend%%⽣成初始群体popm=zeros(M,N);for i=1:Mpopm(i,:)=randperm(N);%随机排列,⽐如[2 4 5 6 1 3]end%%随机选择⼀个种群R=popm(1,:);figure(1);scatter(pos(:,1),pos(:,2),'rx');%画出所有城市坐标axis([-3 3 -3 3]);figure(2);plot_route(pos,R); %%画出初始种群对应各城市之间的连线axis([-3 3 -3 3]);%%初始化种群及其适应函数fitness=zeros(M,1);len=zeros(M,1);for i=1:M%计算每个染⾊体对应的总长度len(i,1)=myLength(D,popm(i,:));endmaxlen=max(len);%最⼤回路minlen=min(len);%最⼩回路fitness=fit(len,m,maxlen,minlen);rr=find(len==minlen);%找到最⼩值的下标,赋值为rrR=popm(rr(1,1),:);%提取该染⾊体,赋值为Rfor i=1:Nfprintf('%d ',R(i));%把R顺序打印出来endfprintf('\n');fitness=fitness/sum(fitness);distance_min=zeros(ITER+1,1); %%各次迭代的最⼩的种群的路径总长nn=M;iter=0;while iter<=ITERfprintf('迭代第%d次\n',iter);%%选择操作p=fitness./sum(fitness);q=cumsum(p);%累加for i=1:(M-1)len_1(i,1)=myLength(D,popm(i,:));r=rand;tmp=find(r<=q);popm_sel(i,:)=popm(tmp(1),:);end[fmax,indmax]=max(fitness);%求当代最佳个体popm_sel(M,:)=popm(indmax,:);%%交叉操作nnper=randperm(M);% A=popm_sel(nnper(1),:);% B=popm_sel(nnper(2),:);%%for i=1:M*Pc*0.5A=popm_sel(nnper(i),:);B=popm_sel(nnper(i+1),:);[A,B]=cross(A,B);% popm_sel(nnper(1),:)=A;% popm_sel(nnper(2),:)=B;popm_sel(nnper(i),:)=A;popm_sel(nnper(i+1),:)=B;end%%变异操作for i=1:Mpick=rand;while pick==0pick=rand;endif pick<=Pmutationpopm_sel(i,:)=Mutation(popm_sel(i,:));endend%%求适应度函数NN=size(popm_sel,1);len=zeros(NN,1);for i=1:NNlen(i,1)=myLength(D,popm_sel(i,:));endmaxlen=max(len);minlen=min(len);distance_min(iter+1,1)=minlen;fitness=fit(len,m,maxlen,minlen);rr=find(len==minlen);fprintf('minlen=%d\n',minlen);R=popm_sel(rr(1,1),:);for i=1:Nfprintf('%d ',R(i));endfprintf('\n');popm=[];popm=popm_sel;iter=iter+1;%pause(1);end%end of whilefigure(3)plot_route(pos,R);axis([-3 3 -3 3]);figure(4)plot(distance_min);%交叉操作函数 cross.mfunction [A,B]=cross(A,B)L=length(A);if L<10W=L;elseif ((L/10)-floor(L/10))>=rand&&L>10W=ceil(L/10)+8;elseW=floor(L/10)+8;end%%W为需要交叉的位数p=unidrnd(L-W+1);%随机产⽣⼀个交叉位置%fprintf('p=%d ',p);%交叉位置for i=1:Wx=find(A==B(1,p+i-1));y=find(B==A(1,p+i-1));[A(1,p+i-1),B(1,p+i-1)]=exchange(A(1,p+i-1),B(1,p+i-1));[A(1,x),B(1,y)]=exchange(A(1,x),B(1,y));endend%连点画图函数 plot_route.mfunction plot_route(a,R)scatter(a(:,1),a(:,2),'rx');hold on;plot([a(R(1),1),a(R(length(R)),1)],[a(R(1),2),a(R(length(R)),2)]);hold on;for i=2:length(R)x0=a(R(i-1),1);y0=a(R(i-1),2);x1=a(R(i),1);y1=a(R(i),2);xx=[x0,x1];yy=[y0,y1];plot(xx,yy);hold on;endend%染⾊体的路程代价函数 mylength.mfunction len=myLength(D,p)%p是⼀个排列[N,NN]=size(D);len=D(p(1,N),p(1,1));for i=1:(N-1)len=len+D(p(1,i),p(1,i+1));endend%变异函数 Mutation.mfunction a=Mutation(A)index1=0;index2=0;nnper=randperm(size(A,2));index1=nnper(1);index2=nnper(2);%fprintf('index1=%d ',index1);%fprintf('index2=%d ',index2);temp=0;temp=A(index1);A(index1)=A(index2);A(index2)=temp;a=A;end%适应度函数fit.m,每次迭代都要计算每个染⾊体在本种群内部的优先级别,类似归⼀化参数。
云环境下对遗传蚁群算法改进研究

云环境下对遗传蚁群算法的改进研究摘要:本文对于常见的遗传蚁群算法,根据云计算环境,提出了智能化的编码方案,过滤掉冗余编码,并把最短完成时限写进适应函数,在算法初始阶段过滤掉不符合时间要求的调度方案,并在蚁群算法中进行了双重收敛加速,并考虑到了负载均衡。
实验证明,本算法取得了较好的效果。
关键词:云计算;改进型遗传蚁群算法;智能编码;双重收敛加速中图分类号:tp301.6 文献标识码:a 文章编号:1007-9599 (2012) 23-0000-021 引言云计算是一种以“租赁服务”为目标的商业实现。
它的理念来自于用户经常发现他们需要的是某种服务,而不是通常购买的软件,平台或者服务器。
如果用户不需要购买,只需要租赁这些资源,那该是一件多么美好的事情。
普遍来讲,云计算就是通过互联网将数据中心的各种资源打包成服务向外提供。
而目前云计算的任务调度(任务资源映射)没有通用的算法。
常用的启发式任务调度算法系统开销大,且没有考虑到用户的要求,负载均衡方面也不理想。
所以人们提出了一种遗传蚁群融合算法,即保留了遗传算法前期搜索速度快的优点,也保证了蚁群算法搜索后期高效的优势,但存在着编码不够合理,适应函数不够规范,融合点的定位不够动态,蚁群算法收敛加速不够等缺点。
本文在一种常用的遗传蚂蚁算法基础上(参考文献[8])进行改进,试图使其调度性能更加理想。
2 算法的改进2.1 染色体编码的改进文献[8]提出了这样一种编码方案,采用十进制实数编码,每个染色体代表一种调度方案。
假设有i个任务j个资源,则染色体长度i+j。
资源与任务映射规则如下:调度任务到最邻近的右端资源。
比如当前有5个任务3个计算节点,则数字1到5表示任务,6到8表示资源。
编码12734856表示任务1,2分配给7;3和4分配给8;5给6.解码规则为逆运算。
然而由于12734856实际上和21743856是一样的,这种编码会带来极大的资源浪费。
对此假如有5个任务,我们先对任务队列排序,优先级较大的或较小的任务靠前,编码为1到5,这样出现了7个位置,先对位置7随机一个资源,这样可以保证任务得到完全调度(在本例中即保证染色体必需由678的一个结尾),再对另外两个资源节点随机分配1到6的位置,并不许重复(不允许12673458这样的染色体出现,虽然它也有可能表示一定意义,比如67123458表示67节点可能负载比较重而不分配新到任务。
蚁群算法与遗传算法的混合算法

蚁群算法与遗传算法的混合算法蚁群算法(Ant Colony Optimization,ACO)和遗传算法(Genetic Algorithm,GA)都属于启发式算法的范畴,它们分别从不同的角度对问题进行建模和求解。
蚁群算法以模拟蚁群觅食行为为基础,通过信息素和启发式规则指导蚂蚁解空间;而遗传算法通过模拟进化过程,利用交叉和变异运算生成新的个体,并适应性地选择个体进行下一代的繁衍。
两者在解决问题时有各自的局限性,因此将两种算法相结合,形成混合算法,可以克服各自的缺点,实现更有效的求解。
蚁群算法具有较强的全局能力,但其速度较慢,且可能会陷入局部最优解。
而遗传算法能够在过程中较快地收敛到局部最优解,但有可能会陷入局部最优解无法跳出。
因此,将两者结合起来,可以同时利用蚁群算法的全局和遗传算法的局部特性。
混合算法的基本思想是,将蚁群算法作为全局策略,用于生成一组较优的解,然后利用遗传算法在这组解中进行局部优化,以寻找最优解。
整个混合算法的流程如下:1.初始化蚁群相关参数和遗传算法的相关参数,包括蚁群大小、信息素更新速率、遗传算法的种群大小、交叉和变异的概率等;2.使用蚁群算法生成一组初始解,并计算每个解的适应度;3.利用遗传算法从初始解中选择适应度较高的一部分个体,作为种群;4.对种群进行交叉和变异操作,生成下一代个体;5.计算下一代个体的适应度;6.如果满足停止条件(如达到指定迭代次数或找到满意解),则输出结果;否则,返回第3步,继续优化。
在混合算法中,蚁群算法和遗传算法的相互作用可以通过以下几种方式实现:1. 优选策略(Elitism):将蚁群算法生成的一组解合并到遗传算法的种群中,在遗传算法的选择过程中保留一些蚁群算法生成的优秀个体,以避免遗传算法陷入局部最优解。
2.信息素启发式规则:将蚁群算法的信息素启发式规则应用于遗传算法的交叉和变异操作中,以指导交叉和变异过程中的方向,增加遗传算法的全局能力。
遗传算法与蚁群优化算法的混合优化策略在无线传感器网络中的应用

遗传算法与蚁群优化算法的混合优化策略在无线传感器网络中的应用遗传算法与蚁群优化算法是两种常用的优化算法,在无线传感器网络中的应用也备受关注。
本文将探讨遗传算法与蚁群优化算法的混合优化策略在无线传感器网络中的应用。
一、无线传感器网络简介无线传感器网络是由大量分布在特定区域内的无线传感器节点组成的网络。
这些节点能够感知环境中的信息,并通过无线通信将数据传输到基站或其他节点。
无线传感器网络具有广泛的应用领域,如环境监测、智能交通、农业等。
二、遗传算法的基本原理及应用遗传算法是一种模拟生物进化过程的优化算法。
它通过模拟自然选择、交叉和变异等操作,逐步优化问题的解。
遗传算法具有全局搜索能力和并行性强的特点,广泛应用于函数优化、组合优化等领域。
在无线传感器网络中,遗传算法可以应用于路由优化、能量管理等问题。
例如,在路由优化中,遗传算法可以通过调整传感器节点之间的通信路径,使得网络的能量消耗最小,延迟最小,从而提高网络的性能。
三、蚁群优化算法的基本原理及应用蚁群优化算法是模拟蚂蚁觅食行为的一种优化算法。
蚂蚁在觅食过程中通过信息素的沉积和挥发,不断调整自己的行动策略,最终找到最优的食物源。
蚁群优化算法通过模拟蚂蚁的觅食行为,寻找问题的最优解。
在无线传感器网络中,蚁群优化算法可以应用于节点部署、能量均衡等问题。
例如,在节点部署中,蚁群优化算法可以根据节点之间的通信距离和能量消耗等因素,自动调整节点的位置,使得网络的覆盖范围最大,能量消耗最小。
四、遗传算法与蚁群优化算法的混合优化策略遗传算法和蚁群优化算法都有各自的优势和局限性。
遗传算法具有全局搜索能力,但容易陷入局部最优解;蚁群优化算法具有局部搜索能力,但收敛速度较慢。
因此,将两者结合起来,可以充分发挥它们的优势,提高优化效果。
在无线传感器网络中,遗传算法与蚁群优化算法的混合优化策略可以应用于节点部署、能量管理等问题。
例如,在节点部署中,可以先利用遗传算法生成一组初始解,然后使用蚁群优化算法对初始解进行优化,得到最优的节点部署方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目标优化问题存在多个优化目标, 假设优化问题为
农产品运输问题, 分别根据运输时间、 运输成本和
运输风险确定三个适应度函数, 单独进行遗传算法。
适应度函数值必须是非负的, 但是针对不同种类的
问题, 目标函数值可能是求最小值, 且有可能为负
数。 为了保证遗传算法中对各个个体适应度的比较
排序, 从而确定选择概率, 必须将目标函数转化为
O, 则具体操作过程如下:
步骤1: 将所有个体按其适应度值由大到小进行
排序, 排序后的种群为Z'= {b1, b2, …, bi, …, bM}, 其
中f (bi-1) >f (bi) >f (bi+1);
步骤2: 计算出种群Z'中 所 有 个 体 的 适 应 度 总 和
M
∑f
i=1
(bi);
步骤3: 计算出每个个体被选取的概率为:
(2)
0
others
式中: cmin— ——f(x)的估计最小值。 2.1.4 选择操作
根据适应度函数计算种群每个个体的适应度, 通
过改进的轮盘赌选择方法选择出优良的个体。 设种群
248
中国农机化学报
2014 年
大小为M, 父代种群Z= {a1, a2, …, ai, …, aM}, 其中每
个个体的适应度大小为f (ai); 子代群体初始状态为X=
求最大值形式且函数值为非负的适应度函数。 本文
采用界限构造函数:
若目标函数为最小化问题:
! Fit (f(t)) = cmax-f (x)f (x)<cmax
(1)
0
others
式中: cmax— ——f (x) 的估计最大值。
若目标函数为最大化问题:
! Fit (f(t))= f (x)-cmax f (x)>cmax
② 统计各区间的ξ值ξ1, ξ2, …, ξM, 其中ξi是落在i 号区域的随机数个数;
③ 取 最 大 的ξ值ξj=max (ξ1, ξ2, …, ξM) 所 在 区 间j
对应的个体bj, 为本轮转动后所选中的个体Mi, 即:
≤ Mi=
bmin(i1, i2, …, il)存在l个相同ξ值区间 bj其他
遗传算法与蚂蚁算法的融合, 其基本思想是汲取 两种算法的优点, 克服各自的缺陷, 优势互补。 为 此, 可以首先利用遗传算法的随机搜索、 快速性、 全 局收敛性, 产生有关问题的初始信息素分布。 然后在 Tg时刻, 充分利用蚁群的并行性、 正反馈机制以及求
收稿日期: 2013年6月7日 修回日期: 2013年9月10日 第一作者:陈亚云,男,1989年,湖南衡阳人,硕士研究生;研究方向为运输装备管理与保障。 E-mail: yundedi@ 通讯作者:韩文涛,女,1969年,内蒙古赤峰人,工学博士,教授;研究方向为运输装备管理与保障。 E-mail: 13571851361@
2 混合算法的实现步骤
2.1 在混合算法 的前阶段, 利 用遗传算法 求解得到 可行解
遗传算法一开始, 先随机的产生种群。 种群里 面的每一个个体 (或叫染色体) 都代表一组节点的 排列, 其质量高低用一个适应函数来评价。 每一个 个体根据适应度, 按照一定的概率被选择进行交 叉、 变异, 产生新的下一代种群。 适应度高的个体 更有机会来繁殖下一代; 随着连续的繁殖, 种群趋 于收敛于高适应度的那些种群, 从而找到可能的最 优解。 2.1.1 编码
的特定知识。 对于一些多维、 高精度要求的连续函
数优化, 二进制编码存在着连续函数离散化时的映
射误差, 个体编码的长度串较短时, 可能达不到精
度要求; 而个体编码串的长度较长时, 虽然提高精
度, 但却会使算法的性能降低。 为提高遗传算法局
部 搜 索 能 力 , 可 以 采 用 格 雷 码 ( Grey Code) 编 码 ;
1 混合的思想
1.1 混合的基本思想 根据很多相关的研究资料, 遗传算法与蚁群算法
图 1 速度―时间曲线图 Fig. 1 Curve graph of speed-time
从 图 1 可 以 看 出 , 遗 传 算 法 在 搜 索 的 初 期 (T0~Tb时 间 段 )具 有 较 高 的 向 最 优 解 收 敛 的 速 度 , 在 Tc之 后 求 解 最优解的速度开始下降, 并在Tg时刻之后开始落后于 蚁群算法。 与之相反,蚁群算法在搜索的初期(T0~Tb时 间段),因为信息素缺乏,搜索速度缓慢,随着信息素积 累 强 度 的 增 加 ,Td时 刻 后 , 它 的 最 优 解 收 敛 速 度 开 始 迅 速提高[2]。 分析可知,遗传算法虽然具有快速全局搜索 能力,但却没有利用到系统中的反馈信息,往往导致无 为的冗余迭代,求解效率低。 蚁群算法通过信息素的累 积和更新而收敛于最优路径,具有分布、并行、全局收 敛能力,但初期信息素匮乏、导致算法速度慢[4]。
遗传算法与蚁群算法都属于现代启发式算法,两 种算法都应用于了求解组合优化问题上, 并取得了一 定的成果,但同时都存在各自的缺陷。 遗传算法不能利 用系统中的反馈信息,导致无为的冗余迭代,求解效率 低。 而蚁群算法在初期信息素匮乏,导致算法速度慢。 通过将遗传算法与蚂蚁算法的进行融合, 可以达到汲 取两种算法的优点,克服各自的缺陷,实现优势互补的 目的。 目前,通过将蚁群算法与遗传算法进行融合来解 决多目标优化问题,已取得了较好的效果 。 [1~3] 本文将 对算法融合的过程进行改进, 使之更加适合求解多目 标优化问题。
第4期
陈亚云 等搜索最优解。 这样融合后的算法叫做 遗传蚁群混合 算 法 (Genetic Algorithm-Ant Algorithm, GAAA), 在时间效率上优于蚂蚁算法, 在求精解效率 上优于遗传算法, 是时间效率和求解效率都比较好的 一种新的启发式方法。
从中挑出较好的个体构成初始种群。 这个过程是一个
不断迭代的过程, 直到初始种群中个体数量达到了预
先确定的规模结束。 同时, 对种群规模、 种群进化代
数、 适应度参数、 遗传优化的次数、 交叉概率的参
数、 变异概率的参数等进行初始化。
2.1.3 确定适应度函数, 进行适应度计算
适应度函数是用来评价个体适应度的函数。 多
陈亚云, 韩文涛, 崔鹤平
(武警工程大学军交运输系, 陕西西安, 710086)
摘要: 通过将遗传算法与蚁群算法进行融合,可以得到一种新的启发式算法,从而在时间效率上优于蚂蚁算法,在求解效率上优于遗传算 法。 本文将对混合算法进行改进,具体分析怎样实现算法的融合,使之更加适合求解多目标优化问题。 关键词: 遗传算法; 蚁群算法; 混合算法; 多目标优化 中图分类号: TP183 文献标识码: A 文章编号: 2095-5553. (2014) 03-0246-04
陈亚云, 韩文涛, 崔鹤平. 遗传算法与蚁群算法的改进融合[J]. 中国农机化学报, 2014, 34(4): 246~249 Chne Yayun, Han Wentao, Cui Heping. Improved combination of genetic algorithm and ant colony algorithm [J]. Journal of Chinese Agricultural Mechanization, 2014, 34(4): 246~249
度较高的n/3个个体 (n为城市个数) 组成一个矩阵T1。 这n个个体分别为一组城市的排列, 所以矩阵T1每 一 行的每一个元素都代表一个城市。 由于构成个体的城
对应的路径输出作为求解问题的解; 若没有达到, 则
将迭代次数加1进入下一个循环中。
2.1.8 输出解集
符合终止条件, 跳出循环, 记录当前进化种群。
根据不同的适应度函数, 最终得到三组不同的解集。
2.2 根据遗传算 法求得的最 优解, 对初始 信息素进
行赋值
依次从遗传算法得到的三组最优解中, 选择适应
Pbi=
f
M
(bi)
;
∑
i=1
f
(bi)
j
步骤4: 计算每个个体的累积概率 Qi=∑j=1 Pbj;
步骤5: 转动M轮轮盘:
① 产 生M个 [0, 1] 之 间 的 均 匀 随 机 数 R。 如 果
R≤Q1, 则 选 择 染 色 体b1; 否 则 , 选 择 第i个 染 色 体bi (2≤i≤M), 使得Qi-1≤R≤Qi;
0 引言
的总体态势呈现出如图1所示的速度―时间曲线。
一般说来, 科学研究与工程实践涉及的许多优化 问题大都是多目标优化问题。 多目标优化问题中各目 标之间通过决策变量相互制约, 对其中一个目标优化 必须以其它目标作为代价, 而且各目标的单位又往往 不一致, 因此很难客观地评价多目标问题解的优劣 性。 在处理多目标优化问题上, 传统的做法是利用权 重将多目标路线优化问题加权转化为单目标最短路进 行求解。 但由于权重的确定往往非常困难且带有很大 主观性, 使得确定的 “最优” 路线往往只是决策者的 某种意愿, 并不是真正意义上的 “最优” 路线。
遗传算法与蚁群算法这两种算法相结合的好处在 于, 能克服遗传算法在搜索到一定阶段时最优解搜索 效率低下和蚁群算法初始信息素匾乏的不足的问题, 又能发挥在寻优搜索中各自的优势, 相互弥补劣势。 1.2 混合的改进思想
为了表述方便, 假设求解的优化问题为农产品 运输问题, 优化目标分别为运输时间、 运输成本和 运输风险。 在求解多目标优化问题时, 确定遗传算 法的适应度函数和蚁群算法的启发函数是一个难点, 传统的做法是采用权重系数, 但是这种方法主观因 素比较大。 本文将对混合算法进行改进, 在遗传算 法时, 可以分别根据运输时间、 运输成本和运输风 险三个优化目标确定适应度函数, 进行三次遗传算 法求得三组不同的最优解。 根据三组不同的最优解, 对蚁群算法的初始信息素进行赋值, 运输时间、 运 输成本、 运输风险都比较少的路径上信息素必然会 出现重合, 从而信息素浓度大, 可以促使在蚁群算 法过程中迅速找到最优解。 在确定蚁群算法的启发 函数时, 由于运输时间、 运输成本、 运输风险的单 位不同, 不能够直接相加。 可以根据遗传算法求得 三组解, 取平均值, 分别得到运输时间、 运输成本、 运输风险的均值。 在计算蚁群算法的启发函数值时, 可以将运输时间、 运输成本、 运输风险分别除以均 值, 达到统一量纲的目的, 从而三者直接相加所得 值即为启发函数值。