遗传算法解决非线性规划问题的Matlab程序_第1页
遗传算法解决非线性规划问题的Matlab程序_第2页
遗传算法解决非线性规划问题的Matlab程序_第3页
遗传算法解决非线性规划问题的Matlab程序_第4页
遗传算法解决非线性规划问题的Matlab程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

非线性整数规划的遗传算法Matlab程序(图)一般而言,非线性整数规划是指数复杂的NP问题,如果限制复杂,诸如Matlab优化工具箱和lingo之类的优化软件通常不能应用,即使应用也不能提供令人满意的解。 在这种情况下,需要设计专门针对问题的优化算法。 以下是将遗传算法应用于非线性整数规划的编程示例,供参考!模型的形式和适应度函数定义如下:这是一个具有200个01决策变量的多目标非线性整数规划,按如下描述进行优化的目标函数,在将多目标转换成单目标时采用简单的加权过程。function Fitness=FITNESS(x、FARM、e、q、w )%适应度函数%输入参数列表由% x决策变量构成的450的0-1矩阵存储% FARM细胞结构的当前种群包括个体x% e 450的系数矩阵% q 450的系数矩阵% w 150的系数矩阵%伽玛=0.98;N=length(FARM) %种群规模F1=zeros(1,n )F2=zeros(1,n )for i=1:Nxx=FARMi;ppp=(1-xx) (1-q).*xx;F1(i)=sum(w.*prod(ppp ) );F2(i)=sum(sum(e.*xx );结束ppp=(1-x) (1-q).*x;f1=sum(w.*prod(ppp ) );f2=sum(sum(e.*x );fitness=game ma * sum (min ( sign (f1-f1 ); zeros(1,n ) ) (1- gamma ) * sum (min ( sign (f2- f2) ) zeros (1,n );针对问题设计的遗传算法如下,其中重点考虑了对模型约束的处理函数 XP,LC1,LC2,LC3,LC4=MYGA(M,n,Pm )调整计划解析系统%输入参数列表% M遗传进化迭代次数% N种群规模% Pm变异概率%输出参数列表% Xp的最佳个体% LC1子目标1的收敛曲线% LC2子目标2的收敛曲线% LC3平均适应度函数的收敛曲线% LC4最佳适应度函数的收敛曲线%参照调用格式Xp,LC1,LC2,LC3,lc4 =myga (50,40,0.3 )%第一步:加载数据和变量初始化load eqw; 加载%3个系数矩阵e,q,w%输出变量的初始化XP=zeros (4,50 )LC1=zeros(1,m )LC2=zeros(1,m )LC3=zeros(1,m )LC4=zeros(1,m )Best=inf;步骤2 :随机生成初始种群用于保存farm=cell(1,n) %种群的细胞结构k=0;while k %以下是合法个体的生成过程x=zeros (4,50 ) % x随机确定每列中1的个数for i=1:50R=rand;col=zeros (4,1 )if R0.7RP=randperm(4) %1的位置也是随机的Col(RP(1)=1;elseif R0.9RP=randperm(4)Col(RP(1:2)=1;elseRP=randperm(4)Col(RP(1:3)=1;结束x(:i)=Col;结束%以下是检查是否满足行和约束条件的过程,不满足约束条件的将被丢弃Temp1=sum(x,2 )Temp2=find(Temp120 )if length(Temp2)=0k=k 1;farmk=x;结束结束%以下是进化的反复过程counter=0; 设置%迭代计数器while counter%步骤3 :交集%交叉采用父母双胞胎的一点交叉new farm=cell (1,2 * n ) %子的细胞结构Ser=randperm(N) %2个随机对象的对象表A=farmSer(1); 检索%父代aB=farmSer(2); 取出%父bP0=unidrnd(49) %随机选择交点a= a (:1: p0),B(:(p01 ) :结束) ; 生成%子ab= b (:1: p0),A(:(p01 ) :结束) ; 生成%子bnewfarm2*N-1=a; 参加%子种群newfarm2*N=b;%以下的循环重复上述步骤for i=1:(N-1 )A=farmSer(i);B=farmSer(i 1);P0=unidrnd(49 )a= a (:1: p0),B(:(p01 ) :结束) ;b= b (:1: p0),A(:(p01 ) :结束) ;newfarm2*i-1=a;newfarm2*i=b;结束FARM=farm,newfarm; %新旧种群合并%步骤4 :选择复制flag=ones (1,3 * n ) %标志向量。 标记是否满足约束条件%以下的过程是检测新个体是否满足约束条件for i=1:(3*N )x=FARMi;sum1=sum(x,1 )sum2=sum(x,2 )flag1=find(sum1=0)flag2=find(sum1=4)flag3=find(sum220 )if length (flag1) length (flag2) length (flag3) 0FLAG(i)=0; 如果不满足%约束条件,则标记为0结束结束满足NN=length(find(FLAG)=1) %约束条件的个体数。 必须大于或等于nNEWFARM=cell(1,NN )%以下的过程是去除对主制约不满意的个体kk=0;for i=1:(3*N )if FLAG(i)=1kk=kk 1;NEWFARMkk=FARMi;结束结束%以下的过程是计算并记忆现在种群的每个个体的适应值SYZ=zeros(1,NN )syz=zeros(1,n )for i=1:NNx=NEWFARMi;SYZ(i)=FITNESS2(x,NEWFARM,e,q,w ); %调用自适应值子函数结束k=0;%以下是选择复制,选择更好的n个个体复制到下一代while k minSYZ=min(SYZ )posSYZ=find(SYZ=minSYZ )POS=posSYZ(1)k=k 1;farm=new farm pos ;syz(k)=SYZ(POS )SYZ(POS)=inf;结束%记录和更新、最佳个体更新、收敛曲线数据记录minsyz=min(syz )meansyz=mean(syz )pos=find(syz=minsyz )LC3(counter 1)=meansyz;if minsyz Best=minsyz;Xp=farmpos(1);结束LC4(counter 1)=Best;ppp=(1-Xp) (1-q).*Xp;LC1(计数器1 )=sum (w.* prod (PPP ) )lc2 (计数器1 )=sum (sum (e.* XP ) )步骤5 :变异for i=1:Nif Pmrand%是否变异由变异概率Pm来控制AA=farmi; 取出%个体POS=unidrnd(50) %随机选择变异位R=rand;col=zeros (4,1 )if R0.7RP=randperm(4)Col(RP(1)=1;elseif R0.9RP=randperm(4)Col(RP(1:2)=1;elseRP=randperm(4)Col(RP(1:3)=1;结束%以下判断变异引起的新个体是否满足制约,如果不满足则此次变异无效AA(:POS)=Col;Temp1=sum(AA,2 )Temp2=find(Temp120 )if length(Temp2)=0farmi=AA;结束结束结束counter=counter 1结束%步骤7 :绘制收敛图figure(1)plot(LC1 )xlabel (重复次数)ylabel (子目标1的值)title (子对象1的收敛曲线)figure(2)plot(LC2 )xlabel (重复次数)ylabel (子目标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论