車輛調度 matlab,基于遺傳算法的車輛調度問題的matlab源程序

越界 發表于 2013-7-8 09:16 bbd016eb636182ff59f287f6e5567aa8.gif

有償服務哦

function??chushis)

K=4; %最多4輛車

inn=100;%迭代次數上限

citynum=8;%需求點數量

KM=citynum+K+1; %配送途徑種類

%產生初始種群

m=zeros(1,inn);

m=m';

s=zeros(inn,citynum+K+1);

for i=1:1:inn

s(i,:)=randperm(KM); %隨機排列構成個體

end

s=[m s];

for i=1:inn

for j=1:KM-1

if s(i,j)>citynum

s(i,j)=0;

end

end

end

xlswrite('data.xls',s)

%計算適應度

function [f,p]=shyd(s);

K=4; %最多4輛車

M=10000;

inn=100;%迭代次數上限

citynum=8;%需求點數量

KM=citynum+K+1; %配送途徑種類

q=[2 1.5 4.5 3 1.5 4 2.5 3]; %需求點的需求量

t=[1 2 1 3 2 2.5 3 0.8]; %各需求點卸貨時間

a1=[1 4 1 4 3 2 5 1]; %送貨車輛到達時間上限

b=[4 6 2 7 5.5 5 8 4];%送貨車輛時間下線

c=[0,40,60,75,90,200,100,160,80

40,0,65,40,100,50,75,110,100

60,65,0,75,100,100,75,75,75

75,40,75,0,100,50,90,90,150

90,100,100,100,0,100,75,75,100

200,50,100,50,100,0,70,90,75

100,75,75,90,75,70,0,70,100

160,110,75,90,75,90,70,0,100

80,100,75,150,100,75,100,100,0];

y=zeros(citynum+1,citynum+1);

for i=1:inn-1

a=s(i,:);

for j=1:KM-1

m=a(j);

n=a(j+1);

m=m+1;

n=n+1;

end

y(m,n)=1; y=y';

for i=1:citynum

for j=1:citynum

mubiaob=c(i,j)*y(i,:);

end

end

xuq1=0;

for i=1:citynum

for j=1:citynum

xuq1=xuq1+s(i)*y(i,:)-q(i);

end

xuqiu=max((xuq1),0)*M;

end

end

shij1=0;

shij2=0;

for i=1:citynum

for j=1:citynum

for l=1:citynum

shij1=shij1+t(i)-a1(i);

shij2=shij2+b(i)-t(i);

end

shij3=max((shij1),0);

shij4=max((shij2),0);

shijian=M*shij3+M*shij4;

end

end

f=mubiaob+xuqiu+shijian;

f=1./f;

%計算選擇概率

fsum=0;

for i=1:14

fsum=fsum+f(i);

end

for i=1:14

ps(i)=f(i)/fsum;

end

%計算累積概率

p(1)=ps(1);

for i=2:14

p(i)=p(i-1)+ps(i);

end

p=p';

%“選擇”操作

%從種群中選擇兩個個體

function xuze=sell(s,p)

inn=size(p,1);

for i=1:inn

r=rand(inn,1);??%產生一個隨機數

prand=p-r;

j=1;

while prand(j)<0

j=j+1;

end

xuze(i)=j;

%選中個體的序號

end

sel1=xuze(1);

sel2=xuze(2);

%“交叉”操作

function snew=cross(s,B,pc)

A=s(4,:);

B=s(3,:);

c=find(A==0);

d=find(B==0);

a=sym(A);

b=sym(B);

k=size(a,1);

for i=1:size(a,2)

for j=1:k

e(i,c(k))=a(i+k-1);

end

end

for i=1:size(a,2)

for j=1:k

e(i,d(k))=b(i+k-1);

end

end

[f,p]=shyd(s);

f=f';

a=a';

b=b';

c0=round(rand*(k-1))+1;

c1=round(rand*(k-1))+1;

a=[f(:,c0),a]; b=[e(:,c1),b];

for i=1:size(a,2);

j=1:size(e,2)

if a(i)==e(j)

a(i)==[];

end

end

for i=1:size(b,2);

j=1:size(f,2)

if b(i)==f(j)

b(i)==[];

end

end

a=double(a);

b=double(b);

g=zeros(size(A));

for i=1:size(a)

for j=1:size(c)

g(i+j)=a(i);

end

end

h=zeros(size(A));

for i=1:size(b)

for j=1:size(d)

h(i+j)=b(i);

end

end

g=g';

h=h';

snew=[g h];

%變異

function??snew=bianyi(snew,pm)

bn=size(snew,2);

snnew=snew;

c2=round(rand*(bn-2))+1;

%在[1,bn-1]范圍內隨機產生一個變異位

c3=round(rand*(bn-2))+1;

chb1=min(c2,c2);

chb2=max(c3,c2);

x=snew(chb1+1:chb2);

snnew(chb1+1:chb2)=fliplr(x);

pmm=pro(pm);

%根據變異概率決定是否進行變異操作,1則是,0則否

if pmm==1

c2=round(rand*(bn-2))+1;

%在[1,bn-1]范圍內隨機產生一個變異位

c3=round(rand*(bn-2))+1;

chb1=min(c2,c3);

chb2=max(c2,c3);

x=snew(chb1+1:chb2);

snnew(chb1+1:chb2)=fliplr(x);

end

function pcc=pro(pc);

test(1:100)=0;

l=round(100*pc);

test(1:l)=1;

n=round(rand*99)+1;

pcc=test(n);

%主程序

function ga

s=xlsread('data.xls');

[f,p]=shyd(s);

pm=0.8; %變異概率

pc=0.2; % 交叉比率

gn=1;

inn=100;%迭代次數上限

gnmax=1000; %最大代數

while gn

for j=1:2:inn

xuze=sell(s,p);

%選擇操作

scross=cross(s,xuze,pc);

%交叉操作

scnew(j,:)=scross(1,:);

scnew(j+1,:)=scross(2,:);

smnew(j,:)=bianyi(scnew(j,:),pm);

%變異操作

smnew(j+1,:)=bianyi(scnew(j+1,:),pm);

end

s=smnew;

%產生了新的種群

[f,p]=shyd(s);

%計算新種群的適應度

%記錄當前代最好和平均的適應度

[fmax,nmax]=max(f);

ymean(gn)=1/mean(f);

ymax(gn)=1/fmax;

%記錄當前代的最佳個體

x=s(nmax,:);

gn=gn+1;

end

gn=gn-1;

figure(2);

plot(ymax,'r');

hold on;

plot(ymean,'b');

grid;

title('搜索過程');

legend('最優解','平均解');

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533884.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533884.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533884.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

strtotime()加半個小時_椰子雞這樣做太好吃了,一滴水不用加,鮮香嫩滑,做法非常簡單...

轉眼就是6月了&#xff0c;時間真的好快啊&#xff0c;好似白駒過隙&#xff0c;一眼就過去了。剛剛還是桃花開的時候&#xff0c;轉眼五月桃都熟了。不得不說&#xff0c;李煜說得很對&#xff0c;“林花謝了春紅&#xff0c;太匆匆&#xff01;”6月了&#xff0c;6月有什么呢…

webpack 入口文件 php,如何實現webpack多入口文件打包配置

本篇文章主要介紹了webpack多入口文件頁面打包配置詳解&#xff0c;現在分享給大家&#xff0c;也給大家做個參考。大多數情況下&#xff0c;我們使用 webpack來打包單頁應用程序&#xff0c;這個時候只需要配置一個入口&#xff0c;一個模板文件&#xff0c;但也不盡是如此&am…

接口里面的方法都是抽象方法嗎_大家都在講高中學習的方法有哪些,那方法和技巧有什么異同的嗎?...

大家都在講高中學習的方法有哪些&#xff0c;那方法和技巧有什么異同嗎&#xff1f;高中怎樣學習&#xff0c;方法重要還是技巧更重要&#xff1f;老牛倒是覺得&#xff0c;二者密不可分&#xff0c;缺一不可。那么&#xff0c;我們一起來看看&#xff0c;高中怎樣學習才是最好…

python 筆試題 英方_4000字轉型數據分析師筆試面試經驗分享

大家好&#xff0c;我是戴師兄~在上一篇文章中我分享了快速自學數據分析的經驗。本篇文章&#xff0c;我將跟大家分享下我的筆試和面試心得。開頭先說說我轉型前的職業背景&#xff1a;想看筆試面試經驗的同學萌可以直接跳過這一段~2018年我從中國人民大學經濟管理學專業畢業&a…

android 抓取webview中的所有圖片_如何一鍵提取PDF文檔中的所有圖片?

原標題&#xff1a;如何一鍵提取PDF文檔中的所有圖片&#xff1f;目前PDF文檔被大家廣泛應用&#xff0c;主要是因為PDF文檔在傳輸和轉換的過程中比較穩定&#xff0c;所以PDF格式幾乎是辦公文件格式的首選。大家都知道PDF文檔轉換格式以及編輯都需要專門的PDF編輯器來實現。但…

php shell 交互,通過 Tinker 實現 Laravel 命令行交互式 Shell

通過 Tinker 實現 Laravel 命令行交互式 Shell由 學院君 創建于2年前, 最后更新于 1年前版本號 #19508 views4 likes0 collectsREPL 與 PsySHLaravel 自帶了一個功能強大的 REPL —— Tinker&#xff0c;所謂 REPL&#xff0c;是 Read–Eval–Print-Loop 的縮寫&#xff0c;這是…

python中垃圾回收機制_Python中的變量和垃圾回收機制

1、python中的變量python和java中的變量本質不一樣。java中聲明變量時要指定變量的數據類型&#xff0c;int、str或某一類&#xff0c;之后虛擬機就會在內存中申請一塊空間&#xff0c;空間的大小跟類型相關。通俗的理解就是把變量想象成一個盒子&#xff0c;盒子里能裝什么東西…

戴爾電腦好還是華為好_華碩和戴爾筆記本哪種好 華碩和戴爾優缺點分析【詳解】...

隨著時代快速的發展&#xff0c;筆記本電腦已經成了我們生活中的標配。如今&#xff0c;市面上筆記本電腦的款式眾多&#xff0c;相信大家對華碩和戴爾并不陌生吧&#xff01;那么&#xff0c;我們該怎么去選擇呢&#xff1f;今天小編就給大家介紹華碩和戴爾筆記本哪個好&#…

php檢查 session是否存在,檢查sessionid已知的PHP會話是否處于活動狀態

實際上,您可以將session_id和session_start用于此目的.$ids [135b29ef958a23418f2a804474787305, // active session135b29ef958a23418f2a804474787306, // inactive session135b29ef958a23418f2a804474787305, // active session];foreach($ids as $id){session_id($id);sess…

c++ python混合編程 restful_簡單上手nodejs調用c++(c++和js的混合編程)

因為項目的原因&#xff0c;最近經常使用node.js搭RESTful接口。性能還是很不錯啦&#xff0c;感覺比Spring Boot之類的要快。而且在不錯的性能之外&#xff0c;只要程序結構組織好&#xff0c;別讓太多的回調把程序結構搞亂&#xff0c;整體開發效率比Java快的就太多了。如果想…

電腦掃描二維碼_線上分享 | 網絡工作坊:平板電腦工作術

澳門生產力暨科技轉移中心將于9月29日下午3時&#xff0c;舉辦資訊科技工具應用線上工作坊&#xff0c;講解平板電腦辦公應用&#xff0c;歡迎有興趣人士報名&#xff0c;名額有限&#xff0c;先到先得。該中心早前已舉辦是次主題的應用工作坊&#xff0c;坊間反應積極&#xf…

java bean 轉json 串,終于找到了一篇能看懂的如何把javabean轉換成json字符串的文章,嘿嘿,分享一下!...

學會了在j2ee中使用ajax后,有時候從服務器返回客戶端的數據是對象&#xff0c;自己手動拼湊json字符串容易出錯&#xff0c;通過谷歌知道了json-lib這個類庫&#xff0c;方便的支持java中對象到json字符串的轉化。看source-forge的json-lib介紹說&#xff0c;需要jakarta commo…

數據庫設置_CentOS7 - 設置MySQL數據庫

設置MySQL數據庫本文介紹如何在CentOS上執行流行的MySQL數據庫服務器的基本安裝。 MySQL是當今使用最廣泛的數據庫系統&#xff0c;它可以在許多不同的行業中找到&#xff0c;為動態網站和大型數據倉庫等各種產品提供數據存儲。準備此配方要求CentOS系統具有有效的網絡連接和管…

提出離職后怎么定last day_不管你因為什么離職,用正規的離職方式是你最正確的選擇!...

#不管你是因為什么離職&#xff0c;用正規的離職方式離職是你最正確的選擇&#xff0c;如果因為不恰當的方式造成與公司的矛盾&#xff0c;可能讓你今后會非常被動。書面離職是最具有法律效力的&#xff0c;按照勞動法&#xff0c;你有權在提出正式離職一個月后走人&#xff0c…

mqtt php 16進制數據,phpMQTT 內存耗死問題

場景:(訂閱)鏈接不上mqtt的時候&#xff0c;一下代碼會出錯&#xff1a;function read($int 8192, $nb false){// print_r(socket_get_status($this->socket));$string"";$togo $int;if($nb){return fread($this->socket, $togo);}// var_dump($this->so…

人臉識別代碼_10行代碼實現人臉識別

什么是人臉識別人臉識別&#xff0c;是基于人的臉部特征信息進行身份識別的一種生物識別技術。用攝像機或攝像頭采集含有人臉的圖像或視頻流&#xff0c;并自動在圖像中檢測和跟蹤人臉&#xff0c;進而對檢測到的人臉進行臉部識別的一系列相關技術&#xff0c;通常也叫做人像識…

ticketvalidationexception票根不符合目標服務_如何在有效降低企業倉儲成本的同時不降低企業的總體服務質量目標水平?...

對于企業而言&#xff0c;如何降低倉儲成本&#xff0c;同時要保證物流總成本最低和不降低企業的總體服務質量和目標水平的前提下進行&#xff0c;常見的措施有以下幾點&#xff1a;一用“先進先出方式&#xff0c;減少倉儲物的保管風險。”先進先出是儲存管理的準則之一&#…

matlab編程 英文翻譯,MATLAB編程,MATLAB programming,音標,讀音,翻譯,英文例句,英語詞典...

Image:114994698204558.jpgmatlabmatlab是矩陣實驗室(matrix laboratory)之意。除具備卓越的數值計算能力外&#xff0c;它還提供了專業水平的符號計算&#xff0c;文字處理&#xff0c;可視化建模仿真和實時控制等功能。matlab的基本數據單位是矩陣&#xff0c;它的指令表達式…

python進群_Manim-python 進群問題之解答

事情起因人閑下來的時候總想找點事情做&#xff01;這不&#xff0c;昨天考完試后在B站上逛&#xff0c;不小心進入了學習區&#xff0c;在00后學長那里看到了一個視頻。鏈接如下&#xff1a;具有美感的傅里葉級數居然還能夠畫畫&#xff01;&#xff01;&#xff01;這讓我一個…

python科學計算_可視化圖解Python科學計算包NumPy

NumPy包是python生態系統中數據分析、機器學習和科學計算的主力。 它極大地簡化了向量和矩陣的操作。Python的一些主要軟件包依賴于NumPy作為其基礎架構的基礎部分&#xff08;例如scikit-learn、SciPy、pandas和tensorflow&#xff09;。我們將介紹一些使用NumPy的主要方法&am…