よくある質問 (FAQ)
このドキュメントには、SWAT API に関するよくある質問のリストが含まれています。
最適化および Integration API (Optimization and Integration API)
このセクションには、Optimization API api および Integration API api に関連する質問と回答が含まれています。
GET /api/v1/node_scheduler/{job_id}/status に対するさまざまな応答は何ですか? 計算がまだ実行中の場合、およびエラーが発生した場合の応答は何ですか?
回答
ソルバーパラメータ time_limit_ms の計算時間には何を設定する必要がありますか? このパラメータの単位は何ですか?
回答
単位はミリ秒です。推奨される計算時間は、車両と注文の数、およびそれらの複 雑さによって異なります。通常、計算時間は、問題の規模と必要なソリューションの品質に応じて、2分から60分の範囲にする必要があります(計算時間が長いほど、通常はより良い結果が得られます)。api
ピックアップまたはドロップオフされた注文の数に関係なく、サービス時間が同じままであるサービス時間を設定するにはどうすればよいですか?
回答
ノードのグループに固定サービス時間を指定するには、モデルパラメータ api オブジェクトの compound_zones を使用できます。Compound zones (複合ゾーン)
enter_time と exit_time を秒単位で指定したゾーンのリストです。積み込み港で同じ固定稼働時間を設定するには、uid が loading port 1 または loading port 2 に設定されているリクエスト本文の node オブジェクトに対して次の設定を使用します。
{
"compound_zones": [
{
"node_uids": ["loading port 1", "loading port 2"],
"exit_time": 300
}
]
}
次の図は、ノード
に適用される時間パラメータを表しています。compound zone 時間は、ゾーンへの進入/退出に必要な最小時間に基づいてルートの最適化を確実にするために移動時間に追加されるため、車両ノードの割り当て(slack と比較して)に直接反映されません(ノードの固定時間制約である service time と比較してください)。ノードと車両間の需要と容量のモデルは何ですか? 複数の次元がある場合、どのように設定すればよいですか?
回答
需要とは、特定の顧客または場所に配達する必要がある商品またはサービスの量を指します。容量とは、車両が運ぶことができる商品、サービス、または人々の最大量を指します。 車両容量 は、1台の車両で満たすことができる需要の量の制限として機能します。車両はその容量を超える量を運ぶことはできないため、ルートに割り当てられた総需要は常に車両の容量以下でなければなりません。 需要は車両とルートの必要性を促進します。すべての顧客にわたる総需要によって、必要な車両の数と、需要を効率的に満たすためにそれらの車両をルーティングする方法が決まります。
VRP アルゴリズムは、実行可能で効率的なソリューションを作成するために、容量と需要のバランスを慎重にとる必要があります。目標は、容量の制約を尊重しながら、移動距離、時間、コストを最小限に抑える方法で、顧客を車両とルートに割り当てることです。
予約を作成するとき、ノードタイプ pickup は正の需要を持ち、dropoff は負の需要を持ちます。需要タイプは任意の文字列ですが、少なくとも1台の車両の需要タイプは、少なくとも1つのノードの容量タイプと一致する必要があります。そうしないと、この需要タイプが車両に割り当てられることはありません。
ノードと車両の次元の一貫性を維持することをお勧めします。ノードに車両に存在しない追加の次元がある場合、予約はその車両に割り当てることができません。
"node":
{
"demand": {
"goods": 1, // Node expects 1 piece of goods delivered
"human": -1 // Node expects 1 human picked up
}
}
"vehicle":
{
"capacity":{
"goods":10, // Vehicle can carry 10 pieces of good
"human":20, // Vehicle can carry 20 human beings
"rat":30 // Vehicle can carry 30 rats
}
}
可能な限り午後3時までに配達を優先するにはどうすればよいですか?
回答
同じ場所にある複数の注文に対して、ドロップオフポイントでの荷降ろし時間が尊重されるようにするにはどうすればよいですか(予定出発前に荷降ろし)?
回答
回答は、例としていくつかの任意のタイムスタンプを想定しています。
問題ステートメントは次のように定式化できます。
- すべての注文は午後12時までに荷降ろしする必要があります
- すべての注文は同じ場所で荷降ろしする必要があります
- 各注文にはある程度の荷降 ろし時間が必要です(たとえば、注文1、2、3の場合は5分、10分、15分)
- 場所は午前11時から午後12時の間に注文を受け入れることができます
注文を集約できない場合は、node.close_time_ts api を 午後12時 - 注文3のサービス時間(この例では具体的には午前11時45分)に調整して、最後の注文に十分な荷降ろし時間を確保できます。注文3はサービス時間が最も長いため、調整用に選択されます。これにより、注文3を荷降ろしするのに十分な時間が提供され、ノードは午後12時に閉じるため、それ以降は他の注文は受け入れられません。その結果、注文1と注文2の荷降ろしは、注文3の前にスケジュールされます。正確な順序は時間枠の特定の長さによって異なることに注意してください。ただし、同じ場所であるため、ルート最適化の観点から運用上の目的にとって重要である可能性は低いです。