Version: vi-1.1

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

/api/vrp?api-version=1.1&apikey=??

Phương thức:

POST

Cấu hình tham số đầu vào - dạng Json

KeyKiểuBắt buộcMặc địnhVí dụMô tả
jobsarray jobnonemảng của các job Objects - là những nơi sẽ ghé qua trong lộ trình đi
vehiclesarray vehiclenonemảng chứa các loại phương tiện tham gia trong lộ trình
vehicle_typestringnoneEnum: 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.

Cấu hình điểm đến / điểm trung gian (Job Object)

KeyKiểuBắt buộcMặc địnhVí dụMô tả
idintegernone1Một số nguyên dùng làm định danh duy nhất.
locationarray doublenone[106.112456,10.684922]Mảng tọa độ
serviceintegerKhôngnone1Thời gian phục vụ cho một job service trong bao lâu. (Mặc định là 0).
deliveryarrayKhôngnone[1,2]Một mảng số nguyên mô tả số lượng job giao đi
pickuparrayKhôngnone[1,2]Mảng số nguyên mô tả số tượng job nhận về
skillsarrayKhôngnone[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.
priorityintegerKhôngnone1Giá trị: [0,10]. Phạm vi mô tả mức độ quan trọng của lộ trình
time_windowsarrayKhôngnone[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 ...

Cấu hình phương tiện giao thông Vehicle Object

KeyKiểuBắt buộcMặc địnhVí dụMô tả
idintegernone1Số nguyên dùng làm định danh
startarray doublenone[106.112456,10.684922]mảng các cặp tọa độ
endarraynone[106.112456,10.684922]Mảng các cặp tọa độ
capacityarrayKhôngnone[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
skillsarrayKhôngnone[1]mảng số nguyên mô tả các skill
time_windowsarrayKhôngnone[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 startend được sử dụng tùy chọn cho vehicle, 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ùng job đó 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ại job đầ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 startend 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ện vehicles, deliverypickup dùng cho jobs) để 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ều metrics cùng lúc, ví dụ số hàng hóa items, trọng tải weight, 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ữa capacity - metrics tại mỗi jobs - 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ững jobs - đ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ào

  • Trườ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ữa vehicles-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ố HChí Minh",
"location": [
106.66175365448,
10.766995898405598
],
"amount": [
1
]
},
{
"id": 2,
"description": "294 Trần Phú, Phường 8,
Quận 5, Thành phố HChí 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ành
Phố HChí Minh, Phường 5, Quận 11, Thành phố HChí Minh",
"location": [
106.64450168609619,
10.771211850973202
],
"amount": [
1
]
},
{
"id": 4,
"description": "HM 2/90 Thiên Phước, Phường 9,
Quận Tân Bình, Thành phố HChí Minh",
"location": [
106.653470993042,
10.778041568881141
],
"amount": [
1
]
},
{
"id": 5,
"description": "Cửa Hàng Dụng CY Khoa Thanh Phong, Phường 15,
Quận 11, Thành phố HChí 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ố HChí 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ố HChí Minh",
"location": [
106.65668964385988,
10.779179840134844
],
"amount": [
1
]
},
{
"id": 8,
"description": "Cửa Hàng Vật Tư Đường Ống Và Thiết BPhòng Cháy Chữa Cháy Tân Phi Mã,
Phường 14, Quận 10, Thành phố HChí 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ố HChí 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ố HChí 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ố HChí 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ố HChí Minh",
"end": [
106.68119430541994,
10.768893084362741
],
"endDescription": "497 Nguyễn Đình Chiểu, Phường 2,
Quận 3, Thành phố HChí 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ố HChí Minh",
"end": [
106.68119430541994,
10.768893084362741
],
"endDescription": "497 Nguyễn Đình Chiểu, Phường 2,
Quận 3, Thành phố HChí 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": ""
}
]
}