【優(yōu)化調(diào)度】基于遺傳算法求解碼頭泊位分配調(diào)度優(yōu)化問(wèn)題含Matlab源碼
1 簡(jiǎn)介
港口市場(chǎng)不斷開放的同時(shí),對(duì)港口的要求也更高,港口間的競(jìng)爭(zhēng)更加激烈,由于運(yùn)輸船舶及港口相關(guān)設(shè)備價(jià)格昂貴,以及運(yùn)輸船舶在港口停泊時(shí)間的長(zhǎng)短直接影響到港口的經(jīng)濟(jì)效益和社會(huì)效益,因此需要對(duì)港口物流系統(tǒng)進(jìn)行更加合理有效的規(guī)劃,以提高港口營(yíng)運(yùn)效率,降低費(fèi)用和成本,從而吸引較多船舶掛靠,產(chǎn)生良好的經(jīng)濟(jì)效益.很多碼頭都盡力通過(guò)高效的資源利用率來(lái)降低成本,這些資源包括人力資源,泊位,集裝箱碼頭,集裝箱起重機(jī)和各種各樣的碼頭設(shè)備,在所有這些資源中,泊位是最重要的資源,一個(gè)好的泊位計(jì)劃能提高顧客的滿意度和港口通過(guò)率,從而使港口獲得較高的利潤(rùn). 本文在分析研究港口服務(wù)系統(tǒng)特征的基礎(chǔ)上,以所有船舶的總在港時(shí)間最短為目標(biāo),建立了港口泊位調(diào)度數(shù)學(xué)模型,根據(jù)模型的特點(diǎn)和各參數(shù)的物理意義及其相互關(guān)系導(dǎo)出了泊位調(diào)度模型必須滿足的約束條件,該模型充分考慮了港口泊位調(diào)度的隨機(jī)特性和其它影響因素,能夠比較客觀地反映港口泊位調(diào)度的實(shí)際運(yùn)行狀況.?
2 部分代碼
%Name:Berth Allocation.m
clear
clc
close all
%% 遺傳參數(shù)
popsize=100; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%群體大小
MAXGEN=50; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%最大遺傳代數(shù)
vesselNum=7; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %船舶數(shù)量
berthNum=2; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%泊位數(shù)量
chromlength=8; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %染色體長(zhǎng)度
Pc=0.6; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%交叉概率
Pm=0.001; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%變異概率
GGAP=0.9; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%選擇概率
%% 初始化種群
pop=initGroup(popsize,chromlength,vesselNum,berthNum); ? ? ? ? ? ? ? ? ? ? %隨機(jī)產(chǎn)生初始群體
%% 輸出隨機(jī)解的泊位調(diào)度方案和船舶在港總時(shí)間
disp('初始種群中的泊位調(diào)度方案:')
OutputPath(pop); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %畫出路徑函數(shù)
disp('初始隨機(jī)解的船舶在港總時(shí)間:')
objvalue=calobjvalue(pop,popsize,vesselNum,berthNum);
disp(objvalue(1))
disp('-------------------------------------------------------------')
%% 優(yōu)化
gen=0;
figure;
hold on;box on ?%display the boundary of the current axes.
xlim([0,MAXGEN]) ? ? ? ? ? ? ? ?%x在坐標(biāo)軸的范圍
title('優(yōu)化過(guò)程')
xlabel('迭代次數(shù)')
ylabel('船舶在港時(shí)間每次迭代的最優(yōu)解')
objvalue=calobjvalue(pop,popsize,vesselNum,berthNum); ? ? %計(jì)算目標(biāo)函數(shù)值
preobjvalue=min(objvalue);
while gen<MAXGEN
? ? %% 計(jì)算適應(yīng)度
? ? objvalue=calobjvalue(pop,popsize,vesselNum,berthNum); ? ? %計(jì)算目標(biāo)函數(shù)值
? ? line([gen-1,gen],[preobjvalue,min(objvalue)]);pause(0.0001) %line([X1 X2],[Y1 Y2],S); %點(diǎn)A(X1,Y1)和點(diǎn)B(X2 Y2)之間畫一條直線,S為其它屬性(顏色,線的粗細(xì)等)
? ? preobjvalue=min(objvalue);
? ? fitvalue=fitness(objvalue,popsize); ? ? ? ? ? ? ? ? ? ? ? %計(jì)算適應(yīng)度函數(shù)
? ? %% 選擇
? ? newpop=Selection(pop,fitvalue,GGAP);
? ? pop1=newpop; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%pop1為選擇過(guò)后的種群
? ? %% 交叉
? ? [newpop]=Crossover(pop1,Pc);
? ? pop2=newpop; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%pop2為交叉后的種群
? ? %% 變異
? ? [newpop]=Mutate(pop2,Pm);
? ? %% 重插入子代
? ? pop=Reins(pop,newpop,objvalue);
? ? gen=gen+1;
end
[minobjvalue,minIndex]=min(objvalue); ? %[Y,U]=min(A):返回行向量Y和U,Y向量記錄A的每列的最小值,U向量記錄每列最小值的行號(hào)
minpop=pop(minIndex,:);
%% 輸出最優(yōu)解的泊位調(diào)度方案和船舶在港總時(shí)間
disp('最優(yōu)解的泊位調(diào)度方案:')
OutputPath(minpop);
disp('最優(yōu)解的船舶在港總時(shí)間:')
disp(min(objvalue));
disp('-------------------------------------------------------------')
3 仿真結(jié)果


4 參考文獻(xiàn)
[1]張燕濤. 基于遺傳算法的泊位調(diào)度問(wèn)題優(yōu)化研究及仿真[D]. 武漢理工大學(xué), 2005.
博主簡(jiǎn)介:擅長(zhǎng)智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無(wú)人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問(wèn)題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
