?? pga.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 + -