Vehicle Routing Problem
API tối ưu hóa Optimization engine
nhằm mục đích cung cấp các giải pháp tốt cho các vehicle routing problem thực tế, khác nhau trong một thời gian.
URL
Phương thức:
POST
Cấu hình tham số đầu vào - dạng Json
Key | Kiểu | Bắt buộc | Mặc định | Ví dụ | Mô tả |
---|---|---|---|---|---|
jobs | array job | Có | none | mảng của các job Objects - là những nơi sẽ ghé qua trong lộ trình đi | |
vehicles | array vehicle | Có | none | mảng chứa các loại phương tiện tham gia trong lộ trình | |
vehicle_type | string | Có | none | Enum: car ,motorcycle , truck_2500 ,truck_5000 . Cấu hình vehicle profile qui định những loại phương tiện nào tham gia vào lộ trình đang được tính toán. |
Job Object
)
Cấu hình điểm đến / điểm trung gian (Key | Kiểu | Bắt buộc | Mặc định | Ví dụ | Mô tả |
---|---|---|---|---|---|
id | integer | Có | none | 1 | Một số nguyên dùng làm định danh duy nhất. |
location | array double | Có | none | [106.112456,10.684922] | Mảng tọa độ |
service | integer | Không | none | 1 | Thời gian phục vụ cho một job service trong bao lâu. (Mặc định là 0). |
delivery | array | Không | none | [1,2] | Một mảng số nguyên mô tả số lượng job giao đi |
pickup | array | Không | none | [1,2] | Mảng số nguyên mô tả số tượng job nhận về |
skills | array | Không | none | [1] | Một mảng số nguyên xác định các skills bắt buộc liên quan giữa xe và dịch vụ giao hàng - job . Ví dụ: loại xe vehicle và loại hàng hóa giao đi phải tương thích với nhau. Lúc đó j.skill tương ứng với v.skill . |
priority | integer | Không | none | 1 | Giá trị: [0,10]. Phạm vi mô tả mức độ quan trọng của lộ trình |
time_windows | array | Không | none | [0,14400] | Mảng time_window objects mô tả những thông tin qui định thời gian của hành trình liên quan đến skill , capacity ... |
Vehicle Object
Cấu hình phương tiện giao thông Key | Kiểu | Bắt buộc | Mặc định | Ví dụ | Mô tả |
---|---|---|---|---|---|
id | integer | Có | none | 1 | Số nguyên dùng làm định danh |
start | array double | Có | none | [106.112456,10.684922] | mảng các cặp tọa độ |
end | array | Có | none | [106.112456,10.684922] | Mảng các cặp tọa độ |
capacity | array | Không | none | [0,3] | Mảng số nguyên mô tả sức chứa liên quan đến chuyến đi và phương tiện đi |
skills | array | Không | none | [1] | mảng số nguyên mô tả các skill |
time_windows | array | Không | none | [0,14400] | Mảng time_window objects mô tả những thông tin qui định thời gian của hành trình liên quan đến skill , capacity ,... |
Note
Vehicle locations
- Key
start
vàend
được sử dụng tùy chọn chovehicle
, miễn sao có ít nhất một trong số chúng có mặt.- Nếu
end
bị bỏ qua, chuyến đi (chuyến giao hàng, lộ trình) sẽ dừng lại ở điểm (job
) cuối cùng, điểm cuối cùngjob
đó sẽ được chọn trong quá trình tính toán tối ưu lộ trình.- Nếu
start
bị bỏ qua, chuyến đi sẽ bắt đầu tạijob
đầu tiên,job
đầu tiên cũng được tự tính toán trong quá trình tối ưu lộ trình.- Để thiết lập lộ trình đi và về lại cùng 1 nơi, định nghĩa các keys
start
vàend
giống nhau - cùng cặp tọa độ[lng,lat]
.
Capacity restrictions
- Những tham số: capacity, pickup, delivery là những tham số định lượng cho lộ trình (
capacity
dùng cho loại phương tiệnvehicles
,delivery
vàpickup
dùng chojobs
) để qui định những giới hạn chung cho cả lộ trình. Đó là những mảng qui định phạm vi giới hạn cho nhiềumetrics
cùng lúc, ví dụ số hàng hóaitems
, trọng tảiweight
, và cả dung tích. Ví dụ: Một xe chỉ ghé qua những điểm đến nào và thực hiện chức năng nào (giao, nhận) nếu thông số cài đặt cho các parameters phù hợp giữacapacity
-metrics
tại mỗijobs
- mỗi bước của lộ trình.- Giả sử như khi một ai muốn bắt đầu lộ trình, tất cả khả năng: khối lượng hàng, loại xe phù hợp, thời gian giao đến mỗi nơi, thời gian cả lộ trình, điểm đến cuối cùng,.. Tất cả sẽ được tính toán từ trước (
loaded
). Và ở cuối lộ trình, hàng hóa còn lại bao nhiêu hoặc giao đi hết tất cả.
Skills
skill
được dùng để giới hạn loại xe nào sẽ đến nhữngjobs
- điểm đến nào. Dùng để chắc rằng nơi nào giao loại hàng nào và dùng loại xe nàoTrường hợp không cần dùng đến
capacity restrictions
, có thể xem như không có ràng buộc nào giữavehicles
-job
thông qua các metrics đã nêu.Job priorities
Thiết lập mức độ ưu tiên cho những đối tượng
jobs
nào. Đối tượng nào có ưu tiên thấp hơn sẽ đến sau hoặc không ưu tiên thì xe không đến (không đi qua)
Time windows
Tham số thời gian được dùng để ước lượng khung thời gian trên lộ trình đi:
- giá trị tương đối, ví dụ [0, 14400] tương đương với thời gian 4 tiếng từ lúc bắt đầu kế hoạch. và ở đầu output, tất cả các thời gian được ghi lại trong key
arrival
đều có quan hệ với thời gian bắt đầu (khoảng thời gian)- Giá trị tuyệt đối, "real" timestamps - dấu thời gian (điểm thời gian)
Trường hợp không có
time_window
, có nghĩa là không có ràng buộc thời gian.
Dữ liệu đầu ra Json
Ví dụ
Input
{"vehicle_type": "motorcycle","jobs": [{"id": 1,"description": "3/606/92 Tháng 2, Phường 14,Quận 10, Thành phố Hồ Chí Minh","location": [106.66175365448,10.766995898405598],"amount": [1]},{"id": 2,"description": "294 Trần Phú, Phường 8,Quận 5, Thành phố Hồ Chí Minh","location": [106.67282581329347,10.756413597641956],"amount": [1]},{"id": 3,"description": "Ký Túc Xá Sinh Viên Đại Học Sư Phạm ThànhPhố Hồ Chí Minh, Phường 5, Quận 11, Thành phố Hồ Chí Minh","location": [106.64450168609619,10.771211850973202],"amount": [1]},{"id": 4,"description": "HẺM 2/90 Thiên Phước, Phường 9,Quận Tân Bình, Thành phố Hồ Chí Minh","location": [106.653470993042,10.778041568881141],"amount": [1]},{"id": 5,"description": "Cửa Hàng Dụng Cụ Y Khoa Thanh Phong, Phường 15,Quận 11, Thành phố Hồ Chí Minh","location": [106.65849208831787,10.764381978185941],"amount": [1]},{"id": 6,"description": "541 Sư Vạn Hạnh, Phường 13,Quận 10, Thành phố Hồ Chí Minh","location": [106.6672468185425,10.775680696261645],"amount": [1]},{"id": 7,"description": "Giữ Xe Ô Tô Các Loại 24 24, Phường 14,Quận 10, Thành phố Hồ Chí Minh","location": [106.65668964385988,10.779179840134844],"amount": [1]},{"id": 8,"description": "Cửa Hàng Vật Tư Đường Ống Và Thiết Bị Phòng Cháy Chữa Cháy Tân Phi Mã,Phường 14, Quận 10, Thành phố Hồ Chí Minh","location": [106.65759086608888,10.774837522981846],"amount": [1]},{"id": 9,"description": "Trường Tiểu Học Võ Trường Toản, Phường 14,Quận 10, Thành phố Hồ Chí Minh","location": [106.66003704071046,10.77530126857797],"amount": [1]},{"id": 10,"description": "Công Ty Protech Focus Technology, Phường 8,Quận 10, Thành phố Hồ Chí Minh","location": [106.6670322418213,10.765562461092875],"amount": [1]},{"id": 11,"description": "249 Trần Nhân Tôn, Phường 2,Quận 10, Thành phố Hồ Chí Minh","location": [106.67402744293214,10.76446629854693],"amount": [1]}],"vehicles": [{"id": 1,"start": [106.68119430541994,10.768893084362741],"startDescription": "497 Nguyễn Đình Chiểu, Phường 2,Quận 3, Thành phố Hồ Chí Minh","end": [106.68119430541994,10.768893084362741],"endDescription": "497 Nguyễn Đình Chiểu, Phường 2,Quận 3, Thành phố Hồ Chí Minh","capacity": [7]},{"id": 2,"start": [106.68119430541994,10.768893084362741],"startDescription": "497 Nguyễn Đình Chiểu, Phường 2,Quận 3, Thành phố Hồ Chí Minh","end": [106.68119430541994,10.768893084362741],"endDescription": "497 Nguyễn Đình Chiểu, Phường 2,Quận 3, Thành phố Hồ Chí Minh","capacity": [7]}],"options": {"g": true}}
Output
{"code": 0.0,"messages": null,"summary": {"cost": 2573,"unassigned": 0,"delivery": null,"pickup": null,"service": 0,"duration": 2573,"waiting_time": 0,"distance": 20090},"unassigned": [],"routes": [{"vehicle": 1,"cost": 1584,"delivery": null,"pickup": null,"service": 0,"duration": 1584,"waiting_time": 0,"distance": 12169,"steps": [{"type": "start","location": [106.68119430541994,10.768893084362739],"load": null,"arrival": 0,"duration": 0,"distance": 0,"job": null,"service": null,"waiting_time": null},{"type": "job","location": [106.65849208831789,10.76438197818594],"load": null,"arrival": 332,"duration": 332,"distance": 2741,"job": 5,"service": 0,"waiting_time": 0},{"type": "job","location": [106.64450168609621,10.771211850973202],"load": null,"arrival": 634,"duration": 634,"distance": 4919,"job": 3,"service": 0,"waiting_time": 0},{"type": "job","location": [106.653470993042,10.77804156888114],"load": null,"arrival": 843,"duration": 843,"distance": 6512,"job": 4,"service": 0,"waiting_time": 0},{"type": "job","location": [106.65668964385988,10.779179840134844],"load": null,"arrival": 945,"duration": 945,"distance": 7230,"job": 7,"service": 0,"waiting_time": 0},{"type": "job","location": [106.65759086608888,10.774837522981846],"load": null,"arrival": 1084,"duration": 1084,"distance": 8259,"job": 8,"service": 0,"waiting_time": 0},{"type": "job","location": [106.66003704071046,10.775301268577969],"load": null,"arrival": 1142,"duration": 1142,"distance": 8712,"job": 9,"service": 0,"waiting_time": 0},{"type": "job","location": [106.66724681854249,10.775680696261643],"load": null,"arrival": 1297,"duration": 1297,"distance": 9936,"job": 6,"service": 0,"waiting_time": 0},{"type": "end","location": [106.68119430541994,10.768893084362739],"load": null,"arrival": 1584,"duration": 1584,"distance": 12169,"job": null,"service": null,"waiting_time": null}],"geometry": ""},{"vehicle": 2,"cost": 989,"delivery": null,"pickup": null,"service": 0,"duration": 989,"waiting_time": 0,"distance": 7921,"steps": [{"type": "start","location": [106.68119430541994,10.768893084362739],"load": null,"arrival": 0,"duration": 0,"distance": 0,"job": null,"service": null,"waiting_time": null},{"type": "job","location": [106.67402744293214,10.76446629854693],"load": null,"arrival": 170,"duration": 170,"distance": 1374,"job": 11,"service": 0,"waiting_time": 0},{"type": "job","location": [106.67282581329349,10.756413597641956],"load": null,"arrival": 309,"duration": 309,"distance": 2476,"job": 2,"service": 0,"waiting_time": 0},{"type": "job","location": [106.6670322418213,10.765562461092877],"load": null,"arrival": 531,"duration": 531,"distance": 4231,"job": 10,"service": 0,"waiting_time": 0},{"type": "job","location": [106.66175365448,10.766995898405598],"load": null,"arrival": 651,"duration": 651,"distance": 5209,"job": 1,"service": 0,"waiting_time": 0},{"type": "end","location": [106.68119430541994,10.768893084362739],"load": null,"arrival": 989,"duration": 989,"distance": 7921,"job": null,"service": null,"waiting_time": null}],"geometry": ""}]}