我在做一個車輛路徑問題,用遺傳算法的,不會MATLAB編程,有人能幫我一下嗎?
%Max f(x1,x2)=10-x1*x1-x2*x2+x1*x2; -2.0480<=x1,x2<=2.0480
clc;clear all;
format long;%Set the data format(設定數(shù)據(jù)顯示格式)
%parameters Initialization (初始化參數(shù))
T=100;% Generation( 仿真代數(shù))
N=80;% Population size ( 群體規(guī)模)
pm=0.05;pc=0.8;%Crossover and mutation probability(交叉變異概率)
umax=2.048;umin=-2.048;%Parameter range(參數(shù)取值范圍)
L=10;%Single parameter string length, the total coding length is 2L(單個參數(shù)字串長度,總編碼長度2L)
bval=round(rand(N,2*L));%Population Initialization(初始種群)
bestv=-inf;%Optimal fitness Initialization(最優(yōu)適應度初值)
%Iteration stsar(迭代開始)
for ii=1:T
%Decoding, and the fitness calculation(解碼,計算適應度)
for i=1:N
y1=0;y2=0;
for j=1:1:L
y1=y1+bval(i,L-j+1)*2^(j-1);
end
x1=(umax-umin)*y1/(2^L-1)+umin;
for j=1:1:L
y2=y2+bval(i,2*L-j+1)*2^(j-1);
end
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=10-x1*x1-x2*x2+x1*x2; %The objective function(目標函數(shù))
xx(i,:)=[x1,x2];
end
func=obj;%Objective function into the fitness function(目標函數(shù)轉換為適應度函數(shù))
p=func./sum(func);
q=cumsum(p);%Cumulative(累加)
[fmax,indmax]=max(func);%seeking the best in this generation(求當代最佳個體)
if fmax>=bestv
bestv=fmax;%So far, the best fitness value(到目前為止最優(yōu)適應度值)
bvalxx=bval(indmax,:);%So far the best bit string(到目前為止最佳位串)
optxx=xx(indmax,:);%So far the optimal parameters(到目前為止最優(yōu)參數(shù))
end
Bfit1(ii)=bestv; % So far the optimal parameters(存儲每代的最優(yōu)適應度)
%%%%Genetic operation starts(遺傳操作開始)
%Roulette wheel selection(輪盤賭選擇)
for i=1:(N-1)
r=rand;
tmp=find(r<=q);
newbval(i,:)=bval(tmp(1),:);
end
newbval(N,:)=bvalxx;%Optimal retention(最優(yōu)保留)
bval=newbval;
%Single-point crossover(單點交叉)
for i=1:2:(N-1)
cc=rand;
if cc<pc
point=ceil(rand*(2*L-1));%To obtain one integer from 1 to 2L-1(取得一個1到2L-1的整數(shù))
ch=bval(i,:);
bval(i,point+1:2*L)=bval(i+1,point+1:2*L);
bval(i+1,point+1:2*L)=ch(1,point+1:2*L);
end
end
bval(N,:)=bvalxx;%Optimal retention(最優(yōu)保留)
%Locus mutation(位點變異)
mm=rand(N,2*L)<pm;%N lines(N行)
mm(N,:)=zeros(1,2*L);%Variation of the last line not change set to 0(最后一行不變異,強制賦0)
bval(mm)=1-bval(mm);
end
%Output(輸出)
plot(Bfit1);% Draw the best fitness evolution curves(繪制最優(yōu)適應度進化曲線)
bestv %Output the optimal fitness value(輸出最優(yōu)適應度值)
這個遺傳的我沒試過
下面這個是蟻群的結果
function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)
%%=========================================================================
%% ACATSP.m
%%-------------------------------------------------------------------------
%% 主要符號說明
%% C n個城市的坐標,n×2的矩陣
%% NC_max 最大迭代次數(shù)
%% m 螞蟻個數(shù)
%% Alpha 表征信息素重要程度的參數(shù)
%% Beta 表征啟發(fā)式因子重要程度的參數(shù)
%% Rho 信息素蒸發(fā)系數(shù)
%% Q 信息素增加強度系數(shù)
%% R_best 各代最佳路線
%% L_best 各代最佳路線的長度
%%=========================================================================
%%第一步:變量初始化
C=[1304,2312;3639,1315;4177,2244;3712,1399;3488,1535;3326,1556]
NC_max=200;
m=31;
Alpha=1;
Beta=5;
Rho=0.1;
Q=100;
n=size(C,1);%n表示問題的規(guī)模(城市個數(shù))
D=zeros(n,n);%D表示完全圖的賦權鄰接矩陣
for i=1:n
for j=1:n
if i~=j
D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
else
D(i,j)=eps;
end
D(j,i)=D(i,j);
end
end
Eta=1./D;%Eta為啟發(fā)因子,這里設為距離的倒數(shù)
Tau=ones(n,n);%Tau為信息素矩陣
Tabu=zeros(m,n);%存儲并記錄路徑的生成
NC=1;%迭代計數(shù)器
R_best=zeros(NC_max,n);%各代最佳路線
L_best=inf.*ones(NC_max,1);%各代最佳路線的長度
L_ave=zeros(NC_max,1);%各代路線的平均長度
while NC<=NC_max%停止條件之一:達到最大迭代次數(shù)
%%第二步:將m只螞蟻放到n個城市上
Randpos=[];
for i=1:(ceil(m/n))
Randpos=[Randpos,randperm(n)];
end
Tabu(:,1)=(Randpos(1,1:m))';
%%第三步:m只螞蟻按概率函數(shù)選擇下一座城市,完成各自的周游
for j=2:n
for i=1:m
visited=Tabu(i,1:(j-1));%已訪問的城市
J=zeros(1,(n-j+1));%待訪問的城市
P=J;%待訪問城市的選擇概率分布
Jc=1;
for k=1:n
if length(find(visited==k))==0
J(Jc)=k;
Jc=Jc+1;
end
end
%下面計算待選城市的概率分布
for k=1:length(J)
P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);
end
P=P/(sum(P));
%按概率原則選取下一個城市
Pcum=cumsum(P);
Select=find(Pcum>=rand);
to_visit=J(Select(1));
Tabu(i,j)=to_visit;
end
end
if NC>=2
Tabu(1,:)=R_best(NC-1,:);
end
%%第四步:記錄本次迭代最佳路線
L=zeros(m,1);
for i=1:m
R=Tabu(i,:);
for j=1:(n-1)
L(i)=L(i)+D(R(j),R(j+1));
end
L(i)=L(i)+D(R(1),R(n));
end
L_best(NC)=min(L);
pos=find(L==L_best(NC));
R_best(NC,:)=Tabu(pos(1),:);
L_ave(NC)=mean(L);
NC=NC+1
%%第五步:更新信息素
Delta_Tau=zeros(n,n);
for i=1:m
for j=1:(n-1)
Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);
end
Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);
end
Tau=(1-Rho).*Tau+Delta_Tau;
%%第六步:禁忌表清零
Tabu=zeros(m,n);
end
%%第七步:輸出結果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1),:)
Shortest_Length=L_best(Pos(1))
subplot(1,2,1)
DrawRoute(C,Shortest_Route)
subplot(1,2,2)
plot(L_best)
hold on
plot(L_ave)
function DrawRoute(C,R)
%%=========================================================================
%% DrawRoute.m
%% 畫路線圖的子函數(shù)
%%-------------------------------------------------------------------------
%% C Coordinate 節(jié)點坐標,由一個N×2的矩陣存儲
%% R Route 路線
%%=========================================================================
N=length(R);
scatter(C(:,1),C(:,2));
hold on
plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)])
hold on
for ii=2:N
plot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)])
hold on
end
我在做一個車輛路徑問題,用遺傳算法的,不會MATLAB編程,有人能幫我...
Optimizing a function using Simple Genetic Algorithm with elitist preserved Max f(x1,x2)=10-x1*x1-x2*x2+x1*x2; -2.0480<=x1,x2<=2.0480 clc;clear all;format long;%Set the data format(設定數(shù)據(jù)顯示格式)parameters Initialization (初始化參數(shù))T=100;% Generation( 仿真代數(shù))N=80...
遺傳算法(GA)求解VRPTW問題(附MATLAB代碼)
算法設計:(1) 編碼:在使用GA解決VRPTW時,我們采用簡單的整數(shù)編碼,如顧客數(shù)量為5,編碼形式為12345。針對VRPTW,我們需對編碼進行改進,如顧客數(shù)量為5,最多允許使用3輛車,編碼可以表示為1263475,其中6和7代表配送中心,將顧客分為3段,形成3條路徑。編碼長度為N+K-1,其中N為顧客數(shù)量,K為最大...
用遺傳算法求解配送路線優(yōu)化問題時,交叉率和變異率怎么設定?
上述模型中還要考慮時間問題,即每個客戶對所送物品的時間要求各不相同,故需加入一個時間參數(shù)t 。對每個運輸路徑都加上時間參數(shù)t (t 的值可由客戶需求中得知,并記錄到數(shù)據(jù)庫。),在每個規(guī)定的時間內(如一個月),優(yōu)先配送t 值小的物品,每次在用遺傳算法求解前,遍歷規(guī)定時間內的所有t ,按照t 值由小到大排列染色...
汽車路徑問題
Thangiah[7]和Joe[8]都曾應用遺傳算法求解VRPTW問題, 前者的目標是使總的服務成本最小, 而后者的目標有兩個, 首先是使用最少的車輛, 其次是在使用最少車輛的前提下使總成本最小[3]。時間窗車輛路徑問題的求解方法[2]含時窗限制之車輛途程問題(VRPTW)相對于車輛途程問題(VRP),必須額外考慮到運...
林丹主要研究成果
106-110頁。在解決車輛路徑問題上,他與丑英哲和王萍合作,提出了一種遺傳算法,發(fā)表在《系統(tǒng)工程理論、方法、應用》2006年第十五卷第六期,528-533頁。此外,林丹還與趙瑞合作,探討了基于隨機權和的多目標進化算法,該研究成果發(fā)表在《計算機工程與應用》2006年第四十二卷第三十二期,4-7頁。
有時間窗車輛路徑問題時間窗車輛路徑問題的求解方法
精確解法:如Kolen(1987)的分枝界限法,雖然能提供精確解,但僅適用于小型問題,涉及六到十五個節(jié)點。啟發(fā)式構建:如Soloman(1987)的順序插入法,通過節(jié)點選擇或路線安排構建路徑。啟發(fā)式改進:如K-Optimal的節(jié)線交換法,如Lin(1965)和Potvin與Rousseau(1993)的考慮旅行方向的交換算法,從初始解開始...
有時間窗車輛路徑問題什么是有時間窗車輛路徑問題
自Savelsbergh證明VRPTW屬于NP難問題后,研究重點轉向了各種啟發(fā)式算法,如遺傳算法、禁忌搜索法和模擬退火法,這些算法為解決VRPTW問題提供了創(chuàng)新工具。Thangiah和Joe分別利用遺傳算法解決VRPTW,前者的目標是優(yōu)化總服務成本,而后者追求雙重目標:一是使用最少車輛,二是在車輛最少的前提下,進一步降低總成本...
物流配送路徑優(yōu)化問題可以用哪些算法?
中國郵遞員問題等,而多車輛路徑問題則涉及路線規(guī)劃的復雜性,常用啟發(fā)式方法如掃描法、路程節(jié)約法求解。智能算法在配送路由規(guī)劃中亦有廣泛應用,如模擬退火算法、禁忌搜索算法、遺傳算法、蟻群算法和神經(jīng)網(wǎng)絡方法等。掌握配送路由規(guī)劃要點,選擇合適的規(guī)劃方法,對提升物流效率、降低成本至關重要。
組合優(yōu)化問題的解法有哪些常見的方法?
2.3 蟻群算法(Ant Colony Optimization):蟻群算法是一種模擬螞蟻覓食行為的啟發(fā)式算法。通過螞蟻之間的信息素傳遞和蒸發(fā)機制,實現(xiàn)對解空間的全局搜索。蟻群算法適用于求解各種組合優(yōu)化問題,如TSP、車輛路徑問題等。2.4 粒子群優(yōu)化算法(Particle Swarm Optimization):粒子群優(yōu)化算法是一種模擬鳥群覓食...
有時間窗車輛路徑問題的理論依據(jù)
遺傳算法、禁忌搜索法和模擬退火法等智能化啟發(fā)式算法的出現(xiàn)為求解VRPTW問題提供了新的工具。Thangiah和Joe都曾應用遺傳算法求解VRPTW問題, 前者的目標是使總的服務成本最小, 而后者的目標有兩個, 首先是使用最少的車輛, 其次是在使用最少車輛的前提下使總成本最小。
相關評說:
信陽市螺旋: ______ 少設兩個點就好了.比如有1-10個點.起點是1,終點是5.則染色體長度為8即可,并且允許出現(xiàn)1和5(不要說這點做不到哦),這樣染色體就可以表示路徑了.比如2 3 6 7 8 9 4 10表示的路徑就1->2->3->6->7->8->9->4->10->5
信陽市螺旋: ______ function [path,lmin]=ga(data,d) %data為點集,d為距離矩陣,即賦權圖tic%======================sj0=data;%開環(huán)最短路線%=================================% sj0=[data;data(1,:)]; %閉環(huán)最短路線%====================...
信陽市螺旋: ______ 都是有兩種調用方法,一種圖形界面的,這個從開始菜單,然后工具,然后從里面找神經(jīng)網(wǎng)絡 neural network,遺傳算法工具是 全局優(yōu)化工具箱里面的,global optimization.另外 一種通過命令行調用,這個需要你理解你都要做什么,我用神經(jīng)網(wǎng)絡舉例.第一步需要先整理出輸入變量和輸出變量,第二步設計并初始化神經(jīng)網(wǎng)絡,第三部訓練,第四部獲得結果.如果你想結合這兩者,就會更加復雜,詳細的你可以再問.我曾經(jīng)做過用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡的工具.
信陽市螺旋: ______ 這是個50維的極小值優(yōu)化問題,首先要明白遺傳算法是適合二進制處理的.因此首先要將每一維的實值xi編碼為長度為T的二進制串,這樣子基因長度就為50T.評估適應值,可以將基因中對應的xi的二進制串轉化為實值,然后代入函數(shù)求值,將該值作為適應值.具體之中的遺傳算法過程可以采用經(jīng)典的方法,這里不做解釋.另外的,實值轉為二進制串的,這個有挺多方法,我這里介紹一種方法:
信陽市螺旋: ______ 1.2 遺傳算法的原理 遺傳算法GA把問題的解表示成“染色體”,在算法中也即是以二進制編碼的串.并且,在執(zhí)行遺傳算法之前,給出一群“染色體”,也即是假設解.然后,把這些假設解置于問題的“環(huán)境”中,并按適者生存的原則,從中選擇出較適應環(huán)境的
信陽市螺旋: ______ 你好,答案如下所示.不能,lingo最擅長求規(guī)劃問題 其它不是它能求的了 希望你能夠詳細查看.如果你有不會的,你可以提問 我有時間就會幫你解答.希望你好好學習.每一天都過得充實.
信陽市螺旋: ______ A=50*rand(2,10)表示生成2行10列0-50之間的隨機數(shù)值 然后用floor取整數(shù)
信陽市螺旋: ______ 首先初始化,包括種群的大小,編碼的方案,遺傳的代數(shù),變異的概率,等等;然后進行選擇操作;接著是將選擇的個體進行交叉,;然后再進行選擇,并將選擇的個體進行變異;最后就是更新最優(yōu)值了.大體過程就是這樣了.
信陽市螺旋: ______ 我沒用過MatLab的遺傳算法工具箱,我是自己用C語言實現(xiàn)的遺傳算法.想要直觀地觀察遺傳代數(shù)與優(yōu)化變量的關系,有兩種常用辦法:一種是直接把N個優(yōu)化變量+遺傳代數(shù)做一個(N+1)維的坐標系,把每代的各優(yōu)化變量取值添加進坐標系中,生成MatLab或其它看圖工具能識別的數(shù)據(jù)文件進行觀看;二種辦法是每代求出各優(yōu)化變量取值的均方差,以均方差和遺傳代數(shù)建立一個二維坐標系,如前所述生成數(shù)據(jù)文件進行觀看.我一般采用的是第二種方法,并且,在遺傳算法內部,我也是用這種辦法來判斷種群進化情況的,很有效.
信陽市螺旋: ______ 車輛路線問題(VRP)最早是由Dantzig和Ramser于1959年首次提出,它是指一定數(shù)量的客戶 ,各自有不同數(shù)量的貨物需求,配送中心向客戶提供貨物,由一個車隊負責分送貨物,組織適當?shù)男熊嚶肪€,目標是使得客戶的需求得到滿足,并能...