matlab求解外卖配送路径优化
生活随笔
收集整理的這篇文章主要介紹了
matlab求解外卖配送路径优化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模型限制條件
1.先取后送
2.多騎手
3.載重限制
如需幫助請私聊
tic clear clc %% 用importdata這個函數來讀取文件 data=importdata('data3.mat'); cap=4; %% 提取數據信息 vertexs=data(:,2:3); %所有點的坐標x和y customer=vertexs(2:end,:); %顧客坐標 cusnum=size(customer,1); %顧客數 v_num=6; %初始車輛使用數目 demands=data(2:end,4); %需求量 a=data(2:end,5); b=data(2:end,6); s=data(2:end,7); chesu=50; h=pdist(vertexs); dist=squareform(h); %距離矩陣 %% 遺傳算法參數設置 alpha=10000; %違反的容量約束的懲罰函數系數 NIND=200; %種群大小 MAXGEN=200; %迭代次數 Pc=0.9; %交叉概率 Pm=0.05; %變異概率 GGAP=0.9; %代溝(Generation gap) N=cusnum+v_num-1; %染色體長度=顧客數目+車輛最多使用數目-1 %% 種群初始化 Chrom=InitPop(NIND,N,cusnum,v_num); %% 輸出隨機解的路線和總距離 disp('初始種群中的一個隨機值:') [currVC,NV,TD]=decode(Chrom(1,:),cusnum,dist); %對初始解解碼 %% currCost=costFuction(currVC,dist,demands,cap,alpha,a,b,chesu,s); %求初始配送方案的成本=車輛行駛總成本+alpha*違反的容量約束之和 disp(['車輛使用數目:',num2str(NV),',車輛行駛總距離:',num2str(TD)]); disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') %% 優化 BestCost=zeros(MAXGEN,1); %記錄每一代全局最優解的總成本 gen=1; while gen<=MAXGEN%% 計算適應度ObjV=calObj(Chrom,cusnum,cap,demands,dist,alpha,a,b,chesu,s); %計算種群目標函數值FitnV=Fitness(ObjV);%% 選擇SelCh=Select(Chrom,FitnV,GGAP);%% OX交叉操作SelCh=Recombin(SelCh,Pc,cusnum,dist);%% 變異SelCh=Mutate(SelCh,Pm);%% 重插入子代的新種群Chrom=Reins(Chrom,SelCh,ObjV);%% 刪除種群中重復個體,并補齊刪除的個體 % Chrom=deal_Repeat(Chrom);%% 打印當前最優解ObjV=calObj(Chrom,cusnum,cap,demands,dist,alpha,a,b,chesu,s); %計算種群目標函數值[minObjV,minInd]=min(ObjV);BestCost(gen)=minObjV;disp(['第',num2str(gen),'代最優解:'])[bestVC,bestNV,bestTD]=decode(Chrom(minInd(1),:),cusnum,dist);disp(['車輛使用數目:',num2str(bestNV),',車輛行駛總距離:',num2str(bestTD)]);fprintf('\n')%% 更新迭代次數gen=gen+1 ; end %% 打印外層循環每次迭代的全局最優解的總成本變化趨勢圖 figure; plot(BestCost,'LineWidth',1); title('全局最優解的總成本變化趨勢圖') xlabel('迭代次數'); ylabel('總成本');disp(['最低成本為:',num2str(BestCost(end))]) %% 打印全局最優解路線圖 draw_Best(bestVC,vertexs); % toc配送結果
配送路線1:0->2->3->1->4->12->14->11->13->
配送路線2:0->6->16->
配送路線3:0->8->18->
配送路線4:0->7->17->10->20->
配送路線5:0->9->19->
配送路線6:0->5->15->
其中1-10為商家 11-20為顧客,1與11相對應
總結
以上是生活随笔為你收集整理的matlab求解外卖配送路径优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++入门必学库函数 memset
- 下一篇: matlab怎么求解多元非线性方程组,M