VRP(車輛路徑問題)的兩種簡單演算法

2021-07-24 22:50:14 字數 1157 閱讀 6626

假設在乙個供求關係系統中,車輛從貨源取貨,配送到對應的若干配送點。車輛存在最大載貨量,且配送可能有時間限制。需要合理安排取貨時間,組織適當的行車路線,使使用者需求得到滿足,同時使某個代價函式最小,比如總工作時間最少、路徑最短等。

可以看出tsp問題是vrp問題的一種簡單特殊形式。因此,vrp也是一種np hard 問題。

基本思想是把各點單獨與貨源相連,構成若干條僅含乙個配送點的線路,總費用為兩倍從原點到各點的距離費用;然後計算將點 i 和點 j 連線在一條線路上費用節約值: s(

i,j)

=coi

+cio

+coj

+cjo

−(co

i+ci

j+cj

o)=c

oi+c

oj+c

ij具體步驟:

(1)計算節約值s(i,j),按從大到小排序

(2)考慮**中最大元素sm

ax(i

,j) ,對應點i和j,按條件進行操作:

1. 若i和j均不在構成線路上,則得到線路 o -> i ->j ->o,轉到(3)

2. 若i或j在已構成線路上,但不是內點 0 -> i ->o,則可連線,轉到(3)

3. 若i和j位於已構成不同線路上,且均不是內點,則連線得到線路,轉到(3)

4. 若i和j位於已構成的同一線路,則不連線,轉到(3)

(3)劃去第i行和第j列,即i點不能再到其他點,j點也不能由其他店到達

(4)若所有元素均被劃去,則得到完整線路,演算法終止;否則,在沒有劃去的元素中選最大元素,轉至(2)。

基本思想是種群仿照生物遺傳進化,通過基因交叉、突變繁衍出子代,形成新的種群,然後根據種群中每個個體的適應值,淘汰代價較高的個體,餘下個體繼續繁衍。在vrp問題中具體步驟如下:

(1)設定種群大小,設定繁衍代數,對所有的配送點編號,每個個體對應於所有配送點的一種排序,初始化得到初始種群;

(2)通過交叉、變異操作,形成子代,與原來的父代形成新的種群;

(3)根據載貨量限制,確定何時回貨源取貨,再結合代價標準,對種群中的每個個體計算適應值;

(4)根據適應值,淘汰代價高的父代子代,餘下個體形成新的種群,繁衍代數增加1;

(5)若繁衍代數達到(1)中設定的初值,停止繁衍,返回代價最小的個體,即最為最佳的配送次序;否則,返回(2)。

兩種Servlet的路徑配置

來吧,看看我在過去的一小時裡面折騰了個什麼玩意兒 首先介紹乙個知識點,然後再說一下我遇到的bug?servlet的url就是在瀏覽器中輸入了之後會直接訪問到的位址 相對路徑 比如在我們專案裡面,專案執行之後的上下文位址是 http localhost 8080 test,firstservlet的u...

兩種簡單的查詢方法

這兩種查詢方法是 順序查詢法,二分法查詢 順序查詢法 思想 簡單地說就是那那個要找的數挨個與陣列中的數比較 二分法查詢 首先二分法查詢要求要查詢的陣列中的數必須是經過排序的 思想 就是先找到陣列中中間的那個數與要查詢的數進行比較,如果中間的數大 中間的數小 就去取中間的數左邊 右邊 的那個陣列中的中...

shiro處理兩種路徑進行登陸問題

1.以下是我的shiro配置 static anon userfiles anon login authc logout logout user 當我需要使用兩個位址都進行登陸時 新增了一句 welogin authc 但是當我提交的位址是 welogin時卻沒有走登陸流程。但是提交位址是 logi...