最大走行距離の制約を伴う VRP

一部の特定のタイプの車両、特に電気自動車で VRP を解決する場合、最大走行距離が重要な制約になります。デポで EV を扱う場合、車両タイプに依存する電力蓄積の制限があり、フルバッテリー充電から次の充電ステーションまでの最大走行距離にも制限があると想定する必要があります。 そのため、電気自動車の VRP を解決する際には、車両の最大距離および充電ステーションの場所を考慮する必要があります。

同じデポでシフトを開始および終了し、1 回のフル充電で最大走行距離 200km をドライブできる電気自動車を使用している場合の問題を検討してみましょう。これらの制約を設定するには、上限に maxDistance パラメーターを追加し、最大距離をメートル単位で指定する必要があります。

その後、通常どおり、場所と需要を伴うジョブを追加して問題を設定します。ただし、車両が持つ maxDistance を含む制約を考慮して問題が解決されるので、これらの制限事項によって実行できないジョブは実行されません。最大走行距離が 200 km で、さまざまな場所で配達作業が発生する EV の問題を解決してみましょう。

Problems

{
  "fleet": {
    "types": [
      {
        "id": "Vehicle_1",
        "profile": "car",
        "costs": {
          "fixed": 7.0,
          "distance": 0.003,
          "time": 0.007
        },
        "shifts": [
          {
            "start": {
              "time": "2021-05-10T09:00:00Z",
              "location": {
                "lat": 52.57222054041576,
                "lng": 13.353990529709701
              }
            },
            "end": {
              "time": "2021-05-10T21:01:00Z",
              "location": {
                "lat": 52.57222054041576,
                "lng": 13.353990529709701
              }
            }
          }
        ],
        "capacity": [
          12
        ],
        "limits": {
          "maxDistance": 200000
        },
        "amount": 1
      }
    ],
    "profiles": [
      {
        "type": "car",
        "name": "car"
      }
    ]
  },
  "plan": {
    "jobs": [
      {
        "id": "job_1",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T12:00:00Z",
                      "2021-05-10T12:30:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.471480179496325,
                    "lng": 13.33652317328511
                  },
                  "duration": 180
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "job_2",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T09:30:00Z",
                      "2021-05-10T10:00:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.48262965703328,
                    "lng": 13.306346002296653
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "job_3",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T10:00:00Z",
                      "2021-05-10T10:30:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.48262965703328,
                    "lng": 13.306346002296653
                  },
                  "duration": 60
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "job_4",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T10:30:00Z",
                      "2021-05-10T11:00:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.52013955092772,
                    "lng": 13.332585890518219
                  },
                  "duration": 300
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "job_5",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T11:00:00Z",
                      "2021-05-10T11:30:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.52013955092772,
                    "lng": 13.332585890518219
                  },
                  "duration": 720
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "job_6",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T11:30:00Z",
                      "2021-05-10T12:00:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.471480179496325,
                    "lng": 13.33652317328512
                  },
                  "duration": 720
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "job_7",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "times": [
                    [
                      "2021-05-10T12:00:00Z",
                      "2021-05-10T12:30:00Z"
                    ]
                  ],
                  "location": {
                    "lat": 52.471480179496325,
                    "lng": 13.33652317328511
                  },
                  "duration": 720
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      }
    ]
  }
}

Solution

この問題の解決方法は次のとおりです。

{
    "statistic": {
        "cost": 217.291,
        "distance": 45387,
        "duration": 10590,
        "times": {
            "driving": 4181,
            "serving": 3000,
            "waiting": 3409,
            "break": 0
        }
    },
    "tours": [
        {
            "vehicleId": "Vehicle_1_1",
            "typeId": "Vehicle_1",
            "stops": [
                {
                    "location": {
                        "lat": 52.57222054041576,
                        "lng": 13.3539905297097
                    },
                    "time": {
                        "arrival": "2021-05-10T09:00:00Z",
                        "departure": "2021-05-10T09:42:00Z"
                    },
                    "load": [
                        7
                    ],
                    "activities": [
                        {
                            "jobId": "departure",
                            "type": "departure"
                        }
                    ]
                },
                {
                    "location": {
                        "lat": 52.48262965703328,
                        "lng": 13.306346002296651
                    },
                    "time": {
                        "arrival": "2021-05-10T10:00:00Z",
                        "departure": "2021-05-10T10:06:00Z"
                    },
                    "load": [
                        5
                    ],
                    "activities": [
                        {
                            "jobId": "job_2",
                            "type": "delivery",
                            "location": {
                                "lat": 52.48262965703328,
                                "lng": 13.306346002296651
                            },
                            "time": {
                                "start": "2021-05-10T10:00:00Z",
                                "end": "2021-05-10T10:05:00Z"
                            }
                        },
                        {
                            "jobId": "job_3",
                            "type": "delivery",
                            "location": {
                                "lat": 52.48262965703328,
                                "lng": 13.306346002296651
                            },
                            "time": {
                                "start": "2021-05-10T10:05:00Z",
                                "end": "2021-05-10T10:06:00Z"
                            }
                        }
                    ]
                },
                {
                    "location": {
                        "lat": 52.52013955092772,
                        "lng": 13.33258589051822
                    },
                    "time": {
                        "arrival": "2021-05-10T10:20:57Z",
                        "departure": "2021-05-10T11:12:00Z"
                    },
                    "load": [
                        3
                    ],
                    "activities": [
                        {
                            "jobId": "job_4",
                            "type": "delivery",
                            "location": {
                                "lat": 52.52013955092772,
                                "lng": 13.33258589051822
                            },
                            "time": {
                                "start": "2021-05-10T10:20:57Z",
                                "end": "2021-05-10T10:35:00Z"
                            }
                        },
                        {
                            "jobId": "job_5",
                            "type": "delivery",
                            "location": {
                                "lat": 52.52013955092772,
                                "lng": 13.33258589051822
                            },
                            "time": {
                                "start": "2021-05-10T10:35:00Z",
                                "end": "2021-05-10T11:12:00Z"
                            }
                        }
                    ]
                },
                {
                    "location": {
                        "lat": 52.471480179496325,
                        "lng": 13.33652317328512
                    },
                    "time": {
                        "arrival": "2021-05-10T11:25:14Z",
                        "departure": "2021-05-10T11:42:00Z"
                    },
                    "load": [
                        2
                    ],
                    "activities": [
                        {
                            "jobId": "job_6",
                            "type": "delivery"
                        }
                    ]
                },
                {
                    "location": {
                        "lat": 52.471480179496325,
                        "lng": 13.33652317328511
                    },
                    "time": {
                        "arrival": "2021-05-10T11:42:00Z",
                        "departure": "2021-05-10T12:15:00Z"
                    },
                    "load": [
                        0
                    ],
                    "activities": [
                        {
                            "jobId": "job_1",
                            "type": "delivery",
                            "location": {
                                "lat": 52.471480179496325,
                                "lng": 13.33652317328511
                            },
                            "time": {
                                "start": "2021-05-10T11:42:00Z",
                                "end": "2021-05-10T12:03:00Z"
                            }
                        },
                        {
                            "jobId": "job_7",
                            "type": "delivery",
                            "location": {
                                "lat": 52.471480179496325,
                                "lng": 13.33652317328511
                            },
                            "time": {
                                "start": "2021-05-10T12:03:00Z",
                                "end": "2021-05-10T12:15:00Z"
                            }
                        }
                    ]
                },
                {
                    "location": {
                        "lat": 52.57222054041576,
                        "lng": 13.3539905297097
                    },
                    "time": {
                        "arrival": "2021-05-10T12:38:30Z",
                        "departure": "2021-05-10T12:38:30Z"
                    },
                    "load": [
                        0
                    ],
                    "activities": [
                        {
                            "jobId": "arrival",
                            "type": "arrival"
                        }
                    ]
                }
            ],
            "statistic": {
                "cost": 217.291,
                "distance": 45387,
                "duration": 10590,
                "times": {
                    "driving": 4181,
                    "serving": 3000,
                    "waiting": 3409,
                    "break": 0
                }
            }
        }
    ]
}

このソリューションの統計情報から、指定された制約について、配達、配達、待機の車両総コスト、距離、所要時間、時間を確認できます。

」に一致する結果は 件です

    」に一致する結果はありません