1 Star 1 Fork 0

独一无二 / 遗传算法运输规划

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.m 3.36 KB
一键复制 编辑 原始数据 按行查看 历史
独一无二 提交于 2023-05-18 11:00 . main
Maxgen=500;
%每次就改改上面这个迭代次数就好了!
G=[2000 2800 3200 3700 4000 5000 5800 7000];%每辆车的额定载重量
V=[12 19 25 32 30 38 42 50];%每辆车的额定容积
g=[251 306 212 158 166 251 183 288 216 158 121 255 188 114 161 358 232 272 69 116.5 181 196 219 248 158];%每个顾客需求总重量
v=[2.44 2.83 1.82 1.46 1.47 2.27 1.61 2.65 2.19 1.52 1.07 2.42 1.83 1.05 1.4 3.39 2.22 2.42 0.68 1.15 1.72 1.78 2.08 2.35 1.52];%每个顾客需求总体积
vend_location=[76 125.47 119.47 117.47 13.47 73 -143 -62 -17 121 70 54 -23 -6 1 -118 -118 125 83 -148 121 116 -54 -136 -77;
100.47 -142.53 -138.53 -137.53 -19.53 138 -131 104 -125 74 113 53 -109 32 39 121 -40 56 -147 36 -5 -108 -16 -95 129];%客户点坐标
%上面这些也可以改,下面这些和其它文件就别碰了,一碰全是错误
center=[0;0];
coordinate=[center vend_location];
N=25;
d=zeros(N+1,N+1);
for i=1:N+1
for j=1:N+1
if i==j
d(i,j)=0;
else
d(i,j)=sqrt(sum(((coordinate(:,i)-coordinate(:,j)).^2)));
end
end
end
K=length(G);
gen=0;
GGAP=1;
Popsize=1200;
lada1=0.7;
lada2=0.9;
lada3=0.005;
lada4=0.01;
FieldDR=[ones(1,N);(K)*ones(1,N)];
Chorm=inti_pop(Popsize,G,V,g,v,K)+rand(Popsize,N);
[Objv, F1, F2, F3, F4]=Objective_compute(Chorm,G,V,g,v,d,K);
trace=zeros(5,Maxgen);
[c111, index]=max(Objv);
enlist_chorm=Chorm(index,:);
h=waitbar(0,'等去吧');
while (gen<Maxgen)
FitV=ranking(-Objv);
Selch=select('rws',Chorm,FitV,GGAP);
Selch=recombin1(Selch,lada1,lada2,FitV);
Selch=mutbga1(Selch,FieldDR,lada3,lada4,FitV);
[ObjVsel, F1sel, F2sel, F3sel, F4sel,car_route]=Objective_compute(Selch,G,V,g,v,d,K);
Ind=find(ObjVsel==100000);
NN=length(Ind);
tem=inti_pop(NN,G,V,g,v,K)+rand(NN,N);
Selch(Ind,:)=tem;
[ObjVsel(Ind), F1sel(Ind), F2sel(Ind), F3sel(Ind) ,F4sel(Ind)]=Objective_compute(tem,G,V,g,v,d,K);
clear tem;
[Chorm, Objv]=reins(Chorm,Selch,1,1,Objv,ObjVsel);
[Objv1,Idx]=sort(Objv,'ascend');
Chorm(Idx(1),:)=enlist_chorm;
new_Chorm=inti_pop(round(Popsize*0.1),G,V,g,v,K)+rand(round(Popsize*0.1),N);
ObjV_new=Objective_compute(new_Chorm,G,V,g,v,d,K);
gen=gen+1;
[trace(1,gen), index]=max(Objv);
enlist_chorm=Chorm(index,:);
[a, trace(2,gen), trace(3,gen), trace(4,gen), trace(5,gen)]=Objective_compute(Chorm(index,:),G,V,g,v,d,K);
waitbar(gen/Maxgen);
end
close(h);
figure(1)
plot(trace(1,:))
xlabel('迭代次数')
ylabel('遗传算法适应度')
figure(2)
plot(trace(2,:))
xlabel('迭代次数')
ylabel('运输距离')
figure(4)
plot(trace(4,:))
xlabel('迭代次数')
ylabel('重量利用率')
figure(5)
plot(trace(5,:))
xlabel('迭代次数')
ylabel('容积利用率')
str={'-r','-g','-k','-b','-y','-m','-c','--b','-.b'};
figure(6)
plot(vend_location(1,:),vend_location(2,:),'k*');
for i=1:25
text(vend_location(1,i)+1,vend_location(2,i),num2str(i),'FontSize',14)
end
hold on
str2={'节点'};
kk=1;
for i=1:K
if ~isempty(car_route{i})
tem=[center vend_location(:,car_route{i}) center];
plot(tem(1,:),tem(2,:),str{kk})
kk=kk+1;
str2=[str2,strcat('车辆',num2str(i))];
end
end
legend(str2)
for i=1:K
if ~isempty(car_route{i})
disp(['派出第',num2str(i),'车运送的客户为:'])
disp(num2str(car_route{i}));
end
end
Matlab
1
https://gitee.com/wanglidong666/GA-car.git
git@gitee.com:wanglidong666/GA-car.git
wanglidong666
GA-car
遗传算法运输规划
WLD

搜索帮助

53164aa7 5694891 3bd8fe86 5694891