⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pga.m

📁 用matlab编写的单周期库存与运输问题整合优化程序
💻 M
字号:
function [result,mincost]=PGA(client,popsize,maxgen)
%库存-运输整合优化(ITIO)单亲遗传算法主文件,用于一个配送中心到多个客户的配送系统
%各参数意义:
%client-客户数量;popsize-种群规模;X,Y-客户坐标,第一个是配送中心
%order-客户可选订货量矩阵(client×2);q--车容量限制;MM---车辆超下限惩罚系数
%maxgen---终止代数;F--订货期望损失矩阵;mineV--需求车辆数下限
global client popsize  order  q  d  F MM minV;
client=9;%客户数量
popsize=400;
maxgen=1000;
q=48; %车容量限制
minV=3;%最少需要3辆车
MM=1500;%车辆数超下限惩罚系数
X=[30 37 49	52	20	40	21	17	31 32]; % 51 42 31  5 12 36];
Y=[40 52 49	64	26	30	47	63	62 33]; % 21 41 32 25 42 16];
%order=[7 30 16 9 21 15 19 23;7 30 16 9 21 15 19 23]';%只选最佳
%order=[5 21 12 8 15 11 14 15;5 19 11 7 14 10 13 14]';%只选次优
order=[7 28 16 9 15 15 17 20 11 ;5 22 12 7 12 12 13 18 8]';%可选择订货量
F=[23 21 11 3 15 11 23 13 10 ;21 20 10 2 14 10 21 10 9]';
%F=[5 19 11 7 14 10 13 14;5 19 11 7 14 10 13 14]';%只选最佳订货量
%F=[31 39 28 29 30 27 15 24;31 39 28 29 30 27 15 24]';%只选次优订货量
%F=[15 20 15 14 12 13 8 15 ;31 39 28 29 30 27 15 24 ]';%订货可选择的期望损失矩阵
d=dd(X,Y);%求点对间距离,输出d
clear newchrom
newchrom=crtbp(client,popsize); %创建初始种群(inipop)
%newchrom(1,:)=[1 1 1 1 1 1 1 1 1 3 2 5 4 8 7 6]; 
%newchrom(2,:)=[2 2 2 2 2 2 2 2 1 2 3 8 7 6 5 4];
chooseFCt=zeros(1,maxgen);
for gen=1:maxgen;
    [route1,vm1]=rtvc(newchrom); %判断完整染色体路径route及车辆数vm
    [cost1,FCt1]=fitness(newchrom,route1,vm1);%求适应度值FCt,成本cost
    newchrom1=newgen(newchrom,FCt1);%基因变异交换产生新的染色体,输出newchrom1
    [route2,vm2]=rtvc(newchrom1);%判断新染色体的完整路径route及车辆数vm 
    [cost2,FCt2]=fitness(newchrom1,route2,vm2);%求新的适应度值FCt,成本cost
    newchrom=choose(newchrom,newchrom1,FCt1,FCt2);%选出新一代newchrom
    chooseFCt(gen)=max(max(FCt1),max(FCt2));%生成最佳适应度值矩阵
end;
%输出最佳染色体及总耗费(总成本)
[bestroute,bestvm]=rtvc(newchrom);
[bestcost,bestFCt]=fitness(newchrom,bestroute,bestvm);
bestFC=max(bestFCt);
L=1;
while L<=popsize;
    if bestFC==bestFCt(L);
        bestchrom=newchrom(L,:);
        result2=bestroute{L,1};
        [f1,f2]=size(result2);
        result=zeros(1,client+f2);
        result1=bestchrom(1:client);
        result=[result1,result2-1];
        mincost=bestcost(L);
        maxFCt=bestFCt(L);
        break;
    end;
    L=L+1;
end;
mincost,maxFCt
%画各代最佳适应度变化图
figure(1),yy=chooseFCt;xx=1:maxgen;
plot(xx,yy,'r-'),grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -