资源简介

自己写的一个用遗传算法解决公交车路线规划问题,有兴趣的朋友可以私信我; 自己写的一个用遗传算法解决公交车路线规划问题,有兴趣的朋友可以私信我 自己写的一个用遗传算法解决公交车路线规划问题,有兴趣的朋友可以私信我 自己写的一个用遗传算法解决公交车路线规划问题,有兴趣的朋友可以私信我

资源截图

代码片段和文件信息

clc
clear all
close all
%% 参数设置
GenMax=100;
P1=0.5;
P2=0.5;
V=12;
Q=[0 84 72 80 69 54 70 64 57 73 80];
%% 初始种群
% Chrom.A=[3 5 6 1 11];
% Chrom.B=[2 4 10 7 1 8 9];
load Chrom.mat
% Popnum=size(Chrom1)
load D.mat
%% 交叉变异产生子代
Gen=0;
t1=0;
t2=0;
while Gen    ChromTemp=[];
    ChromNew1.A=[];
    ChromNew1.B=[];
    ChromNew2.A=[];
    ChromNew2.B=[];
    ChromNew3.A=[];
    ChromNew3.B=[];
    Popnum=size(Chrom2)
    Gen=Gen+1;
    %% 交叉变异
    for i=1:Popnum
        rate1=rand;
        rate2=rand;
        %交叉
        if rate1            t1=t1+1;
            ChromTemp=Chrom(i);
            L1=find(ChromTemp.A==1);
            L2=find(ChromTemp.B==1);
            L11=min(L1+1length(ChromTemp.A));
            L22=min(L2+1length(ChromTemp.B));
            ChromNew1.A=[ChromTemp.A(1:L1) ChromTemp.B(L22:end)];
            ChromNew1.B=[ChromTemp.B(1:L2) ChromTemp.A(L11:end)];
            ChromNew1=TestChrom(ChromNew1ga);
            ChromNew2.A=[ChromTemp.A(1:L1) ChromTemp.B(L2-1:-1:1)];
            ChromNew2.B=[ChromTemp.A(end:-1:L11) 1 ChromTemp.B(end:-1:L22)];
            ChromNew2=TestChrom(ChromNew2ga);
            Save(t1).Cross1=ChromNew1;
            Save(t1).Cross2=ChromNew2;
        end
%         变异
        if rate2            t2=t2+1;
            ChromTemp=Chrom(i);
            L1=find(ChromTemp.A==1);
            L2=find(ChromTemp.B==1);
            flag=1;
            while flag>0
                N_change1=randperm(length(ChromTemp.A));
                N_change2=randperm(length(ChromTemp.B));
                if (N_change1(1)~=L1)&(N_change2(1)~=L2)
                    flag=0;
                end
                temp1=ChromTemp.A(N_change1(1));
                temp2=ChromTemp.B(N_change2(1));
                ChromTemp.A(N_change1(1))=temp2;
                ChromTemp.B(N_change2(1))=temp1;
                ChromNew3=TestChrom(ChromTempga);
                Save(t2).Cross3=ChromNew3;
            end
        end
    end
    Mark=[ones(1Popnum) length(ChromNew1.A)  length(ChromNew2.A) length(ChromNew3.A) ];
    Chrom=[Chrom ChromNew1 ChromNew2 ChromNew3];
    Chrom=Chrom(find(Mark));
    [Best(Gen).TBest(Gen).Chrom]=getbest(ChromgaQV);
end
plot([Best.T])
xlabel(‘迭代次数‘)
ylabel(‘乘客出行总时间‘)
fprintf(‘A路线是%s\n‘num2str([Best(end).Chrom.A]))
fprintf(‘B路线是%s\n‘num2str([Best(end).Chrom.B]))







%             Lnum=randi([2 10]21);
%             temp=Chrom(iLnum(1));
%             ChromNew2=Chrom(i:);
%             ChromNew2(Lnum(1))=Chrom(iLnum(2));
%             ChromNew2(Lnum(2))=floor(cos(0.5*temp*pi));
%             Save(t2).Change=ChromNew2;
%         end
%     Chrom=[Chrom;ChromNew1;ChromNew2];
%     Chrom= unique(Chrom‘rows‘);
%     end
%
%
%
%
%
% end
% %         %     变异
% %         if rate2% %             Lnum=randi([2 10]21);
% %             temp=Chromnew(iLnum(1));
% %             Chromnew(iLnum(1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3161  2020-05-02 00:36  bus\BUS.m
     文件         265  2020-05-01 22:59  bus\Chrom.mat
     文件         257  2020-04-29 23:39  bus\D.mat
     文件       10083  2020-04-29 23:36  bus\ga.xlsx
     文件         971  2020-05-02 00:31  bus\getbest.m
     文件         667  2020-05-02 00:21  bus\getP.m
     文件         285  2020-05-01 22:58  bus\TestChrom.m

评论

共有 条评论