ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:22.65KB ,
资源ID:5735405      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5735405.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用Matlab实现遗传算法.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

用Matlab实现遗传算法.docx

1、用Matlab实现遗传算法用GA找到函数最小值x = ga(fitnessfcn,nvars) 局部无约束最小值,x是目标函数的适应度函数,nvars是适应度函数的尺寸(设计变量的数量)。目标函数和适应度函数接受了1N大小的x矢量,在x返回一个标量的计算值。x = ga(fitnessfcn,nvars,A,b)在线性不等式约束下,适应度函数的局部最小值。如果这个问题有m个线性不等式和n个变量,则A是mn矩阵,b是m1矩阵。注意:当人口类型选项设置为“位串”或者“自定义”,线性约束不满足。x = ga(fitnessfcn,nvars,A,b,Aeq,beq)存在线性等式约束下,适应度函数的局

2、部最小值。如果没有不等式存在,设置A= 和 b=。如果问题存在r个线性等式约束和n个变量,那么Aeq 是rn矩阵的大小,beq是r大小的矢量。注意:当人口类型选项设置为“位串”或者“自定义”,线性约束不满足。x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)定义了一系列设计变量x的最小和最大边界。以至于在范围内找到一个解。如果没有边界存在,LB 和 UB设置为空矩阵。如果x(i) 无下界,设置LB(i) = -Inf;如果x(i)无上界,设置UB(i) = Inf。x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlco

3、n)服从在非线性约束条件下的最小值,非线性函数接收x,返回C和Ceq向量,分别代表非线性的不等式和等式。GA最小化适应度函数,在C(x)0 和 Ceq(x)=0的条件下。如果无边界存在,设置 LB= 和 UB=。注意:当人口类型选项设置为“位串”或者“自定义”,非线性约束不满足。x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)用在结构选项中的值代替默认的优化参数来进行最小化,它也可以用gaoptimset函数来创建,具体参考gaoptimset的用法。x = ga(problem)在problem下找到最小值,problem是

4、包含下表的结构。fitnessfcnFitness function适应度函数nvarsNumber of design variables设计变量的数目AineqA matrix for linear inequality constraints线性不等式约束矩阵Bineqb vector for linear inequality constraints线性不等式约束向量AeqA matrix for linear equality constraints线性等式约束矩阵Beqb vector for linear equality constraints线性等式约束向量lbLower b

5、ound on x 最小边界ubUpper bound on x 最大边界nonlconNonlinear constraint function 非线性约束函数randstateOptional field to reset rand state重新设置均匀分布状态选项栏randnstateOptional field to reset randn state重新设置正态分布状态选项栏solvergaoptionsOptions structure created using gaoptimset 正如在使用者向导的优化工具Importing and Exporting Your Work描

6、述的一样,它依靠从优化工具导出一个问题来创建结构问题。 x,fval = ga(.) 在x下,返回适应度函数的值fval。 x,fval,exitflag = ga(.) 返回exitflag(终止条件值),整体识别算法的终止条件,下面列出了exitflag的值和算法相应的终止条件。 1 Average cumulative change in value of the fitness function over options.StallGenLimit generations less than options.TolFun and constraint violation less th

7、an options.TolCon. 2 Fitness limit reached and constraint violation less than options.TolCon. 3 The value of the fitness function did not change in options.StallGenLimit generations and constraint violation less than options.TolCon. 4 Magnitude of step smaller than machine precision and constraint v

8、iolation less than options.TolCon. 0 Maximum number of generations exceeded. -1 Optimization terminated by the output or plot function. -2 No feasible point found. -4 Stall time limit exceeded. -5 Time limit exceeded.x,fval,exitflag,output = ga(.) 返回output的值, 它是一个包含了每一代的输出和关于算法的其他性能信息,它的结构包括下面的范围。 r

9、andstate The state of rand, the MATLAB random number generator, just before the algorithm started. randnstate The state of randn the MATLAB normal random number generator, just before the algorithm started. You can use the values of randstate and randnstate to reproduce the output of ga. See Reprodu

10、cing Your Results. generations The number of generations computed. funccount The number of evaluations of the fitness function message The reason the algorithm terminated. maxconstraint Maximum constraint violation, if any.x,fval,exitflag,output,population = ga(.) 返回population的矩阵,它的行是最后一代。x,fval,exi

11、tflag,output,population,scores = ga(.) 返回最后一代的scores的值。注意:(默认下)对于族群类型使用Double Vector的问题,GA不会接受任何那些输入类型复杂的函数。为了解决复杂数据所涉及的问题,靠分开你的实部和虚部,写下你的函数使他们接收实向量。例子:根据软件提供的lincontest6(一个二元二次目标函数,此处即是适应度函数),上述程序找到了函数的最小值。终止条件为:适应度值得平均变化小于选项TolFun。A = 1 1; -1 2; 2 1;b = 2; 2; 3;lb = zeros(2,1);x,fval,exitflag = ga

12、(lincontest6, 2,A,b,lb) Optimization terminated: average change in the fitness value less than options.TolFun.x = 0.7794 1.2205fval = -8.03916(适应度函数的值)exitflag =1(终止条件值)求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0=x0temp=Cmin+objvalue(i);elsetemp=0.0;endfitvalue(i)=temp;endfitvalue=fitvalue;% 2.4 选择复制% 选择或复

13、制操作是决定哪些个体可以进入下一代。程序中采用赌轮盘选择法选择,这种方法较易实现。% 根据方程 pi=fi/fi=fi/fsum ,选择步骤:% 1) 在第 t 代,由(1)式计算 fsum 和 pi % 2) 产生 0,1 的随机数 rand( .),求 s=rand( .)*fsum% 3) 求 fis 中最小的 k ,则第 k 个个体被选中% 4) 进行 N 次2)、3)操作,得到 N 个个体,成为第 t=t+1 代种群%遗传算法子程序%Name: selection.m%选择复制function newpop=selection(pop,fitvalue)totalfit=sum(fi

14、tvalue); %求适应值之和fitvalue=fitvalue/totalfit; %单个个体被选择的概率fitvalue=cumsum(fitvalue); %如 fitvalue=1 2 3 4,则 cumsum(fitvalue)=1 3 6 10 px,py=size(pop);ms=sort(rand(px,1); %从小到大排列fitin=1;newin=1;while newin=pxif(ms(newin)fitvalue(fitin)newpop(newin)=pop(fitin);newin=newin+1;elsefitin=fitin+1;endend% 2.5 交

15、叉% 交叉(crossover),群体中的每个个体之间都以一定的概率 pc 交叉,即两个个体从各自字符串的某一位置% (一般是随机确定)开始互相交换,这类似生物进化过程中的基因分裂与重组。例如,假设2个父代个体x1,x2为:% x1=0100110% x2=1010001% 从每个个体的第3位开始交叉,交又后得到2个新的子代个体y1,y2分别为:% y10100001% y21010110% 这样2个子代个体就分别具有了2个父代个体的某些特征。利用交又我们有可能由父代个体在子代组合成具有更高适合度的个体。% 事实上交又是遗传算法区别于其它传统优化方法的主要特点之一。%遗传算法子程序%Name:

16、 crossover.m%交叉function newpop=crossover(pop,pc)px,py=size(pop);newpop=ones(size(pop);for i=1:2:px-1if(randpc)cpoint=round(rand*py);newpop(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py);newpop(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:py);elsenewpop(i,:)=pop(i);newpop(i+1,:)=pop(i+1);endend% 2.6 变异% 变异(mut

17、ation),基因的突变普遍存在于生物的进化过程中。变异是指父代中的每个个体的每一位都以概率 pm 翻转,即由“1”变为“0”,% 或由“0”变为“1”。遗传算法的变异特性可以使求解过程随机地搜索到解可能存在的整个空间,因此可以在一定程度上求得全局最优解。%遗传算法子程序%Name: mutation.m%变异function newpop=mutation(pop,pm)px,py=size(pop);newpop=ones(size(pop);for i=1:pxif(randpm)mpoint=round(rand*py);if mpointbestfitbestindividual=p

18、op(i,:);bestfit=fitvalue(i);endend% 2.8 主程序%遗传算法主程序%Name:genmain05.mclearclfpopsize=20; %群体大小chromlength=10; %字符串长度(个体长度)pc=0.6; %交叉概率pm=0.001; %变异概率pop=initpop(popsize,chromlength); %随机产生初始群体for i=1:20 %20为迭代次数objvalue=calobjvalue(pop); %计算目标函数fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度newpop=selection(pop,fitvalue); %复制newpop=crossover(pop,pc); %交叉newpop=mutation(pop,pc); %变异bestindividual,bestfit=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值y(i)=max(bestfit);n(i)=i;pop5=bestindividual;x(i)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1