1 / 6
文档名称:

遗传算法解决非线性规划问题的Matlab程序(共6页).doc

格式:doc   大小:84KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

遗传算法解决非线性规划问题的Matlab程序(共6页).doc

上传人:xiang1982071 2022/2/25 文件大小:84 KB

下载得到文件列表

遗传算法解决非线性规划问题的Matlab程序(共6页).doc

文档介绍

文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
非线性整数规划的遗传算法Matlab程序(x,2);
    Temp2=find(Temp1>20);
    if length(Temp2)==0
        k=k+1;
        farm{k}=x;
    end
end
   
%% 以下是进化迭代过程
counter=0;%设置迭代计数器
while counter
   
%% 第三步:交叉
    %交叉采用双亲双子单点交叉
    newfarm=cell(1,2*N);%用于存储子代的细胞结构
    Ser=randperm(N);%两两随机配对的配对表
    A=farm{Ser(1)};%取出父代A
    B=farm{Ser(2)};%取出父代B
    P0=unidrnd(49);%随机选择交叉点
    a=[A(:,1:P0),B(:,(P0+1):end)];%产生子代a
    b=[B(:,1:P0),A(:,(P0+1):end)];%产生子代b
    newfarm{2*N-1}=a;%加入子代种群
    newfarm{2*N}=b;
    %以下循环是重复上述过程
    for i=1:(N-1)
        A=farm{Ser(i)};
        B=farm{Ser(i+1)};
        P0=unidrnd(49);
        a=[A(:,1:P0),B(:,(P0+1):end)];
        b=[B(:,1:P0),A(:,(P0+1):end)];
        newfarm{2*i-1}=a;
        newfarm{2*i}=b;
    end
    FARM=[farm,newfarm];%新旧种群合并
   
%% 第四步:选择复制
    FLAG=ones(1,3*N);%标志向量,对是否满足约束进行标记
    %以下过程是检测新个体是否满足约束
    for i=1:(3*N)
        x=FARM{i};
        sum1=sum(x,1);
        sum2=sum(x,2);
        flag1=find(sum1==0);
        flag2=find(sum1==4);
        flag3=find(sum2>20);
        if length(flag1)+length(flag2)+length(flag3)>0
            FLAG(i)=0;%如果不满足约束,用0加以标记
        end
    end
    NN=length(find(FLAG)==1);%满足约束的个体数目,它一定大于等于N
    NEWFARM=cell(1,NN);
    %以下过程是剔除不满主约束的个体
    kk=0;
    for i=1:(3*N)
        if FLAG(i)==1
            kk=kk+1;
            NE