集荷と配達を旅程計画に組み合わせる
場合によっては、配送会社がルート上で特定の商品を集荷/配送したり、人を送迎したりする必要がある場合があります。言い換えれば、いくつかの商品を特定の集荷場所から他の配達場所に移動する必要があります。そのような場合には集荷と配達を伴うVRPを使用できます。このようなVRPの目的は、車両が集荷場所と配達場所を訪れるための最適なルートを見つけることです。このようなVRPの各ジョブは、特定の集荷地点、対応する配達地点、およびそれらの場所間で輸送される需要によって定義されます。このタイプのVRPの概念は、集荷需要が常に配達需要と等しいことを意味します。そうでなければ問題は正しく解決されません。
この種のVRPを現実に実装する一例がDial-A-Rideサービスです。Dial-A-Rideは、高齢者および障害のある方を対象に、出発地から目的地までを送迎する事前予約制輸送サービスです。Dial-A-Ride車両は、現地の固定ルート上の特定のエリア内を移動します。ツアーはこのサービスエリア内で開始および終了する必要があります。このようなサービスの構想は、顧客を地点Aから地点Bまで送迎することです。
1台の車両で1つの商品を集配する必要がある単純なケースを考えてみましょう。このような場合の問題は次のようになります。
問題
{
"fleet": {
"types": [
{
"id": "b0130d2f754d",
"profile": "car_1",
"costs": {
"fixed": 5.0,
"distance": 0.007,
"time": 0.02
},
"shifts": [
{
"start": {
"time": "2021-08-27T08:03:00Z",
"location": {
"lat": 52.530971,
"lng": 13.384915
}
},
"end": {
"time": "2021-08-27T16:03:00Z",
"location": {
"lat": 52.530971,
"lng": 13.384915
}
}
}
],
"capacity": [
30
],
"amount": 1
}
],
"profiles": [
{
"type": "car",
"name": "car_1"
}
]
},
"plan": {
"jobs": [
{
"id": "job_1",
"tasks": {
"pickups": [
{
"places": [
{
"location": {
"lat": 52.53090538774364,
"lng": 13.384692097156309
},
"duration": 840
}
],
"demand": [
1
]
}
],
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.58919138279804,
"lng": 13.462161100698735
},
"duration": 1020
}
],
"demand": [
1
]
}
]
}
}
]
}
}ソリューション
この問題のソリューションは次のようになります。
{
"statistic": {
"cost": 249.22400000000002,
"distance": 21832,
"duration": 4570,
"times": {
"driving": 2710,
"serving": 1860,
"waiting": 0,
"break": 0
}
},
"tours": [
{
"vehicleId": "b0130d2f754d_1",
"typeId": "b0130d2f754d",
"stops": [
{
"location": {
"lat": 52.530971,
"lng": 13.384915
},
"time": {
"arrival": "2021-08-27T08:03:00Z",
"departure": "2021-08-27T08:03:00Z"
},
"load": [
0
],
"activities": [
{
"jobId": "departure",
"type": "departure"
}
],
"distance": 0
},
{
"location": {
"lat": 52.53090538774364,
"lng": 13.384692097156307
},
"time": {
"arrival": "2021-08-27T08:03:02Z",
"departure": "2021-08-27T08:17:02Z"
},
"load": [
1
],
"activities": [
{
"jobId": "job_1",
"type": "pickup"
}
],
"distance": 17
},
{
"location": {
"lat": 52.58919138279804,
"lng": 13.462161100698737
},
"time": {
"arrival": "2021-08-27T08:39:07Z",
"departure": "2021-08-27T08:56:07Z"
},
"load": [
0
],
"activities": [
{
"jobId": "job_1",
"type": "delivery"
}
],
"distance": 10933
},
{
"location": {
"lat": 52.530971,
"lng": 13.384915
},
"time": {
"arrival": "2021-08-27T09:19:10Z",
"departure": "2021-08-27T09:19:10Z"
},
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival"
}
],
"distance": 21831
}
],
"statistic": {
"cost": 249.22400000000002,
"distance": 21832,
"duration": 4570,
"times": {
"driving": 2710,
"serving": 1860,
"waiting": 0,
"break": 0
}
}
}
]
}このソリューションから、集配センター、集荷場所、配達場所を考慮した商品の集荷と配達の計算されたルートを使用して、総コスト、距離、所要時間などを含む問題を解決するための日常的な統計を確認できます。
次のステップ
詳細については、以下を参照してください。
- Submit a Vehicle Routing Problem to solve it synchronously (車両ルート検索問題を送信して同期的に解決する)
- Submit a Vehicle Routing Problem to solve it asynchronously (車両ルート検索問題を送信して非同期的に解決する)
26 日前の更新