Objectives
最適化問題のObjectives関数 ( または単にObjectives ) は、問題の制約を満たすすべての実行可能な解のセットで値を最小化または最大化する関数です。 車両のルーティング課題( VRP )ドメインの従来のObjectives関数は、合計距離の最小化です。 ただし、実際のシナリオでは、異なる、または複数のObectives関数を同時に考慮する必要があります。 さまざまなObjectivesの良い例としては、公正な作業の配分、特定の作業の優先順位付け、総コストを超える配達の量の削減などがあります
ツアー計画では、Problemのオプションのプロパティを使用してObjectivesを指定できます objectives
サポートされているObjectives
サポートされているObjectiveのリストは次のとおりです。
-
minimizeUnassigned
: 割り当てられていないジョブの数を最小化します -
minimizeCost
: Solutionの総コストを最小限に抑えます ( 暗黙的な距離、所要時間、固定コストを最小限に抑えることができます ) -
minimizeDistance
総走行距離を最小化します -
minimizeDuration
: すべてのツアー所要時間の合計として計算された合計所要時間を最小化します -
optimizeTourCount
Solution内のツアー数を最適化します。 Objectiveには追加のパラメータがあります。 -
action
: minimize
に設定すると、Solution内のツアー数が最小化されます。 maximize
に設定されている場合、 Solution内のツアー数が最大化されます
-
optimizeTaskOrder
: ツアーのジョブタスクアクティビティの順序を制御します。 指定すると、タスクの順序がソフト拘束と見なされ、ソルバはその違反の数を最小化しようとします。 プロパティが order
ジョブのレベルで定義されているにもかかわらず、指定されていない場合は、ハード制約と見なされ、違反することはありません。
Objectiveは、次 のプロパティobjectives
を使用して階層で指定します。
"objectives": [
{
"type": "minimizeUnassigned"
},
{
"type": "minimizeCost"
}
]
この例では、Objective minimizeUnassigned
が階層の最上位になります。つまり、他のObjectiveよりも強力な最適化が管理されます。 その結果、最適化アルゴリズムでは、低コストのSolutionよりも割り当てられていないジョブが少ないSolutionが優先されます。 階層の下位レベルに minimizeUnassigned
があることに注意してください。上記の例minimizeCost
では、すべてのジョブの割り当てが解除されるなど、予期しない結果が生じる可能性があります。
既定のObjectives
objectives
を指定しなかった場合、デフォルトでは、ソルバは、重要度が最も高い未割り当てのジョブの量、重要度が中のツアーの数、および総コストを最小化します。 これは、次の定義と同じです。
"objectives": [
{
"type": "minimizeUnassigned"
},
{
"type": "optimizeTourCount",
"action": "minimize"
},
{
"type": "minimizeCost"
}
]
既定のObjectivesに依存する場合は、最適化の目的であることを確認してください。 たとえば、運行管理 の使用コストを重視してい て、大型の車両を含む小型および大型の車両のハイブリッド運行管理 の方が高価な場合、おそらくObjectives階層minimizeCost
のoptimizeTourCount
上に置く必要があります。 そうしないと、デフォルトのObjectivesでは大型車両を使用する傾向がありますが、その方が高価になります。そのため、中古車の合計数が少なくなります。
次のセクションでは、Objectivesを定義する際に注目すべき暗黙的な規則について説明します。
定義ルール
- Objectiveはアレイとして指定されます
- アレイ内のObjectiveの順序によって、より重要度の高いものからより重要度の低いものまでのObjectiveの重要度が定義されます
-
minimizeCost
Objectiveが存在する必要があります -
minimizeUnassigned
Objectiveが存在する必要があります - 各特定のObjectiveは 1 回のみ定義できます
- 空 の
objectives
定義は許可されていません ( 既定のObjectiveを参照 )
テリトリー、優先度、およびジョブタスクの順序付けフィーチャーと組み合わせたObjectives
問題にテリトリ、優先度、またはジョブタスクの順序付けのフィーチャーがあり、 objectives
プロパティが設定されているかどうかにかかわらず、次の内容が適用されます。
- Problemに領域の特徴がある場合、問題を解決することが最も重要になります。
- Problemにジョブの優先度の特徴がある場合、それを解決することが、最も重要度が高くなります。領域の特徴がない場合は、、これは 2 番目に重要になります。
- Problemにジョブタスクの順序のプロパティがある場合、このフィーチャーはハード制約と見なされます。