Vehicle Routing Problem (VRP) là API cung cấp giải pháp để tối ưu tuyến đường vận chuyển cho một đội xe phục vụ một lượng công việc nhất định. API này cung cấp các tuỳ chọn cho phép bổ sung các tham số về trọng lượng phục vụ, chi phí, thời gian hoạt động của một xe để đưa ra các tuyến đường phù hợp nhằm đáp ứng một lượng công việc đưa vào, bao gồm việc giao hàng, nhận hàng, thời gian nhận hàng, thời gian giao hàng
API
URL: /vrp
Method: POST
Content-Type: application/json
Request mẫu
curl --location --request POST 'https://api.vnmap.com.vn/vrp' \ --header 'Content-Type: application/json' \ --data-raw '{ "key":"{{API_KEY}}", "vehicles":[ { "id":1, "start":{"lng":106.68314908546016,"lat":10.803259272429408}, "capacity":55, "costs":2500, "end":{"lng":106.68568109074583,"lat":10.811985176196991} }, { "id":1, "start":{"lng":106.68314908546016,"lat":10.803259272429408}, "capacity":22, "costs":2500, "end":{"lng":106.68568109074583,"lat":10.811985176196991} } ], "jobs":[ { "id":1, "description":"Giao anh Quoc", "delivery": 1 , "pickup": 55 , "priority":1, "location":{"lng":106.67366479437896,"lat":10.803975901943996} }, { "id":2, "description":"Giao anh Duc", "delivery": 1 , "pickup": 1 , "priority":1, "location":{"lng":106.69246171497416,"lat":10.790317489166636} }, { "id":3, "description":"Giao anh Duc 2", "priority":11, "delivery": 1 , "pickup": 1 , "location":{"lng":106.68413613827217,"lat":10.798242816645477} }, { "id":4, "delivery": 1 , "pickup": 1 , "description":"Giao anh AA", "priority":11, "location":{"lng":106.65915940816625,"lat":10.785638075366874} } ] }'
Input
Tham số | Mô tả |
---|---|
jobs |
Là một mảng các công việc đưa vào. Thông tin công việc là một đối tượng job được mô tả bên dưới |
shipments |
Đây là một mảng chứa các công việc vừa lấy hàng và vừa giao hàng trực tiếp |
vehicles |
Là một mảng các phương tiện truyền vào |
Phương tiện
Phương tiện truyền vào bao gồm các tham số như sau:
Key | Description |
---|---|
id |
id của phương tiện. Id này không được trùng lặp |
[description ] |
Mô tả cho phương tiện |
start |
Toạ độ bắt đầu của phương tiện {lat:10.1213,lng:106.12122} |
[end ] |
[Không bắt buộc] Toạ độ kết thúc của phương tiện {lat:10.1213,lng:106.12122} |
[capacity ] |
[Không bắt buộc] Khối lượng tối đa mà phương tiện có thể vận chuyển được |
[costs ] |
[Không bắt buộc] Chi phí cho phương tiện |
[time_window ] |
[Không bắt buộc] Thời gian hoạt động của phương tiện [bắt đầu, kết thúc]. Đơn vị là timestamp |
Jobs
Là một đối tượng job chứa các tham số như sau:
Key | Description |
---|---|
id |
ID duy nhất cho công việc |
[description] |
Mô tả cho công việc |
location |
{lat:10.1212,lng:106.2323} |
delivery |
khối lượng giao hàng của xe |
pickup |
khối lượng nhận hàng của xe |
[priority] |
Tham số quy định độ ưu tiên của xe giá trị từ 0 đến 100. Mặc định là 0 |
[time_windows] |
một mãng chứa thời gian làm việc [bắt đầu,kết thúc]. Đơn vị tính là timestamp |
Nếu các công việc có id giống nhau thì sẽ báo lỗi
Shipments
Đây là một mảng chứa các công việc vừa lấy hàng và vừa giao hàng trực tiếp
Key | Description |
---|---|
pickup |
Là một đối tượng shipment được mô tả bên dưới |
delivery |
Là một đối tượng shipment được mô tả bên dưới |
priority |
Tham số quy định độ ưu tiên của xe giá trị từ 0 đến 100. Mặc định là 0 |
amount | Khối lượng đơn hàng |
Đối tượng shipment
Key | Description |
---|---|
id |
Id của công việc |
[description] |
Mô tả cho công việc |
location |
Vị trí của công việc. Ví dụ: {lat:10.1212,lng:106.2323} |
Kết quả
Key | Description |
---|---|
code |
Thông tin mã lỗi |
results |
Mãng chứa kết quả tổng hợp |
unassigned |
Mãng chứa danh sách các công việc chưa phân công được. |
routes |
Kết quả tuyến đường di chuyển |
Code
Value | Status |
---|---|
0 |
Thành công |
1 |
Server bị lỗi |
2 |
Dữ liệu đầu vào không hợp lệ |
3 |
Vấn đề định tuyến không hợp lệ |
Results
Key | Description |
---|---|
cost |
Chi phí tổng của các lộ trình |
routes |
Tổng số tuyến đường trả về |
unassigned |
Tổng số công việc chưa được phân công |
duration |
Thời gian di chuyển |
[delivery ] |
Tổng khối lượng giao hàng |
[pickup ] |
Tổng khối lượng nhận hàng |
[distance ]* |
Quảng đường di chuyển |
Routes
Key | Description |
---|---|
vehicle |
id của phương tiện truyền vào |
steps |
Thông tin chi tiết công việc |
duration |
Thời gian di chuyển |
[delivery ] |
Tổng khối lượng giao hàng |
[pickup ] |
Tổng khối lượng nhận hàng |
[description ] |
Mô tả phương tiện |
[overview_polyline]* | Thông tin tuyến đường di chuyển show trên bản đồ |
[distance ]* |
Quảng đường đi |
Steps
A step
object has the following properties:
Key | Description |
---|---|
type |
Thông tin công việc (start , job , pickup , delivery , end ) |
duration |
Thời gian trên từng step |
[description ] |
Mô tả công việc |
[location ] |
Toạ độ điểm đến |
[id ] |
id của công việc |
[distance ]* |
Quảng đường di chuyển |
Kết quả mẫu
{ "code": 0, "result": { "routes": 2, "delivery": [ 4 ], "pickup": [ 58 ], "duration": 1765, "distance": 23924, "unassigned": 0 }, "routes": [ { "vehicle": 1, "delivery": 1, "pickup": 55, "duration": 572, "priority": 1, "distance": 6589, "steps": [ { "type": "start", "location": { "lat": 10.803259272429408, "lng": 106.68314908546016 }, "load": 1, "duration": 0, "distance": 0 }, { "type": "job", "location": { "lat": 10.803975901943996, "lng": 106.67366479437896 }, "id": 1, "job": 1, "load": 55, "duration": 268, "distance": 3294 }, { "type": "end", "location": { "lat": 10.811985176196991, "lng": 106.68568109074585 }, "load": 55, "duration": 572, "distance": 6589 } ], "overview_polyline": "q_}`AqpcjSCE]]YWq@o@SUc@d@c@n@e@v@W`@]d@m@t@GLGLMVYl@IJOb@ETK^KZGPIZKn@SRWNc@_@q@k@FGn@u@JQVa@p@u@^q@T[bAyA\\i@f@u@f@m@HKZa@JOJKXSTOPMjBuApApAdAdAVXxBvBFFnArAnArALNbAbAPRPR`@b@FH\\\\HHx@x@^^RVLRN`@DLBTM~EEvASrDG|ACn@ARGxB?JADGrBEbBAJInBWtGCh@OxDAXALA`@GjAe@?Y?E@EMAAC?_CIqAe@CAQ?g@_@gAi@a@YQM[k@cD{BFKeD}Ba@[GHIJsArBwAtBcD}B{CyBmBrCm@c@[UWQKIg@]OIa@[QSsB_BqC}B[Ww@q@m@e@qCcCsA_ASQs@o@K_@_@_@gA}@a@]WSWWm@i@oAeAK[DKFSBWASESIOMOQIKEMCMAO@MY[_AcA_DgByEaA_Cy@iBkD{GRKUa@q@mAS_@o@uAo@oAISCECEl@PPHd@TNMD?ZBXCp@I`AWEUEQHK|@c@~@g@l@UdCy@j@O|@]r@S`@Qn@Yb@ULG~@m@^n@JN^t@Tl@@J?JSLMHKH?LBRZNPNnAbALFHH" }, { "vehicle": 1, "delivery": 3, "pickup": 3, "duration": 1193, "priority": 23, "distance": 17335, "steps": [ { "type": "start", "location": { "lat": 10.803259272429408, "lng": 106.68314908546016 }, "load": 3, "duration": 0, "distance": 0 }, { "type": "job", "location": { "lat": 10.790317489166636, "lng": 106.69246171497416 }, "id": 2, "job": 2, "load": 3, "duration": 271, "distance": 3666 }, { "type": "job", "location": { "lat": 10.785638075366874, "lng": 106.65915940816625 }, "id": 4, "job": 4, "load": 3, "duration": 601, "distance": 8731 }, { "type": "job", "location": { "lat": 10.798242816645477, "lng": 106.68413613827217 }, "id": 3, "job": 3, "load": 3, "duration": 938, "distance": 13872 }, { "type": "end", "location": { "lat": 10.811985176196991, "lng": 106.68568109074585 }, "load": 3, "duration": 1193, "distance": 17335 } ], "overview_polyline": "q_}`AqpcjSCE]]YWq@o@SUc@d@c@n@e@v@W`@]d@m@t@GLGLMVYl@IJOb@ETK^KZGPIZKn@SRWNc@_@q@k@FGn@u@JQVa@p@u@^q@T[bAyA\\i@f@u@f@m@HKZa@JOJKXSTOPMjBuApApAdAdAVXxBvBFFnArAnArALNbAbAPRPR`@b@FH\\\\HHx@x@^^RVLRN`@VKTInBw@BAt@WB?@AxAg@HC`Bi@dA_@bA_@r@W\\[f@_@FIJMRSLQ`@g@Zg@`AuAf@s@X_@\\g@j@w@Za@\\e@RY@C^e@b@m@t@aA\\g@RWt@eA|AoBb@k@LQhA_Bl@q@^k@d@k@HMt@gALMfA_B\\g@b@i@d@i@DIt@cAPS^k@\\c@^m@X[q@i@e@_@aAw@a@Y{BgBPg@UYGGJ]r@oBDOr@oBfC`Cb@^l@p@bAdA`@\\~@z@tAjA`A`AXVdAfANLXXlBnBnAjA~AxANJLNx@z@TXlBnBRRrAxAJH~BvBd@b@LJ^^z@z@`@d@jBjBjCfCt@n@j@f@\\\\~@~@dChCJHJJbA`AlBxBNXUBKDIFGJCJAJ@L@HDHHJA^ETa@~@Sb@MXWl@Sd@]v@Uf@y@rBi@dAGPMVGP[n@INs@dBITO\\ORGREFINaAbCMZWj@GLQ`@OXQb@O`@KRUh@_@x@]x@CDIRg@fAi@nASd@a@~@GJO\\_@z@e@fAQ`@q@zACD]x@Sd@ABUf@A@EJa@`AEJQ^Sb@ADKTUh@c@~@O^KVa@~@e@fAu@dBOZq@xAM\\Sd@g@dAG@cAzBm@tAaAxBm@nAy@rBCX[r@a@|@MZa@~@a@z@Wf@ITGPBtAAfCCzAAF@LLDPFLFLHLJ\\h@JPFJHNLNZJ~@LVBl@Dz@JN?F?L?B@TBH@NBTAX?V?TCWVVWUBW?Y?U@OCIAUCCAM?G?O?{@Km@EWC_AM[KMOIOGKKQaBhBIB@J@^AH?LsAFO?QGMGgAaAq@e@q@~AMZSd@EHSd@[t@O^GL]t@EL]t@?@Ud@]x@{AtDWn@Yj@GPINaAxBaBrD_@XKHMBK@M?OESEq@o@eAs@CAg@_@a@k@wAmAQQa@e@OOEEg@k@CKCIOSKKmBkBUWwEgFeCmCi@c@wAmAkAqAaAeA[]}@eAKMOOwAuBCMEIKMKEg@y@Qe@JyB@e@Dy@@q@D_A@[GcA\\gIBWPkEBk@?MDq@Do@FkAJ{@?QDkA?MDs@BeABe@FsADqA@GLcDDgABc@Bg@@YBa@DoADy@@[B{@DeAJqCDaA@M@c@DuAHeC?E?KDu@F}ABc@FiBNwC@_@DaAHuCBo@@e@?E?OCa@OYOWwAuAr@u@\\]b@e@n@m@h@k@FE?GCWAOEc@CW?I@IJYH_@D]BM?GBc@@C?a@CUGOESBKLe@h@JLBMCi@KMd@CJDRFNBT?`@ABCb@?FCLE\\I^KXAH?HBVDb@@NBV?FGDi@j@o@l@c@d@]\\s@t@mAkAsByBACwAyAuB{BsAwAUS_AcA}B_Cs@m@MQi@u@O]I]AECYAe@Bs@?KRcCBa@Hg@Bm@@SHwAJmAJuAHgBFi@@k@JaBFcAFkAXsDB[JyAOAoA\\MFuAh@_Br@KFo@T}ApAm@b@OJOLGDiBbB]Vc@b@e@`@[Z_@\\EDoAhAe@`@QP[j@S^o@zASh@Sd@g@lAMXI^YdA?j@@\\Ch@APCNMr@e@tACB]x@O\\O^eAtBCA_@Ii@EGASAe@K_@GWa@KOKKCEQWEGMQW[a@o@Vm@Ci@KUSUUU" } ], "unassigned": [] }