基于淘汰机制的双种群遗传算法
遗传算法遗传算法

(5)遗传算法在解空间进行高效启发式搜索,而非盲 目地穷举或完全随机搜索;
(6)遗传算法对于待寻优的函数基本无限制,它既不 要求函数连续,也不要求函数可微,既可以是数学解 析式所表示的显函数,又可以是映射矩阵甚至是神经 网络的隐函数,因而应用范围较广;
(7)遗传算法具有并行计算的特点,因而可通过大规 模并行计算来提高计算速度,适合大规模复杂问题的 优化。
26
(4)基本遗传算法的运行参数 有下述4个运行参数需要提前设定:
M:群体大小,即群体中所含个体的数量,一般取为 20~100; G:遗传算法的终止进化代数,一般取为100~500; Pc:交叉概率,一般取为0.4~0.99;
Pm:变异概率,一般取为0.0001~0.1。
27
10.4.2 遗传算法的应用步骤
遗传算法简称GA(Genetic Algorithms)是1962年 由美国Michigan大学的Holland教授提出的模拟自然 界遗传机制和生物进化论而成的一种并行随机搜索最 优化方法。
遗传算法是以达尔文的自然选择学说为基础发展起 来的。自然选择学说包括以下三个方面:
1
(1)遗传:这是生物的普遍特征,亲代把生物信息交 给子代,子代总是和亲代具有相同或相似的性状。生 物有了这个特征,物种才能稳定存在。
18
(3)生产调度问题 在很多情况下,采用建立数学模型的方法难以对生
产调度问题进行精确求解。在现实生产中多采用一些 经验进行调度。遗传算法是解决复杂调度问题的有效 工具,在单件生产车间调度、流水线生产车间调度、 生产规划、任务分配等方面遗传算法都得到了有效的 应用。
19
(4)自动控制。 在自动控制领域中有很多与优化相关的问题需要求
10
遗传算法

1.3 遗传算法与传统方法的比较
传统算法 起始于单个点 遗传算法 起始于群体
改善 (问题特有的)
否
改善 (独立于问题的) 否
终止?
终止? 是 结束
是
结束
1.3.1遗传算法与启发式算法的比较
启发式算法是通过寻求一种能产生可行解的启发式规则,找到问 题的一个最优解或近似最优解。该方法求解问题的效率较高,但是具有 唯一性,不具有通用性,对每个所求问题必须找出其规则。但遗传算法 采用的是不是确定性规则,而是强调利用概率转换规则来引导搜索过程。
1.2 遗传算法的特点
遗传算法是一种借鉴生物界自然选择和自然遗传机制 的随机搜索法。它与传统的算法不同,大多数古典的优化算 法是基于一个单一的度量函数的梯度或较高次统计,以产生 一个确定性的试验解序列;遗传算法不依赖于梯度信息,而 是通过模拟自然进化过程来搜索最优解,它利用某种编码技 术,作用于称为染色体的数字串,模拟由这些串组成的群体 的进化过程。
1.2.2 遗传算法的缺点
(1)编码不规范及编码存在表示的不准确性。 (2)单一的遗传算法编码不能全面地将优化问题的约束表示 出来。考虑约束的一个方法就是对不可行解采用阈值,这样, 计算的时间必然增加。 (3)遗传算法通常的效率比其他传统的优化方法低。 (4)遗传算法容易出现过早收敛。 (5)遗传算法对算法的精度、可信度、计算复杂性等方面, 还没有有效的定量分析方法。
上述遗传算法的计算过程可用下图表示。
遗传算法流程图
目前,遗传算法的终止条件的主要判据有 以下几种:
• 1) 判别遗传算法进化代数是否达到预定的最大代数; • 2) 判别遗传搜索是否已找到某个较优的染色体; • 3) 判别各染色体的适应度函数值是否已趋于稳定、再上升 否等。
基于遗传算法的自动化系统参数优化

基于遗传算法的自动化系统参数优化
自动化系统是现代工业化生产和运营的重要手段,系统参数优化可提高其运行效率和稳定性。
随着技术的不断升级,传统的手动参数调整方式已经无法满足复杂系统的需求。
基于遗传算法的自动化系统参数优化成为一种新方案。
遗传算法利用生物进化的原理,通过种群选择、交叉和变异等操作,模拟自然界中基因的遗传和进化过程,从而获得最优解。
将其应用于自动化系统参数优化中,可以自动搜索最优参数,避免了人工试错,提高了效率和精度。
基于遗传算法的自动化系统参数优化的步骤如下:
1. 系统建模:根据实际系统建立数学模型,明确目标函数和参数范围。
2. 初始化种群:随机生成初始种群,种群规模和参数精度要根据实际情况确定。
3. 适应度函数定义:根据目标函数确定适应度函数,将目标函数的取值映射到种群的适应度上。
4. 选择算子:根据适应度函数选择优质的个体,保留其基因信息,淘汰劣质的个体,避免快速陷入局部极小值。
5. 交叉算子:对选出的优质个体进行交叉操作,生成下一代个体。
6. 变异算子:对新生成的个体进行变异操作,增加种群的多样性。
7. 终止条件:根据实际情况,设置优化的迭代次数或误差范围
等终止条件。
基于遗传算法的自动化系统参数优化是一种高效、精确的优化
方式,但适用范围有限。
在实际应用中需要根据具体情况选择不同
的优化方法,综合考虑效果、时间和成本等因素,寻求最佳平衡点。
《人工智能导论》课程电子教案(遗传算法 )

m
f (xi )
max {
1i m
f
(xi )}
M
i 1
m
上式中的第一个方程表示变换前后的平均值不变,第 二个方程表示将当前的最优值放大为平均值的M倍。
二进制编码的交配规则
双亲双子法
交配位置
a1 a2 ... ai ai+1 ... an b1 b2 ... bi bi+1 ... bn
交配前
多交配位法
1101001 1100010
1100000 1101011
整数编码的交配规则
下面以旅行商问题为例,介绍几种整数 编码的交配规则。
常规交配法
随机选取一个交配位,子代1交配位之前的基因选自 父代1交配位之间的基因,交配位之后的基因,从父 代2中按顺序选取那些没有出现过的基因。
交配位
码后作为最优解输出;
(11)结束。
例:求函数的最大值
f (x) x2
其中x为[0, 31]间的整数 编码:采用二进制形式编码
由于x的定义域是[0, 31]间的整数,刚好 可以用5位二进制数表示,因此可以用5 位二进制数表示该问题的解,即染色体。 如00000表示x=0,10101表示x=21, 11111表示x=31等
0100100000010010
二进制表示存在的问题
采用这样的表示方法,对于n城市的旅行商问 题,至少需要用n×n位二进制向量表示一个 可能的旅行路线。一个n×n位二进制向量,
所有可能的编码个数为 2nn ,而一个对称的n
城市旅行商问题的可能解个数为n!/2,只占编 码个数非常小的比例。以n=10为例,编码个 数为可能解个数的7.0×1023倍。可能解在整 个状态空间中,是非常稀疏的,交配和变异 所产生的是大量的非可能解。
(完整)用遗传算法求解TSP问题

用遗传算法求解TSP问题遗传算法(Genetic Algorithm——GA),是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,它是由美国Michigan大学的J。
Holland教授于1975年首先提出的。
J.Holland 教授和它的研究小组围绕遗传算法进行研究的宗旨有两个:抽取和解释自然系统的自适应过程以及设计具有自然系统机理的人工系统。
遗传算法的大致过程是这样的:将每个可能的解看作是群体中的一个个体或染色体,并将每个个体编码成字符串的形式,根据预定的目标函数对每个个体进行评价,即给出一个适应度值。
开始时,总是随机的产生一些个体,根据这些个体的适应度,利用遗传算子-—选择(Selection)、交叉(Crossover)、变异(Mutation)对它们重新组合,得到一群新的个体.这一群新的个体由于继承了上一代的一些优良特性,明显优于上一代,以逐步向着更优解的方向进化.遗传算法主要的特点在于:简单、通用、鲁棒性强。
经过二十多年的发展,遗传算法已经在旅行商问题、生产调度、函数优化、机器学习等领域得到成功的应用。
遗传算法是一类可用于复杂系统优化的具有鲁棒性的搜索算法,与传统的优化算法相比,主要有以下特点:1、遗传算法以决策变量的编码作为运算对象.传统的优化算法往往直接决策变量的实际植本身,而遗传算法处理决策变量的某种编码形式,使得我们可以借鉴生物学中的染色体和基因的概念,可以模仿自然界生物的遗传和进化机理,也使得我们能够方便的应用遗传操作算子.2、遗传算法直接以适应度作为搜索信息,无需导数等其它辅助信息。
3、遗传算法使用多个点的搜索信息,具有隐含并行性。
4、遗传算法使用概率搜索技术,而非确定性规则。
遗传算法是基于生物学的,理解或编程都不太难。
下面是遗传算法的一般算法步骤:1、创建一个随机的初始状态初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样;在那里,问题的初始状态已经给定了。
用遗传算法求解中国34个省会TSP的问题

用遗传算法求解中国34个省会TSP问题一、TSP问题的描述旅行商问题(TSP)可以具体描述为:已知n个城市之间的相互距离,现有一个推销员从某一个城市出发,必须遍访这n个城市,并且每个城市只能访问一次,最后又必须返回到出发城市,如何安排他对这些城市的访问次序,可使其旅行路线的总长度最短。
现给出中国34个省会数据,要求基于此数据使用遗传算法解决该TSP问题。
中国34省会位置city =1.西藏2.云南3.四川4.青海5.宁夏6.甘肃7.内蒙古8.黑龙江9.吉林10.辽宁 11.北京 12天津 13.河北 14.山东 15.河南 16.山西 17.陕西18.安徽 19.江苏20.上海 21.浙江 22.江西 23.湖北 24.湖南 25.贵州 26.广西27.广东28.福建 29.海南 30.澳门 31.香港 32.台湾 33.重庆 34.新疆像素坐标如下:Columns 1 through 11100 187 201 187 221 202 258 352 346 336 290 211 265 214 158 142 165 121 66 85 106 127 Columns 12 through 22297 278 296 274 265 239 302 316 334 325 293 135 147 158 177 148 182 203 199 206 215 233 Columns 23 through 33280 271 221 233 275 322 250 277 286 342 220 216 238 253 287 285 254 315 293 290 263 226 Column 34 104 77二、遗传算法的介绍2.1 遗传算法遗传算法的基本原理是通过作用于染色体上的基因寻找好的染色体来求解问题,它需要对算法所产生的每个染色体进行评价,并基于适应度值来选择染色体,使适应性好的染色体有更多的繁殖机会,在遗传算法中,通过随机方式产生若干个所求解问题的数字编码,即染色体,形成初始种群;通过适应度函数给每个个体一个数值评价,淘汰低适应度的个体,选择高适应度的个体参加遗传操作,经过遗产操作后的个体集合形成下一代新的种群,对这个新的种群进行下一轮的进化。
遗传算法与蚁群算法结合

遗传算法与蚁群算法结合遗传算法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,每次迭代都要计算每个染⾊体在本种群内部的优先级别,类似归⼀化参数。
遗传算法综述

遗传算法综述尘本是心摘要:遗传算法是一种借鉴生物界自然选择和进化机制发展起来的高度有效的随机搜索算法。
近年来,由于遗传算法求解复杂优化问题的巨大潜力及其在工业工程领域的成功应用,这种算法受到了国内外学者的广泛关注。
本文介绍了遗传算法的基本原理和特点,以及在各个领域的应用情况。
关键词:遗传算法,综述,最优化。
A Review of Genetic AlgorithmsChen BenshixinAbstract:Genetic algorithms are considered as a search used in computing to find exact or a approximate solution for optimization and search problems.This article has a review of the genetic algorithm basic principle and the characteristic and its applications.Keywords:genetic algorithm,review,Optimization0前言在人工智能领域中,有不少问题需要在复杂而庞大的搜索空间中寻找最优解或准最优解。
在计算此类问题时,若不能利用问题的固有知识来缩小搜索空间则会产生搜索的组合爆炸。
因此,研究能在搜索过程中自动获取和积累有关搜索空间的知识并自适应地控制搜索过程从而得到最优解的通用搜索算法一直是令人瞩目的课题。
遗传算是这类特别有效的算法之一,它(GeneticAlgorithm,GA)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机搜索算法。
是由美国Michigan大学的J.Holland教授1975年首先提出,它尤其适用于处理传统搜索方法难以解决的复杂的和非线性的问题。
如著名的TSP、背包问题、排课问题等1遗传算法基本原理遗传算法是建立在自然选择和群众遗传学机理基础上的,具有广泛适应性的搜索方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2 090 9 9期 年月 计算机技术与发展 ∞MP1 HER TEa印 ]1 0GY AND DE、,E1 0PM叵NT V01.19 No.9 Sep.2009
基于淘汰机制的双种群遗传算法 方必和,于蕾蕾 (合肥工业大学,安徽合肥230009)
摘要:传统的遗传算法虽然经过了多方改进,但是早熟的困扰仍然存在。针对这一缺陷,提出一种基于淘汰机制的遗传 算法,模仿自然和社会的进化过程,在双种群遗传算法的基础上,将“战争”模式引入到种群的进化过程中去,建立一种新 的淘汰机制来保持种群的多样性,避免算法提前收敛。用测试函数对算法进行测试,并将结果与自适应遗传算法进行对 比和分析。实验证明,基于淘汰机制的遗传算法是可行且有效的。 关键词:淘汰机制;双种群遗传算法;多样性;测试函数 中图分类号:mO1.6 文献标识码:A 文章编号:1673—629X(2009)09—0101一o3
Dual Population Genetic Algorithm Based on Out Mechanism FANG Bi.he.YU Lei—lei (Hefei University of Technology,Hefei 230009,China)
Abstract:Whiletraditional genetic algorithm has beenimprovedmuch,butthetrouble of“premature convergence”renmins.In嗽 tothis defect,proposes genetic algorithm based onthe OUtmechanism,toimitatethemtural and social evolution,introducesthe‘‘WSX’’ model intothedml populationgenetic algorithm,the purpo ̄isto establishanewoutmechanismtomaintainthediversityof population, avoiding premature converg ̄ce.Finally,testthisalgorithmwithtestfunction,contrast and analysisthe resultwiththe resultof adaptive genetic ̄onthm.The experiments provedthat dual populationgenetic algorithm basedOnoutmechanismisfeasible and effective. Key WOIN ̄:OUt mechanism;dual populationgenetic ̄gofithm;diversity;test function
O引 言 遗传算法(GA)是近年来大家关注比较多的一种 智能算法,其简单通用、鲁棒性强、使用并行处理的优 点使其在各个领域都得到了广泛的应用uJ。经过近几 十年的发展,专家们提出了众多的改进方案,切实有效 地提高了遗传算法的性能 .3】,但是仍受到“过早收 敛”的困扰【4】。防止过早收敛,关键在于保持种群的多 样性。文中尝试性地将一些社会性的元素加入到算法 中去,建立一种类似于战争模式的淘汰机制,通过这种 竞争的方法来引导两个种群间的共同进化,并争取能 在较大程度上保持种群的多样性。
1加入淘汰模式的双种群遗传算法 并行遗传算法是一种今年来比较活跃的一个改进 分支,其中提到了多种群的概念,各个种群独立进化, 并相互交流。独立进化保证了种群的多样性,种群间 的交流保证了可行解收敛的速度。但是种群多则意味 收稿日期:2oo9—01-07;修回日期:2oo9一O3—18 作者简介:方必和(1964一),男,安徽巢湖人,副教授,硕士研究生导 师,研究方向为管理系统工程。 着耗费的时间增大,在某些问题上,像一些实时系统, 人们对解的精度要求不是特别高,但是对时间的要求 却是特别苛刻,怎样在比较短的时间内得到比较理想 的目标解,于是有些人提出了双种群遗传算法。如 Martikanien等提出了分层次的双种群遗传算法,杨小 芹等提出一种基于熵的双群体遗传算法,李军华等提 出了一种改进的双种群遗传算法l5】。 文中即是在双种群基础上进行的改进,建立一种 淘汰机制力图使进化摆脱早熟的困扰。 1.1基本思想 遗传算法中的基本单位是染色体,也就是一串包 含问题解的符号串。但是一般在解释遗传算法机理的 时候。习惯把它当成个体,若干个体组成一个种 群[6, 。在蚁群遗传算法中,可以把个体和种群解释 为蚂蚁和蚂蚁群[8 ;蜂群遗传算法中,也可被理解为蜂 和蜂群【 ;鉴于此,做出类似的假设:把个体当成是人。 而人群会自然而然地组成各自为政的种族,种族会各 自进化,但是又并不是完全孤立的,不同种族之间会有 “竞争”。纵观中国古代历史,“战争”是最常见的一种 竞争方式。文中就试图模拟这一社会进程,尝试通过 102· 计算机技术与发展 第19卷 引人“战争”模式来完成种族的共同进化进程u。。。 现在假设有两个种族,战争来临时,种族之间选出 各自的战士出征,按照“循环赛制”,双方的每个战士都 交战一次,然后记录每个战士的失败和胜利的情况。 为了记录相关数据,引入这样一个名词:生命点,用来 对战士进行淘汰性选择。 生命点是与战士的胜负次数密切相关的。生命点 小于0时,可视为此战士死亡,即被淘汰。给每个战士 个初始的生命点,当他战胜一次时,生命点加1;失 败一次,生命点减1。战斗结束后,扫描双方战士生命 点,清除死亡的个体,剩余的战士则各自回到自己种族 中,随后种族会重新补充人口,开始新一轮的遗传进化 操作。 这样经过战争的洗礼后,两个种群的成员都发生 了变化,一方面淘汰了相对弱势的个体,另一方面又给 种族增加了新鲜的血液。 文中模拟这一过程,对双种群遗传算法进行改进, 加入“战争”这一模式。 1.2概念 上述是基于淘汰机制的DGA(dual population ge netic algorithm)的基本思想,为此需定义一些基本概 念,假设有两个种群A和B。 1)生命点:记录每个战士战斗输赢的情况,经过试 验对比表明,将初始生命点设为战士人数的20%~ 40%时,算法效率最高。 2)战争:适应度高的个体作为战士,进行战斗。 A、B各取出其适应度位于前N名的个体作为待比较 种群AA和BB,然后让AA中的所有个体依次与BB中 的所有个体进行适应度的比较,适应度高的个体获胜, 生命点加1,适应度低的个体生命点减1。经过N0次比 较后,战斗结束。A和B扫描各自战士的生命点,将生 命点小于0的个体丢弃。经试验表明,将N设为种群规 模的40%~60%较为合适。 1.3算法描述 为了尽可能增大两个种群之间的差异,采取了一 种特殊的方式来对种群进行初始化操作。将其中一个 种群的染色体的基因位取反,就得到另一个种群的染 色体,如图1所示。 图1初始化染色体示例 算法步骤可描述如下: Stepl:初始化。产生两个同等规模的种群,初始 化其染色体和生命点;设定循环次数变量t=0o设定 最大循环代数丁。 Step2:计算适应度。两个种群分别取个体的染色 体进行适应度的计算。 Step3:保存最优解。两个种群分别保存自己的最 优解。 Step4:检测是否t<T。若满足,则比较两个种群 的最优值,最接近于理想值的即为所求值;若不满足, 继续。 Step5:分别进行遗传操作。包括选择、交叉和变异 三个算子。 Step6:战争。两个种群分别重新计算适应度,选择 战士,进行战争。 Step7:补充人121。战争结束后,两个种群分别扫描 各自的战士生命点,并随机生成新的个体代替死去的 战士;t十+。 算法流程图如图2所示。
图2基于淘汰机制的DGA流程图 1.4分析 在这种算法中,按照适应值与理想值接近的程度 将个体分为了三个部分:强个体——适应值最接近于 理想值的个体,对应于战争中幸存下来的战士;弱个体 置应值离理想值较远的个体,对应于未被选中为 战士的个体;其余部分则为中等个体,对应于在战争中 被淘汰的个体。 强个体和中等个体作为战士进人淘汰选择。在战 斗中,强个体因为适应值较高,获胜的几率就高,随着 战斗的进行,生命点会不断增大,则此类个体更不易被 淘汰,从而确保了强个体也就是优秀染色体在整个种 群进化过程中的主导地位。 中等个体的染色体跟强个体的比较接近,它们的 存在不易使算法跳出局部最优的困扰。因此,及时将 这些个体淘汰并重生新的个体,有助于增大种群的多 第9期 方必和等:基于淘汰机制的双种群遗传算法 ·103· 样性。 在模式定理中,遗传进化的本质被定义于优秀模 式的保存和改进,一般认为,一条染色体之所以适应值 很高,是因为它包含了优秀的模式。而弱个体的染色 体虽然整体不强,但是其基因片段中却可能存在着大 量优秀的模式。因此,选择将弱个体进行部分保留,在 定程度上保证了优秀模式的存活率。
2仿真实验 因为数学函数优化问题具有普遍意义,且能较好 地反应算法本身的实际效能,所以常常被用来作为遗 传算法的测试对象。为了检测基于淘汰机制的D 的有效性,引入了若干经典的测试函数[11】。 F1:f(z1, 2):min((4.0—2.1z}一 {)z;+ 1z2+ (4.0z;一4.0) ;) zl∈【一3,3], 2∈[一2,2]
F2: c , :,=m.inc 罟 舌 一。.5, l E【一100,100],z2∈[一100,100] 此函数为Schaffer函数,最小值为一1。 F3:f(x1, 2)=n'fin(100*( 2一z{) +(1一 z1) ) l E[一3,3],X2 E[一3,3] 此函数为Banana函数,此函数极难优化,只有一 个全局最小点,最小值为0。 为了进行比较,引入了自适应GA,其主要思想 是,遗传操作过程中,交叉和变异概率随着种群多样化 的不同进行自适应调整。其方法简单,改进效率高,是 人们比较常用的一种改进算法[12]。 为了排除随机数的干扰,对每个算法都进行了 100次。种群规模设为100,染色体长度为30,交叉概 率为0.9,选择概率为0.1。运行结果统计如表1至表 3所示,这里的最优值代表100次实验结果中最优的 个数据;最劣值则代表了其中最差的一个数据;平均 值即是这100个结果的算术平均值。 表1 F1函数的试验结果 搜到最优 FI 最优值 最劣值 平均值 值的次数