MATLAB遗传算法作业

MATLAB遗传算法作业

ID:38982452

大小:146.40 KB

页数:10页

时间:2019-06-22

MATLAB遗传算法作业_第1页
MATLAB遗传算法作业_第2页
MATLAB遗传算法作业_第3页
MATLAB遗传算法作业_第4页
MATLAB遗传算法作业_第5页
资源描述:

《MATLAB遗传算法作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MATLAB遗传算法一:遗传算法简介:遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领

2、域。它是现代有关智能计算中的关键技术。二:遗传算法的基本步骤a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。b)个体评价:计算群体P(t)中各个个体的适应度。c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。d)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上

3、的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。三:matlab实现例子:f(x)=10*sin(5x)+7*cos(4x)x∈[0,10]将变量域[0,10]离散化为二值域[0,1023],x=0+10*b/1023。1.初始化initpop.mfunctionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chrom

4、length));%rand随机产生每个单元为0或者1行数(种群数量)为popsize,列数为chromlength(个体所含基因数)的矩阵,2.计算目标函数值2.1将二进制数转化为十进制数(1)decodebinary.m%产生[2^n2^(n-1)...1]的行向量,然后求和,将二进制转化为十进制functionpop2=decodebinary(pop)[px,py]=size(pop)%Pop的行和列数fori=1:pxpop2(i)=0forj=1:pypop2(i)=pop2(i)+2.^(py-

5、j)*pop(i,j)endend2.2将二进制编码转化为十进制数(2)Decodechrom.m%函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置functionpop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1)%pop1取pop的第spoint列到spoint+length-1列为止pop2=decodebinary(pop1)2.2.3计算目标函数值%calobjval

6、ue.m函数的功能是实现目标函数的计算function[objvalue]=calobjvalue(pop)temp1=decodechrom(pop,1,10)%将pop每行转换成十进制x=temp1*10/1023%将二值域中的数转化为变量域的数objvalue=10*sin(5*x)+7*cos(4*x)%变量域是从1到10m=max(objvalue)b=0fori=1:100ifobjvalue(i)==mb=b+1endendfigurefplot('10*sin(5*x)+7*cos(4*x)'

7、,[010])holdonplot(x,objvalue,'or')xlabel(sprintf('%2d',b))gridon3计算个体的适应值calfitvalue.m%计算个体的适应值functionfitvalue=calfitvalue(objvalue)[px,py]=size(objvalue)fori=1:pyifobjvalue(i)>0;temp=objvalue(i)elsetemp=0.0endfitvalue(i)=tempEnd4选择复制selection.m%根据方程pi=fi/

8、∑fi=fi/fsum,选择步骤:%1)在第t代,计算fsum和pi%2)产生{0,1}的随机数rand(.),求s=rand(.)*fsum%3)求∑fi≥s中最小的k,则第k个个体被选中%最后再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。%4)进行N次2)、3)操作,得到N个个体,成为第t=t+1代种群function[newpop]=selec

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。