車輛路徑問題VRPTW學習之一 開篇

2021-08-27 05:44:52 字數 1981 閱讀 8828

為了更好的學習vrp問題,準備將vrp問題的相關演算法、運算元、策略和技巧進行復現,編寫自己的vrp**庫。與此同時,在部落格上更新自己的學習程序,也是給自己的督促。除此之外,我將把問題限定在vrptw中,因為實際問題中,通常都包含了時間窗約束,同時還能解決duration的約束。先把我的vrp**的規範和說明介紹下,本人先使用lua語言,在microcity上執行,之後會改用python和c++改寫。lua裡的資料結構就是table搞定所有,所以開發起來特別方便。

classes:

route路徑:route = ,,;     weight=10, ttype=1}

solution(路徑集) : routes = {}

輸入引數:

二維距離和時間矩陣矩陣:

節點資訊:

nodes[1] =    包括座標、需求(這裡提前考慮後期的重量、體積約束)、節點型別(depot:1,delivery:2,pickup:3,chargestation:4)

車輛資訊:

vehicle = } 為多車型做準備

演算法目錄:

constructive algorithms:最近鄰插入,節約里程(cw)法,solomon insertion i

metaheuristic algorithms:模擬退火,禁忌搜尋,變鄰域搜尋,大規模鄰域搜尋

exact algorithms:列生成,branch&price

以上其實都已經完成,持續貼出**。

行,開始斷更很久的vrp刷書記錄。

本書第一章就不寫了,都是基礎,應對滾瓜爛熟。

本章給出了local search(鄰域搜尋)的基本框架,介紹了經典moves,並討論了feasibility tests,genericity,multiple neighborhoods,very constrained problems,complex moves and accelerattion。

我們選用augerat et al.的set a中的例子1,『a-n32-k5.vrp』進行我們的演算法測試。

name : a-n32-k5

comment : (augerat et al, min no of trucks: 5, optimal value: 784)

type : cvrp

dimension : 32

edge_weight_type : euc_2d

capacity : 100

大家可以看看例子的說明。32個點,capacity是100,歐幾里得距離。

local search 的幾個步驟如上,

node relocation and node exchange

在呼叫這些運算元的時候,我想寫成迭代器(iterator)來遍歷這些鄰域。

closure是一種可以訪問其外部巢狀環境的區域性變數的函式。

建立「非區域性的變數」(non-local variable)

function values(t)

local i = 0

return function () i = i + 1; return t[i] end

end

local search 的大部分操作的時間複雜度都是o(n2),但是需要使用很多次,碰到large scale的問題就跑不動了,因此我們想尋找一些加速的techniques。

也就是在feasibility tests的時候,根據問題和資料調整the order of tests,當然是容易violate的放前面,這樣會提前跳出。當然,怎麼確定順序或者動態調整順序,我們後期到了vrptw了再詳談。

1 restricted number m of randomly selected moves, 後期再講;

2 lists of neighbors,這個之前我用過,不錯,也下次再詳述。

3 vertex marking, 第一次見,之後試試,感覺挺有意思。

4 sequential search,

車輛路徑問題之jsprit(二) jsprit特性

jsprit 特性 支援無限和有限車隊 支援混合車隊 支援多倉庫 支援開放線路 支援不同出發和達到地 支援多尺寸 分割的運力 支援中途揀貨和投放 支援服務時間限制 支援有時間窗的任務 支援具有一定技能或載具要求的任務 支援優先順序 支援定義額外的無狀態和有狀態的約束 條件以解釋複雜問題的能力 模組 ...

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

假設在乙個供求關係系統中,車輛從貨源取貨,配送到對應的若干配送點。車輛存在最大載貨量,且配送可能有時間限制。需要合理安排取貨時間,組織適當的行車路線,使使用者需求得到滿足,同時使某個代價函式最小,比如總工作時間最少 路徑最短等。可以看出tsp問題是vrp問題的一種簡單特殊形式。因此,vrp也是一種n...

c 學習之一

建構函式不要為虛 virtual vc 6.0反正不支援,報錯為 error c2633 a inline is the only legal storage class for constructors 據說cb支援,不過,建構函式本來就沒必要為虛,物件初始化時肯定是要呼叫的 不過,有派生類時析構...