資源簡(jiǎn)介
用MATLAB的yalmip工具箱調(diào)用CPLEX求解器求解帶有時(shí)間窗的TSP問(wèn)題,MATLAB編寫(xiě)代碼,可以直接運(yùn)行,有部分備注描述

代碼片段和文件信息
function?[dij]=distance(pipj)%%[zi?bi?ri?ti][zj?bj?rj?tj]
%%??求任意兩場(chǎng)箱位之間的距離:
%%pipj為輸入,表示兩個(gè)點(diǎn)的坐標(biāo),以一行向量形式表示;
%%dij為函數(shù)的輸出:
%%dij表示求出的兩點(diǎn)之間的距離結(jié)果;
zi=pi(1);bi=pi(2);ri=pi(3);ti=pi(4);
zj=pj(1);bj=pj(2);rj=pj(3);tj=pj(4);
if?zi~=zj???%跨箱區(qū)作業(yè)!!
????%?stsi??stai
????if??ti?==?1?%%第一層的箱子
????????stsi=0;?%%?i到扶梯的距離
????????stai=(ri-1)*2.5;%%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????else?%%非第一層的箱子
????????stsi=abs(ri-4)?*2.5;?%%?i到扶梯的距離
????????stai=(4-1)*2.5; %%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????end
????%?stsj??staj
????if??tj?==?1?%%第一層的箱子
????????stsj=0;?%%?i到扶梯的距離
????????staj=(rj-1)*2.5;%%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????else?%%非第一層的箱子
????????stsj=abs(rj-4)?*2.5;?%%?i到扶梯的距離
????????staj=(4-1)*2.5; %%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????end
????%ssi??ssj
????ssi=(ti-1)*2.5;?%%i下扶梯的距離
????ssj=(ti-1)*2.5;?%%j上扶梯的距離
????%%關(guān)于i的?sb1i
????if??bi?<=9
????????sb1i=(bi-1)?*(12+2);?%%從i所在貝位到Bay1的通道距離(大貝)
????elseif??bi>9
????????sb1i=(bi-1)?*(12+2)+(6+2);?%%從i所在貝位到Bay1的通道距離(小貝)
????end
????%%關(guān)于j的?sb1j
????if??bj?<=9
????????sb1j=(bj-1)?*(12+2);?%%從j所在貝位到Bay1的通道距離(大貝)
????elseif??bj>9
????????sb1j=(bj-1)?*(12+2)+(6+2);?%%從j所在貝位到Bay1的通道距離(小貝)
????end
????zij=abs(zi-zj)*50;
????dij=stsi+ssi+stai+sb1i+zij+sb1j+staj+ssj+stsj;
else????????%zi==zj,同一箱區(qū)
????if??bi==bj????%同一箱區(qū)同一貝位
????????if??ti==tj????%同貝同層
????????????dij=abs(ri-rj)*2.5;
????????else???????%同貝不同層
????????????stsi=abs(ri-4)*2.5;
????????????stsj=abs(rj-4)*2.5;
????????????ssi=abs(ti-tj)*2.5;
????????????dij=stsi+ssi+stsj;
????????end
????else????%同箱區(qū)不同貝
????????%?stsi??stai
????????if??ti?==?1?%%第一層的箱子
????????????stsi=0;?%%?i到扶梯的距離
????????????stai=(ri-1)*2.5;%%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????????else?%%非第一層的箱子
????????????stsi=abs(ri-4)?*2.5;?%%?i到扶梯的距離
????????????stai=(4-1)*2.5; %%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????????end
????????%?stsj??staj
????????if??tj?==?1?%%第一層的箱子
????????????stsj=0;?%%?i到扶梯的距離
????????????staj=(rj-1)*2.5;%%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????????else?%%非第一層的箱子
????????????stsj=abs(rj-4)?*2.5;?%%?i到扶梯的距離
????????????staj=(4-1)*2.5; %%從某一貝位第一層某位置(扶梯處或第一層其他排位處)到通道的距離
????????end
????????ssi=(ti-1)*2.5;?%%i下扶梯的距離
????????ssj=(ti-1)*2.5;?%%j上扶梯的距離
????????if??bi<=9&&bj<=9
????????????sbbij=abs(bi-bj)?*(12+2);?%%?i和j兩貝位通道之間的通道距離(不考慮小貝)
????????elseif??bi>=9&&bj>=9
????????????sbbij=abs(bi-bj)?*(6+2); %%?i和j兩貝位通道之間的通道距離(考慮小貝)
????????else
????????????sbbij=?(9-min(bibj))*(12+2)+(6+2);?%%?i和j兩貝位通道之間的通道距離(考慮小貝)
????????end
????????dij=stsi+ssi+stai+stsj+ssj+staj+sbbij;
????end
end
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3146??2017-08-23?13:31??distance.m
?????文件????????2351??2017-08-25?10:55??YALMIP_reefer_container_bestRoute.m
評(píng)論
共有 條評(píng)論