Network Analyst のライセンスで利用可能。
さまざまな組織が保有車両を使用して訪問先にサービスを提供しています。たとえば、大型の家具店では何台かのトラックを利用して顧客の自宅まで家具を配達しています。油を再利用する専門の会社では、レストランから使用済みの油を引き取るために、施設からトラックを一定の経路で走らせています。保健所では、各健康診査官の毎日の検査訪問をスケジュールしています。
このような例に共通する問題として配車ルート (VRP) があります。各組織は、どの訪問先 (住宅、レストラン、または検査現場) に各ルート (トラックまたは検査官) でサービスを提供するのか、訪問先をどのような順序で訪れるのかを決定する必要があります。この主な目的は、訪問先に最善のサービスを提供し、保有車両の全体の運用コストを最小にすることにあります。このため、ArcGIS Network Analyst エクステンションのルート解析では多くのストップを訪問する単一車両にとっての最適ルートを検索し、VRP 解析ではさまざまな訪問先にサービスを提供する車両にとっての最適ルートを検索します。さらに、VRP 解析の場合は、多数のオプション (車両の積載制限と注文数量の一致を図る、運転手に休憩をとらせる、複数の訪問先を同じルートに関係付けるなど) を利用できるため、より具体的な問題を解決することができます。
配車ルート解析は、他のネットワーク解析と同じワークフローに従います。
配車ルート解析レイヤー
配車ルート解析レイヤーには、特定の配車ルートに対する入力、パラメーター、および結果が格納されます。
配車ルート解析レイヤーの作成
配車ルート解析レイヤーを作成するには、[Network Analyst] ツールバーで [Network Analyst] > [新規配車ルート (VRP)] の順にクリックします。
配車ルート解析レイヤーを作成すると、次の 13 のネットワーク解析クラスとともに [Network Analyst] ウィンドウに表示されます。訪問先、拠点、ルート、拠点立ち寄り状況、休憩、ルート ゾーン、ルート シード ポイント、ルート リニューアル、特別指定、訪問先ペア、ポイント バリア、ライン バリア、およびポリゴン バリアです。
配車ルート解析レイヤーは、コンテンツ ウィンドウにもコンポジット レイヤーとして表示されます。これには [配車ルート (VRP)] という名前が付けられます (マップ ドキュメントに同じ名前の配車ルートがすでに存在する場合は [配車ルート (VRP) 1]、それがすでに存在する場合は [配車ルート (VRP) 2] などのように連番で名前が付けられます)。次の 9 種類のフィーチャ レイヤーがあります。訪問先、拠点立ち寄り状況、拠点、ルート シード ポイント、ルート、ルート ゾーン、ポイント バリア、ライン バリア、およびポリゴン バリアです。この 9 種類のフィーチャ レイヤーは、それぞれがデフォルトのシンボルを持ちます。このシンボルは、[レイヤー プロパティ] ダイアログ ボックスで変更できます。
配車ルート解析クラス
配車ルート解析レイヤーは、13 のネットワーク解析クラスから構成されています。この 13 のネットワーク解析クラスはフィーチャ レイヤーまたはテーブルとして解析レイヤー内に格納されています。ネットワーク解析クラスは、配車ルート解析の実行時に使用されるネットワーク解析オブジェクトを含んでいます。各種ネットワーク解析クラス間の関係については、次のドキュメントをご参照ください。
配車ルート解析におけるネットワーク解析クラス間のリレーションシップここでは、各クラスの概要とそのプロパティについて説明します。
訪問先フィーチャ レイヤー
このフィーチャ レイヤーには、特定の配車ルート解析レイヤーの一部である訪問先が格納されます。「訪問先」というオブジェクトによって想定される現実の業務として、顧客への配達、顧客からの集荷、その他があります。たとえば、家具の配達、レストランからの油の引き取り、訪問販売などがあります。
訪問先から引き取るアイテムまたは訪問先に配達するアイテムがある場合は、重量、体積、ユニット数など、希望の計測値または計測値の組み合わせに基づいて、そのアイテムに 1 つ以上の容量を設定することができます。検査訪問などの一部の訪問先については、配達や引き取りと関係がない場合があります。
訪問先での作業を完了するのに必要な時間であるサービス時間を、訪問先に設定することができます。たとえば、配送トラックにおいて、1 個の家具を車両からおろして住居内に運ぶのに 20 分のサービス時間を要するとします。サービス時間はすべての訪問先で同じになることもあれば、訪問先ごとに異なることもあります。
1 つまたは 2 つのタイム ウィンドウを訪問先に持たせて、車両が訪問先を訪れるのを許可されている時間帯を示すことができます。たとえば、卸売食料品の配達トラックがレストランへの到着を許されるのは午前 8:00 ~ 10:00 のタイム ウィンドウと午後 2:00 ~ 4:00 のタイム ウィンドウです。これ以外のタイム ウィンドウに到着すると、レストランの営業に支障をきたしてしまいます。
VRP 解析は、1 年以上にわたる問題を解決することを考慮していません。そのため、サービス時間とタイム ウィンドウはすべて 1 年以内である必要があります。
特別指定を訪問先に関連付けることができます。つまり、訪問先では、特定のスキルを身に付けた技術者 (たとえば、電気技術者) または特定の機能を備えた車両 (パワーリフト) を必要とする場合があります。同じ特別指定を持つルートだけが、その訪問先に割り当てられます。
訪問先プロパティ
訪問先の入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
Shape | ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 |
Name | ネットワーク解析オブジェクトの名前。 名前は一意でなければなりません。 このフィールドは主キーとして機能し、外部キーとして訪問先ペア テーブル内の訪問先を参照するために使用されます。訪問先の名前は大文字と小文字を区別しません。また、訪問先が解析対象から除外される場合でも、訪問先の名前は空白のままにしないでください。 |
説明 | 訪問先に関する説明的な情報。訪問先に関するあらゆるテキスト情報を保持することができ、一意でなくてもかまいません。[Name] フィールドに顧客 ID 番号を格納し、[Description] フィールドに顧客の実際の名前または住所を格納すると便利なことがあります。 |
ServiceTime | このプロパティは、ルートがネットワーク ロケーションを訪れたときの滞在時間を指定します。つまり、ネットワーク ロケーションのインピーダンス値を格納します。0 または NULL 値は、ネットワーク ロケーションでサービス時間が必要ないことを表します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TimeWindowStart1 | ネットワーク ロケーションの第 1 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、開始時刻は設定されません。 (詳細については、この表の後の注意をご参照ください。) |
TimeWindowEnd1 | ネットワーク ロケーションの第 1 のタイム ウィンドウの終了時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、終了時刻は設定されません。 (詳細については、この表の後の注意をご参照ください。) |
TimeWindowStart2 | ネットワーク ロケーションの第 2 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、第 2 のタイム ウィンドウは設定されません。 [TimeWindowStart1] および [TimeWindowEnd1] フィールドで第 1 のタイム ウィンドウを NULL に指定した場合は、第 2 のタイム ウィンドウも NULL にする必要があります。 両方のタイム ウィンドウに NULL 以外の値を指定する場合、これらのタイム ウィンドウを重なるように指定することはできません。また、第 2 のタイム ウィンドウは第 1 のタイム ウィンドウよりも後になるように設定する必要があります。 (詳細については、この表の後の注意をご参照ください。) |
TimeWindowEnd2 | ネットワーク ロケーションの第 2 のタイム ウィンドウの終了時刻。このフィールドは、NULL 値を含むことができます。 [TimeWindowStart2] と [TimeWindowEnd2] の両方が NULL の場合、第 2 のタイム ウィンドウは設定されません。 [TimeWindowStart2] が NULL 以外で [TimeWindowEnd2] が NULL の場合、第 2 のタイム ウィンドウの開始時間は設定されますが、終了時間は設定されません。これは有効な設定です。 (詳細については、この表の後の注意をご参照ください。) |
MaxViolationTime1 | 到着時刻がタイム ウィンドウの終了よりも後になった場合は、タイム ウィンドウが超過されたと見なされます。このフィールドでは、訪問先の第 1 のタイム ウィンドウについて最大許容超過時間を指定します。このフィールドは値としてゼロを含むことはできますが、負の値を含むことはできません。値がゼロの場合、訪問先の第 1 のタイム ウィンドウにおいてタイム ウィンドウ違反は許されません。つまり、第 1 のタイム ウィンドウは条件が厳しいということです。一方、NULL 値の場合、許容超過時間は無制限です。ゼロ以外の値は、最大遅延時間を指定します。たとえば、第 1 のタイム ウィンドウの終了時刻から最大で 30 分遅れて到着することが許されます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 解析によってタイム ウィンドウ違反を追跡し、重み付けすることが可能です。このため、次の 3 つの手法のいずれかを使用するように VRP 解析機能に指示することができます。
解析レイヤーの [タイム ウィンドウ違反] 設定に重要度を割り当てることで、この 3 つの手法の中から実質的に 1 つを選択できます。ただし、いずれの場合も、[MaxViolationTime1] の値セットを超えるとエラーが返されます。 |
MaxViolationTime2 | 訪問先の第 2 のタイム ウィンドウの最大許容超過時間。このフィールドは、[MaxViolationTime1] フィールドと同様です。 |
InboundArriveTime | 訪問先に配達されるアイテムが開始拠点で準備される時間を定義します。 このインバウンド到着時間がルートの最新の開始時間値より前の場合のみ、訪問先をルートに割り当てることができます。このため、アイテムを積み込む準備ができるまで、拠点を出発することはできません。 このフィールドは、インバウンド到着後の積み替えに関わるシナリオのモデリングに役立ちます。たとえば、訪問先のジョブで、現在拠点にない特別なマテリアルが必要であるとします。このマテリアルは、別のロケーションから発送され、午前 11 時に拠点に到着する予定です。マテリアルの到着前に出発するルートが訪問先に割り当てられないようにするために、訪問先のインバウンド到着時間を午前 11 時に設定します。特別なマテリアルが午前 11 時に到着し、車両に積み込まれ、車両が拠点から出発して割り当てられた訪問先に移動します。 注意:
|
OutboundDepartTime | 訪問先で積み込むアイテムが終了拠点に到着しなくてはならない時間を定義します。 指定したアウトバウンド出発時間より前にルートが訪問先に移動でき、終了拠点に到着できる場合のみ、訪問先をルートに割り当てることができます。 このフィールドは、アウトバウンド出発時刻の積み替えに関わるシナリオのモデリングに役立ちます。たとえば、発送会社が配達トラックを使って訪問先からパッケージを積み込み、拠点に運び、それを最終目的地へのルートの途中で、別の施設に送るとします。毎日、午後 3 時に、セミトレーラーが拠点に立ち寄り、優先度の高いパッケージを積み込み、それを中央処理ステーションに直接輸送します。発送会社は、優先度の高いパッケージの輸送が次の日の午後 3 時まで遅れないように、配達トラックで訪問先から優先度の高いパッケージを積み込み、それを締め切りの午後 3 時より前に拠点に輸送しようと努めます。このために、アウトバウンド出発時間を午後 3 時に設定します。 注意:
|
DeliveryQuantities | 配達される荷物のサイズ。重量、体積、数量など、任意の計測方法でサイズを指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。 訪問先で重量が 2,000 ポンドの商品を必要としている場合、解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスの [積載制限の総数] パラメーターを 1 に設定し、[DeliveryQuantities] を 2000 に設定する必要があります。 解析レイヤーの [積載制限の総数] プロパティで複数の種類が設定されている場合、[DeliveryQuantity] の値はスペースで区切って指定します。 たとえば、重量と体積がわかっている場合は、解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスの [積載制限の総数] を 2 に設定します。訪問先で重量が 2,000 ポンドの商品を必要としていて、それが 100 立方フィートを占める場合は、[DeliveryQuantities] を 2000 100 に設定します。 空の文字列または NULL 値は、すべての計測方法でサイズがゼロであることと同じです。積載制限 (または計測方法でのサイズ) の総数に対して文字列内の値の数が不足している場合、残りの値はゼロと見なされます。配送数量を負の値とすることはできません。 |
PickupQuantities | 引き取る荷物のサイズ。重量、体積、数量など、任意の計測方法でサイズを指定できます。重量と体積など、複数の計測方法でサイズを指定することもできます。ただし、負の値は指定できません。このフィールドは、[Orders] の [DeliveryQuantities] フィールドと同様です。 |
Revenue | 訪問先が解析に含まれる場合に生成される収入。このフィールドは NULL 値 (収入がゼロであることを示す) を含むことができますが、負の値を含むことはできません。 収入は、目的関数の値を最適化する際に算入されますが、ソリューションの運用コストには組み込まれません。つまり、ルート クラスの [TotalCost] フィールドの出力に収入が取り込まれることはありません。ただし、収入によって、訪問先へのサービス提供の重要度が相対的に重み付けされます。 |
SpecialtyNames | スペース区切りの文字列であり、訪問先が必要とする特別指定の名前が含まれます。NULL 値は、訪問先が特別指定を必要としていないことを示しています。 このフィールドは、特別指定テーブルの [Name] フィールドに対する外部キーです。特別指定オブジェクトはあらかじめ存在している場合に限り、[SpecialtyNames] ドロップダウン リストに表示されます。たとえば、芝の手入れを行う企業は、散布するのにライセンスが必要な農薬を使用して訪問先にサービスを提供することが必要な場合があります。この企業は、「ライセンス」という名前の特別指定オブジェクトを作成し、このプロパティを [ライセンス] に設定することが可能です。 |
AssignmentRule | 訪問先をルートに割り当てるためのルールを指定します。このフィールドは、以下に示す値のドメインによって制約されます (それぞれのコード値は括弧内に示されています)。
このフィールドは、NULL 値を含むことができません。 |
ネットワーク ロケーション フィールド
| これらの 4 つのプロパティを組み合わせて、オブジェクトが配置されているネットワーク上のポイントを表します。 |
CurbApproach | [CurbApproach] プロパティは、車両がネットワーク ロケーションに到着する方向およびネットワーク ロケーションから出発する方向を指定します。このプロパティには 4 つの値を設定できます (それぞれのコード値は括弧内に示されています)。
|
訪問先の入力/出力フィールド
入力/出力フィールド | 説明 |
---|---|
RouteName | 訪問先が割り当てられるルートの名前。 このフィールドを入力フィールドとして使用し、訪問先を特定のルートにあらかじめ割り当てておきます。このフィールドは NULL 値を含むことができます。NULL 値の場合、訪問先はどのルートにもあらかじめ割り当てられず、解析機能が訪問先にとって最良のルート割り当てを決定します。このフィールドを NULL に設定した場合は、[Sequence] フィールドも NULL に設定する必要があります。 このフィールドは、[ルート] クラスの [Name] フィールドに対する外部キーです。ルート オブジェクトはあらかじめ存在している場合に限り、[RouteName] リストに表示されます。 解析の後、訪問先のルートが解析されると、[RouteName] フィールドには訪問先が割り当てられるルートの名前が入ります。 |
Sequence | このフィールドは、訪問先に割り当てられたルートでの訪問先の順序を示します。 入力フィールドとしてこのフィールドを使用して、ルート上での訪問先の相対的な順序を指定します。このフィールドは NULL 値を含むことができます。NULL 値は、訪問先をルート上のどこにでも配置できることを示します。NULL 値にする場合は、[RouteName] の値も NULL 値でなければなりません。 順序を示す入力値は、負でない値であり、各ルートに対して一意です (拠点立ち寄り状況、訪問先、および休憩の間で共有される)。ただし、0 から開始する必要も連続している必要もありません。 解析の後、[Sequence] フィールドには、割り当てられたルート上での訪問先の順序の値が入ります。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。ルートは常に拠点から始まるので、ルート解析対象の訪問先に対して出力される最小限の順序の値は 2 となります。 |
Status | このフィールドは、以下に示す値のドメインによって制約されます (それぞれのコード値は括弧内に示されています)。
解析後、次のいずれかの状態値を使用して状態を変更できます。
タイム ウィンドウが使用され、ルートが早く、または遅く到着する場合、値は [タイム ウィンドウ違反](6) に変わります。 |
訪問先の出力フィールド
出力フィールド | 説明 |
---|---|
ViolatedConstraints | このフィールドは制約違反のサマリーを含み、解析の実行後に設定されます。訪問先をルートに割り当てることで制約違反が発生する場合は、以下に示す 1 つまたは複数の違反の組み合わせがフィールドに割り当てられる可能性があります。
|
FromPrevTravelTime | 前の訪問先から次の訪問先までの移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
FromPrevDistance | 前の訪問先から次の訪問先までの移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
CumulTravelTime | ルートが訪問先に到着するまでの累積移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulDistance | ルートが訪問先に到着するまでの累積移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
CumulTime | 訪問先までのルートの累積所要時間で、訪問先で費やした時間を含みます。累積所要時間には、移動時間に加えて、訪問先でのサービス時間および待ち時間も含まれます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ArriveCurbApproach | 車両がネットワーク ロケーションに到着するときに、アプローチを車両のどちら側に制限するかを表します。ネットワーク ロケーションの [CurbApproach] の値が [車両の右側] に設定されている場合、解析後の [ArriveCurbApproach] は [車両の右側] になります。一方、[CurbApproach] の値が [車両の両側] または [U ターンなし] に設定されている場合、[ArriveCurbApproach] はパス全体が最短となるように右側または左側のどちらかに決定されます。 |
DepartCurbApproach | 車両がネットワーク ロケーションに出発するときに、アプローチを車両のどちら側に制限するかを表します。ネットワーク ロケーションの [CurbApproach] の値が [車両の右側] に設定されている場合、解析後の [DepartCurbApproach] は [車両の右側] になります。一方、[CurbApproach] の値が [車両の両側] または [U ターンなし] に設定されている場合、[DepartCurbApproach] はパス全体が最短となるように右側または左側のどちらかに決定されます。 |
ArriveTime | 訪問先に到着した時刻を示す日時の値。 ルートは、訪問先にそのタイム ウィンドウが始まる前に到着することがあります。この場合、訪問先では待ち時間が発生します。ソフト タイム ウィンドウが設定されている訪問先については、いずれかのタイム ウィンドウの終了後に訪問先にルートが到着することがあります。この場合、訪問先では超過時間が発生します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時間値のタイム ゾーンは訪問先が配置されているネットワーク エレメントから取得されます。 |
DepartTime | 訪問先からの開始時刻を示す日時の値。ルートは、サービスが完了すると訪問先を出発します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時間値のタイム ゾーンは訪問先が配置されているネットワーク エレメントから取得されます。 |
ArriveTimeUTC | 訪問先に到着した時刻を UTC (世界協定時) で示す日時の値。 |
DepartTimeUTC | 訪問先からの開始時刻を UTC (世界協定時) で示す日時の値。ルートは、サービスが完了すると訪問先を出発します。 |
WaitTime | 訪問先での待ち時間または待ち合わせ時間。たとえば、ルートが訪問先にてタイム ウィンドウが開くまで待機する必要がある場合は、待ち時間の値を取得します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ViolationTime | 訪問先のタイム ウィンドウの終了からルート車両の到着までの経過時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulWaitTime | ルートの開始から訪問先までの累積待ち時間で、訪問先での待ち時間を含みます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulViolationTime | ルートの開始から訪問先までの累積超過時間で、訪問先での超過時間を含みます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
拠点クラス
このネットワーク解析クラスには、特定の配車ルート解析レイヤーの一部である拠点が格納されます。拠点とは、車両が就業日の初めに出発し、就業日の終わりに戻ってくる場所です。拠点は、車両に荷物が積まれ (配達の場合)、車両から荷が降ろされる (引き取りの場合) 場所です。拠点は、場合によっては、リニューアル ロケーションとしての役割を果たすこともできます。これにより、車両は荷を降ろしたり再度積み込んだりして、配達と引き取りを引き続き行うことができます。拠点には、ハード タイム ウィンドウによって指定されるように、開始時刻と終了時刻があります。車両はこのタイム ウィンドウ外の時間に拠点に到着することは許されません。
拠点プロパティ
拠点の入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
Shape | ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 |
Name | ネットワーク解析オブジェクトの名前。 このフィールドは主キーです。ルート フィーチャ レイヤー、ルート リニューアル テーブル、拠点立ち寄り状況フィーチャ レイヤーでは、外部キーとして使用して拠点を参照します。拠点の名前は大文字と小文字を区別しません。また、空白以外の一意の値にする必要があります。 |
説明 | ネットワーク解析オブジェクトに関する情報。あらゆるテキスト情報を保持することができ、一意でなくてもかまいません。 拠点が存在する領域や、拠点の住所および電話番号をメモしておくと便利な場合があります。このような情報は [Name] フィールドではなく、このフィールドに入力できます。 |
TimeWindowStart1 | ネットワーク ロケーションの第 1 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、開始時刻は設定されません。 (詳細については、この表の後の注意をご参照ください。) |
TimeWindowEnd1 | ネットワーク ロケーションの第 1 のタイム ウィンドウの終了時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、終了時刻は設定されません。 (詳細については、この表の後の注意をご参照ください。) |
TimeWindowStart2 | ネットワーク ロケーションの第 2 のタイム ウィンドウの開始時刻。このフィールドは NULL 値を含むことができます。NULL 値を指定した場合、第 2 のタイム ウィンドウは設定されません。 [TimeWindowStart1] および [TimeWindowEnd1] フィールドで第 1 のタイム ウィンドウを NULL に指定した場合は、第 2 のタイム ウィンドウも NULL にする必要があります。 両方のタイム ウィンドウに NULL 以外の値を指定する場合、これらのタイム ウィンドウを重なるように指定することはできません。また、第 2 のタイム ウィンドウは第 1 のタイム ウィンドウよりも後になるように設定する必要があります。 (詳細については、この表の後の注意をご参照ください。) |
TimeWindowEnd2 | ネットワーク ロケーションの第 2 のタイム ウィンドウの終了時刻。このフィールドは、NULL 値を含むことができます。 [TimeWindowStart2] と [TimeWindowEnd2] の両方が NULL の場合、第 2 のタイム ウィンドウは設定されません。 [TimeWindowStart2] が NULL 以外で [TimeWindowEnd2] が NULL の場合、第 2 のタイム ウィンドウの開始時間は設定されますが、終了時間は設定されません。これは有効な設定です。 (詳細については、この表の後の注意をご参照ください。) |
ネットワーク ロケーション フィールド
| これらの 4 つのプロパティを組み合わせて、オブジェクトが配置されているネットワーク上のポイントを表します。 |
CurbApproach | CurbApproach プロパティは、車両が拠点に到着する方向および拠点から出発する方向を指定します。これは車両が特定の方向から拠点に到着し、拠点から特定の方向に出発する必要がある場合、または U ターンを避ける必要がある場合に役立ちます。CurbApproach の値として次の 4 つ値のいずれかを選択することによって、これらの要件に対応できます。
|
拠点の入力/出力フィールド
入力/出力フィールド | 説明 |
---|---|
Status | このフィールドは、以下に示す値のドメインによって制約されます (それぞれのコード値は括弧内に示されています)。
解析後、次のいずれかの状態値を使用して状態を変更できます。
タイム ウィンドウが使用され、ルーティングされた車両が早く、または遅く到着する場合、値は [タイム ウィンドウ違反] (6) に変わります。 |
ルート クラス
このネットワーク解析クラスには、特定の配車ルート解析レイヤーの一部であるルートが格納されます。ルートは、車両および運転手の特性を指定し、拠点と訪問先の間の通行を表します。Network Analyst では、「車両」、「ルート」、および「運転手」は同義語であり、この 3 つすべてを「ルート」という用語で表現します。
ルートでは、開始拠点または終了拠点で荷物の積み降ろしに時間を要する場合があります。ルートの拠点で費やされる時間は固定されており、開始拠点および終了拠点のサービス時間として指定されます。
ルートは、決まった時刻に始めるように指定することも、開始時刻に幅を持たせること (つまり、何時から何時までの間という形で指定すること) も可能です。開始拠点の開始時刻範囲とタイム ウィンドウは、ルートの実際の開始時刻を決定する際に考慮されます。
個々のルートの運用コストは、時間ベースのコスト、距離ベースのコスト、および/または作業した時間または運転した距離に関係のない固定コストによって構成されます。追加の車両をレンタルして作業量の多い日に対処する必要がある場合は、車両の使用に関連付けられた固定コストが存在します。同様に、運転手には (規定外労働時間や昼休みを含めた、または除外した) 労働時間数に対応する賃金が支払われます。このようなコストを使用して時間ベースのコストを明示することができます。燃料コストを使用して距離ベースのコストを明示することができます。
特定のルートで運用される車両には、車両の運送可能な量を制限する積載制限もあります。
運転手の労働時間 (運転者が作業または運転できる時間数または合計運転距離) は、地域の法規または労働組合協定で定められているため、規制の対象となります。
ルートには作業休憩を含めることができます。こうした休憩について運転手に賃金が支払われる場合もあればそうでない場合もあります。
車両は、特定の機能 (パワー リフトや特殊なシールド) を備える場合があります。あるいは、技術者はさまざまなスキルを身に付けている場合があります。このような特別指定が定義された訪問先は、適切なルートに割り当てる必要があります。
ルートがあらかじめ定義された地理的な領域に入るよう制限されている場合は、ルートをゾーンと関連付けることができます。
ルートは、ライン フィーチャです。これらのフィーチャは、他の配車ルート解析レイヤーの既存のルート、他のライン フィーチャ、またはテーブルからインポートすることができます。それらは [アイテムの追加] コマンドを使用して作成することもできます。
ルート プロパティ
ルートの入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
Name | ネットワーク解析オブジェクトの名前。 このフィールドは主キーです。ルート フィーチャ レイヤー、休憩テーブル、ルート ゾーン フィーチャ レイヤー、ルート シード ポイント フィーチャ レイヤー、ルート リニューアル テーブル、拠点立ち寄り状況 フィーチャ レイヤーでは、外部キーとして使用します。ルートの名前は大文字と小文字を区別しません。また、ルートが解析の対象から除外される場合でも、ルートの名前は空白のままにしないでください。名前は一意でなければなりません。 |
説明 | ネットワーク解析オブジェクトに関する情報。あらゆるテキスト情報を保持することができ、一意でなくてもかまいません。 |
StartDepotName | ルートの開始拠点の名前。このフィールドは、拠点クラスの [Name] フィールドに対する外部キーです。拠点オブジェクトはあらかじめ存在している場合に限り、[StartDepotName] ドロップダウン リストに表示されます。 [StartDepotName] の値が NULL の場合、ルートは指定されている最初の訪問先から始まります。開始拠点を省略するのは、車両の出発点が不明か、解析に関係ない場合に有効です。ただし、[StartDepotName] が NULL の場合は、[EndDepotName] を NULL にすることはできません。 訪問先/拠点が複数のタイム ゾーンにある場合、仮想の開始拠点は使用できません。 ルートが配達を行っていて、[StartDepotName] が NULL の場合、荷物はルートの開始前に仮想拠点で車両に積み込まれるものと想定されます。リニューアル拠点を持たないルートの場合、その配達訪問先 ([Orders] クラスの [DeliveryQuantities] がゼロ以外の値) の荷物は、開始拠点または仮想拠点で積み込まれます。リニューアル拠点を持つルートの場合、最初のリニューアル拠点の手前にある配達訪問先の荷物のみが開始拠点または仮想拠点で積み込まれます。 |
EndDepotName | ルートの終了拠点の名前。このフィールドは、拠点クラスの [Name] フィールドに対する外部キーです。拠点オブジェクトはあらかじめ存在している場合に限り、[EndDepotName] ドロップダウン リストに表示されます。 |
StartDepotServiceTime | 開始拠点でのサービス時間。このフィールドを使用して、車両に荷物を積み込むのに要する時間をモデリングします。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
EndDepotServiceTime | 終了拠点でのサービス時間。このフィールドを使用して、車両から荷物を降ろすのに要する時間をモデリングします。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
EarliestStartTime | ルートにおいて許容される最も早い開始時刻。解析では、このフィールドを開始拠点のタイム ウィンドウと組み合わせて使用し、ルートの実現可能な開始時刻を決定します。 このフィールドは NULL 値を含むことはできません。デフォルト値は午前 8:00 で、時刻のみを示す値となります。このデフォルト値は解析レイヤーの [デフォルトの日付] プロパティで指定された日の午前 8:00 と解釈されます。 タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。 複数のタイム ゾーンにまたがる交通量データを持つネットワーク データセットを使用する場合、[EarliestStartTime] のタイムゾーンは開始拠点が配置されているエッジまたはジャンクションのタイム ゾーンと同じになります。 |
LatestStartTime | ルートにおいて許容される最も遅い開始時刻。このフィールドは NULL 値を含むことはできません。デフォルト値は 10:00 で、時刻のみを示す値となります。このデフォルト値は解析レイヤーの [デフォルトの日付] プロパティで指定された日の 10:00 と解釈されます。 タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。 複数のタイム ゾーンにまたがる交通量データを持つネットワーク データセットを使用する場合、[LatestStartTime] のタイムゾーンは開始拠点が配置されているエッジまたはジャンクションのタイム ゾーンと同じになります。 |
ArriveDepartDelay | このフィールドには、車両を通常の移動速度まで加速し、停止するまで減速し、ネットワークに出入りする (たとえば、駐車場に出入りする) のに必要な移動時間が格納されます。[ArriveDepartDelay] 値を含めることにより、VRP 解析で、物理的に一致する訪問先にサービスを提供するために多くのルートを送り出すことがなくなります。 このプロパティのコストは、一致しない訪問先、拠点、およびルート リニューアルへの訪問の間に発生します。たとえば、ルートが拠点から出発し、最初の訪問先を訪問したときに、到着と出発の遅延の合計が移動時間に追加されます。最初の訪問先から 2 番目の訪問先まで移動するときにも同じことが起こります。2 番目と 3 番目の訪問先が一致している場合、車両は移動する必要がないため、この間については [ArriveDepartDelay] 値は追加されません。ルートがルート リニューアルに移動する場合、この値が再び移動時間に追加されます。休憩の場合、車両は減速して停止し、後で加速する必要がありますが、VRP 解析では [ArriveDepartDelay] 値を加算できません。これは、ルートが訪問先を離れ、休憩のために停止し、さらに次の訪問先に向かった場合に、到着と出発の遅延は 2 度ではなく、1 度しか追加されないことを意味します。 1 つの高層ビル内に 5 つの一致する訪問先があり、それらが 3 つの異なるルートでサービスを提供されているとします。この場合は、到着と出発の遅延が 3 回発生します。つまり、3 人の運転手が駐車場所を見つけ、同じ建物に入ることが必要になります。ただし、これらの訪問先に 1 つのルートだけで配送できれば、駐車して建物に入る運転手は 1 人だけになり、到着と出発の遅延の発生も 1 回だけになります。VRP 解析ではコストの最小化が図られるため、到着と出発の遅延を抑えるために、単一ルートのオプションが選択されます (特別指定、タイム ウィンドウ、積載制限などの制約によって、複数のルートが必要になる場合があります)。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
Capacities | 車両で運送可能な荷物の量 (たとえば、体積、重量、数量)。車両が最大 40,000 ポンドを積載できる場合、解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスの [積載制限の総数] を 1 に設定し、[Capacities] を 40000 に設定します。同様に、車両が 1,000 立方フィートの荷物を運送可能である場合、[積載制限の総数] を 1 に設定し、[Capacities] を 1000 に設定します。 解析レイヤーの [積載制限の総数] パラメーターで複数の種類が設定されている場合、[Capacities] の値はスペースで区切って指定します。たとえば、車両の最大重量と体積がわかっていて、解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスの [積載制限の総数] に 2 を設定した場合を例にとります。車両が重さ 40,000 ポンド、体積 2,000 立方フィートの荷物を輸送可能である場合は、[Capacities] を 40000 2000 に設定します。 空の文字列または NULL 値は、すべての数量がゼロであることを示します。積載制限を負の値とすることはできません。 積載制限の総数に対して [Capacities] 文字列内の値の個数が不足している場合、明示されていない残りの値はゼロと見なされます。 |
FixedCost | ルートがソリューションで使用される (つまり、訪問先がソリューションに割り当てられている) 場合に限り適用される金銭上の固定コスト。このフィールドは NULL 値を含むことができます。NULL 値は固定コストがゼロであることを示します。このコストは、ルートの合計運用コストの一部です。 |
CostPerUnitTime | 合計ルート所要時間 (移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待機時間も含む) に対して作業の単位時間ごとに適用される金銭上のコスト。このフィールドは NULL 値を含むことができず、デフォルト値は 1.0 となります。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CostPerUnitDistance | ルート長 (合計移動距離) に対して (移動距離の単位ごとに) 適用される金銭上のコスト。このフィールドは NULL 値を含むことができます。NULL 値はコストがゼロであることを示します。 距離の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。 このフィールドに値が与えられているのに解析レイヤーの [距離属性] プロパティが指定されていない場合は、エラーが返されます。 |
OvertimeStartTime | 規定労働時間の長さで、この時間を超過すると規定外労働時間の計算が開始されます。このフィールドは NULL 値を含むことができます。NULL 値は規定外労働時間が適用されないことを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 たとえば、合計ルート所要時間が 8 時間を超えたときに運転手に規定外労働時間賃金を支払う必要がある場合、解析レイヤーの [時間フィールドの単位] プロパティを [時間] に設定して、[OvertimeStartTime] を 8 に指定する必要があります。 |
CostPerUnitOvertime | 規定外労働時間の単位時間ごとに適用される金銭上のコスト。このフィールドは NULL 値を含むことができます。NULL 値は [CostPerUnitOvertime] の値が [CostPerUnitTime] の値と同じであることを示します。 |
MaxOrderCount | ルートに組み込むことができる訪問先の最大数。このフィールドは NULL 値を含むことができません。デフォルト値は 30 となります。 |
MaxTotalTime | ルートの最大許容所要時間。ルートの所要時間には、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。このフィールドは NULL 値を含むことができます。NULL 値はルートの所要時間に制約がないことを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
MaxTotalTravelTime | ルートの最大許容移動時間。移動時間に含まれるのはネットワークの走行に費やされた時間だけで、サービス時間または待ち時間は含まれません。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 このフィールドは NULL 値を含むことができます。NULL 値は最大許容移動時間に制約がないことを示します。このフィールドは [MaxTotalTime] フィールドより小さくする必要があります。 |
MaxTotalDistance | ルートへの最大許容移動距離。 合計距離の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。 このフィールドは NULL 値を含むことができます。NULL 値は最大許容移動時間に制約がないことを示します。 このフィールドに値が与えられているのに解析レイヤーの [距離属性] プロパティが指定されていない場合は、エラーが返されます。 |
SpecialtyNames | スペース区切りの文字列であり、ルートがサポートする特別指定の名前が含められます。NULL 値は、ルートが特別指定をサポートしていないことを示します。このフィールドは、特別指定テーブルの [Name] フィールドに対する外部キーです。特別指定オブジェクトはあらかじめ存在している場合に限り、[SpecialtyNames] リストに表示されます。 |
AssignmentRule | 問題の解決時にルートを使用できるかどうかを指定します。このフィールドは、値のドメインによって制約されます。設定可能な値は次のとおりです。
|
ルートの出力フィールド
出力フィールド | 説明 |
---|---|
Shape | ルートのライン形状。解析レイヤーの [出力形状のタイプ] プロパティを [なし] に設定した場合、形状は表示されません。[出力形状のタイプ] プロパティを [直線] に設定すると、連続的な立ち寄り先の各ペアを接続する直線が表示されます。[正確な形状 (メジャー付き)] および [正確な形状] のいずれを選択しても、ネットワーク上の対応するルートをトレースするラインが表示されます。ただし、[正確な形状 (メジャー付き)] では、時間よって直線的に参照されたラインが表示される点が異なります。 |
ViolatedConstraints | このフィールドは制約違反のサマリーを含み、解析の実行後に設定されます。ルートを使用することで制約違反が発生する場合は、以下に示す 1 つまたは複数の違反の組み合わせがフィールドに割り当てられる可能性があります。
|
OrderCount | ルートに割り当てられる訪問先の数。 |
TotalCost | ルートの合計運用コストです。これは、次のフィールドの合計です。
|
RegularTimeCost | 無給の休憩を除外した規定労働時間のコスト。 |
OvertimeCost | 無給の休憩を除外した規定外労働のコスト。 |
DistanceCost | [TotalDistance] と [CostPerUnitDistance] フィールド値を掛け算して得られる距離のコスト要素。解析レイヤーに [距離属性] プロパティが指定されていない場合、このフィールド値は NULL となります。 |
TotalTime | 合計ルート所要時間。これには、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。[TotalTime] の値は次のフィールドの合計です。
このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TotalOrderServiceTime | ルート上のすべての訪問先で費やされる合計サービス時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TotalBreakServiceTime | ルート上のすべての休憩で費やされる合計サービス時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TotalTravelTime | ルートの合計移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TotalDistance | ルートの合計移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
StartTime | ルートの開始時刻。ルートは、開始拠点のタイム ウィンドウが始まる前に出発することがあります。この場合、開始拠点では待ち時間が発生します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時刻値のタイムゾーンは開始拠点が配置されているネットワーク エレメントから取得されます。 |
EndTime | ルートの終了時刻。ルートは、終了拠点でのサービス完了時に終了します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時刻値のタイムゾーンは終了拠点が配置されているネットワーク エレメントから取得されます。 |
StartTimeUTC | ルートの開始時刻 (UTC (世界協定時))。 |
EndTimeUTC | ルートの終了時刻 (UTC (世界協定時))。 |
TotalWaitTime | ルート上のすべての訪問先、拠点、および休憩での合計待ち時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TotalViolationTime | ルート上のすべての訪問先および休憩での合計超過時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
RenewalCount | リニューアルを持つルートの場合、このフィールドはリニューアルのために拠点に立ち寄った回数に相当します。 |
TotalRenewalServiceTime | リニューアルを持つルートの場合、ルート上のすべてのリニューアル拠点で費やされたサービス時間の合計を示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
拠点立ち寄り状況フィーチャ レイヤー
ルートが拠点で開始、積み替え (荷降ろしまたは再積み込み)、または終了したときに、拠点立ち寄り状況が作成されます。拠点立ち寄り状況オブジェクトは、ルートが拠点を訪問した理由と、そこで行われたことに関する情報を提供します。拠点での積み込みまたは荷降ろしの量は、拠点立ち寄り状況のプロパティに記録されます。配車ルート解析の解釈に役立つ追加情報も含められます。
これは出力専用のネットワーク解析クラスです。拠点立ち寄り状況フィーチャは解析操作の間に限って作成されるため、解析プロセスの実行前には解析クラスは常に空です。
拠点立ち寄り状況プロパティ
拠点立ち寄り状況の出力フィールド
出力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
Shape | ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 |
DepotName | 訪れる拠点の名前。このフィールドは、拠点ネットワーク解析クラスの [Name] フィールドに対する外部キーです。 ルートが仮想拠点を使用する場合、つまりルートが拠点ではなく訪問先で開始または終了する場合、[DepotName] は NULL になります。 |
RouteName | この立ち寄りを含むルートの名前。このフィールドは、ルート フィーチャ レイヤーの [Name] フィールドに対する外部キーです。 |
Sequence | ルートでの立ち寄り拠点の順序を示します。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。 |
VisitType | この拠点に立ち寄った理由を示します。このフィールドは、値のドメインによって制約されます。
|
ServiceTime | 拠点でのサービス時間 (積み込みや荷降ろしなど)。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
FromPrevTravelTime | 前の立ち寄り地点からルートの拠点までの移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
FromPrevDistance | 前の立ち寄り地点から拠点までのルートの移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
CumulTravelTime | ルートがこの拠点に到着するまでの累積移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulDistance | ルートがこの拠点に到着するまでの累積移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
CumulTime | ルートの累積所要時間で、拠点で費やした時間を含みます。累積所要時間には、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ArriveTime | 拠点への到着時刻。ルートは拠点のタイム ウィンドウが始まる前に拠点に到着することがあります。この場合、拠点では待ち時間が発生します。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時刻値のタイムゾーンは拠点が配置されているネットワーク エレメントと同じになります。 |
DepartTime | 拠点からの開始時刻。 複数のタイム ゾーンにまたがる交通量データを使用するとき、この時刻値のタイムゾーンは拠点が配置されているネットワーク エレメントと同じになります。 |
ArriveTimeUTC | 拠点に到着した時刻を UTC (世界協定時) で示す日時の値。 |
DepartTimeUTC | 拠点からの開始時刻を UTC (世界協定時) で示す日時の値。 |
WaitTime | 拠点での待ち時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulWaitTime | ルートの開始から拠点までの累積待ち時間で、拠点での待ち時間を含みます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulViolationTime | ルートの開始から拠点までの累積超過時間で、拠点での超過時間を含みます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
TotalLoadedQuantities | 拠点で積み込まれる荷物の量 (たとえば、体積、重量、数量)。解析レイヤーの [積載制限の総数] プロパティで複数の種類が設定されている場合、値はスペースで区切って指定します。たとえば、配達の場合、[TotalLoadedQuantities] フィールドは、車両が拠点に戻るまでに配達する商品の実際の数量を示します。この値が、与えられたルートの [Capacities] フィールド値以下である場合、ルートはトラック 1 台分の積荷を配達します。 |
TotalUnloadedQuantities | 拠点で降ろされる荷物の量 (たとえば、体積、重量、数量)。解析レイヤーの [積載制限の総数] プロパティで複数の種類が設定されている場合、値はスペースで区切って指定します。たとえば、リニューアルを持つルートまたは引き取りの場合、[TotalUnloadedQuantities] フィールドは、車両が引き取って拠点に持ち込む商品の実際の数量を示します。この値が、与えられたルートの [Capacities] フィールド値以下である場合、ルートはトラック 1 台分の積荷を引き取ります。 |
休憩クラス
これは、配車ルート解析で、ルートの休憩時間または休憩が格納される非空間ネットワーク解析クラスです。休憩は、厳密に 1 つのルートに関連付けられ、訪問先にサービスを提供した後、訪問先へのルート途中、または訪問先にサービスを提供する前に取ることができます。休憩には開始時間と継続時間があり、運転手に賃金が支払われる場合もあればそうでない場合もあります。休憩の開始を決める 3 つのオプションがあり、タイム ウィンドウ、最大移動時間、または最大労働時間のいずれかを入力することができます。
タイム ウィンドウの休憩 - タイム ウィンドウの休憩を設定するには、2 つの時刻値を入力して、休憩が始まる時間の範囲を区切ります。[TimeWindowStart] フィールドと [TimeWindowEnd] フィールドに区切りの時刻が入ります。休憩の継続時間、またはサービス時間は、このタイム ウィンドウに依存しないため、タイム ウィンドウの終了時刻を超えてもかまいません。たとえば、1 時間の休憩のタイム ウィンドウが午前 10:00 ~ 10:15 である場合、休憩は午前 10:00 以降、午前 10:15 以前に開始しなければなりません。午前 10:10 に開始した場合は午前 11:10 に終了します。
休憩までの最大移動時間 - この種類の休憩では、休憩が必要になるまでに、運転手が運転できる時間を指定します (制限されるのは移動時間のみであり、それ以外の待ち時間やサービス時間などは制限されません)。たとえば、最初の休憩の [MaxTravelTimeBetweenBreaks] プロパティに 4 時間と入力すると、ルートの開始からの累積移動時間が 4 時間を超える前に、運転手に休憩が与えられます。それ以降の休憩については、前の休憩からの移動時間が累積されます。したがって、[MaxTravelTimeBetweenBreaks] 値が 2 時間で 2 回目の休憩がある場合、出発拠点からではなく、前の休憩からの累積移動時間が 2 時間を超える前に、2 回目の休憩を取ります。
ルートの最後の休憩までの最大移動時間は、前の休憩またはルートの開始からの累積移動時間だけでなく、最後の休憩から終了拠点までの移動時間も制限します。これは、休憩が 1 回のみでも同じです。VRP 解析がこのように設計されているのは、ルートがすべての休憩を取り、さらに長時間にわたって別の休憩を取らずに移動を続けることがないようにするためです。最後の例では、[MaxTravelTimeBetweenBreaks] が 2 時間に設定されていました。これがルートの最後の休憩なら、ルートは最後の休憩から 2 時間以内に終了拠点に到達しなければならず、到達しない場合はエラーが返されます。
休憩までの最大作業時間 - この休憩では、休憩が必要になるまでに、担当者が作業できる時間を指定します。最後の休憩の終了からの移動時間を累積できる休憩までの最大移動時間とは異なり、休憩までの最大作業時間では常にルートの開始からの作業時間を、開始拠点でのサービス時間も含めて累積します。
この休憩では累積された作業時間が制限されます。これには、移動時間とすべてのサービス時間が含まれますが、待ち時間は含まれません。
配車ルート解析レイヤーは、すべての休憩が同じ種類である場合に限って解析可能です。つまり、タイム ウィンドウ、休憩までの最大移動時間、休憩までの最大労働時間のいずれかの組み合わせが使用されている場合、解析プロセスは失敗します。
最大 5 つの休憩を 1 つのルートに指定できます。たとえば、解析のために休憩までの最大移動時間を使用しているとします。移動時間が 2 時間累積されたら、運転手は 15 分休むことができ、さらに 2 時間移動したら、1 時間の昼休みを取ることができるように、2 つの休憩を 1 つのルートに割り当てることができます。他のルートにも、0 ~ 5 個の休憩を割り当てることができます。
休憩は、その順序を指定する [Precedence] フィールドを持ちます。15 分の休憩を 1 時間の休憩の前に取りたい場合は、15 分の休憩の優先値を 1 に、1 時間の休憩の優先値を 2 に設定します。最大労働時間とタイム ウィンドウの休憩には、基本的に時系列的な順序がありますが、[Precedence] はすべての休憩に必要です。
最大移動時間または最大労働時間の休憩をすべて消化することなく、ルートが最終目的地に到達した場合、残された休憩は無視されます。ルートの最後でタイム ウィンドウの休憩が残っている場合、ルートは早く終了せずに、すべての休憩が取られるのを待って終了します。
休憩プロパティ
休憩の入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
TimeWindowStart | 休憩のタイム ウィンドウの開始時間。 このフィールドが NULL で、[TimeWindowEnd] が有効な時刻値を持つ場合、休憩は [TimeWindowEnd] 値より前ならいつでも開始できます。 このフィールドが値を持つ場合、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。さらに、解析レイヤーの他のすべての休憩についても、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。 ルートにタイム ウィンドウが重なった複数の休憩があると、解析時にエラーになります。 休憩のタイム ウィンドウ フィールドは、時刻のみを示す値を含むことも、日時を示す値を含むこともできます。[TimeWindowStart] のようなタイム ウィンドウ フィールドが時刻のみを示す値 (たとえば、午後 12:00) である場合、日付は、解析レイヤーの [デフォルトの日付] プロパティで指定された日付と見なされます。日時を示す値 (たとえば、2012 年 11 月 7 日、午後 12:00) を使用すると、複数日にわたってタイム ウィンドウを指定することができます。これは、午前 0 時前後のどこかで休憩を取る必要がある場合に特に有用です。 タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。 |
TimeWindowEnd | 休憩のタイム ウィンドウの終了時間。 このフィールドが NULL で、[TimeWindowStart] が有効な時刻値を持つ場合、休憩は [TimeWindowStart] 値より後ならいつでも開始できます。 このフィールドが値を持つ場合、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。さらに、解析レイヤーの他のすべての休憩についても、[MaxTravelTimeBetweenBreaks] と [MaxCumulWorkTime] は NULL でなければなりません。 タイム ウィンドウ フィールドに日付と時刻が示されている場合は、デフォルトの日付が無視されます。この場合にエラーが発生しないようにするには、拠点、ルート、訪問先、および休憩のタイム ウィンドウをすべて書式設定して日付と時刻を示します。 詳細については、上述の [TimeWindowStart] の説明をご参照ください。 |
MaxTravelTimeBetweenBreaks | 休憩を取る前に累積できる移動時間の最大値。移動時間は前の休憩の終了時か、休憩がまだ取られていないときはルートの開始時から累積されます。 これがルートの最後の休憩なら、[MaxTravelTimeBetweenBreaks] は最後の休憩から終了拠点までに累積可能な最大移動時間を示すことにもなります。 このプロパティの目的は、休憩が必要になるまでに運転できる時間を制限することです。たとえば、解析レイヤーの [時間フィールドの単位] プロパティが分に設定され、[MaxTravelTimeBetweenBreaks] の値が 120 なら、運転手は 2 時間運転した後に休憩を取ります。さらに 2 時間運転した後に 2 回目の休憩を割り当てるには、2 回目の休憩の [MaxTravelTimeBetweenBreaks] プロパティを 120 にします。 このフィールドに値を設定した場合、解析を正常に実行するには、[TimeWindowStart]、[TimeWindowEnd]、[MaxViolationTime]、および [MaxCumulWorkTime] が NULL でなければなりません。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
MaxCumulWorkTime | 休憩を取る前に累積できる作業時間の最大値。作業時間は常にルートの開始時から累積されます。 作業時間は、移動時間と、訪問先、拠点、休憩でのサービス時間の合計です。ただし、これには待ち時間は含まれません。待ち時間とは、ルート (または運転手) が訪問先または拠点でタイム ウィンドウの開始まで待機した時間のことです。 このプロパティの目的は、休憩が必要になるまでに作業できる時間を制限することです。たとえば、解析レイヤーの [時間フィールドの単位] プロパティが分に設定され、[MaxCumulWorkTime] の値が 120、[ServiceTime] の値が 15 なら、運転手は 2 時間作業した後に 15 分間の休憩を取ります。 引き続き最後の例で、さらに 3 時間作業した後に 2 回目の休憩が必要とします。この休憩を指定するには、2 回目の休憩の [MaxCumulWorkTime] 値に 315 (5 時間と 15 分) を入力します。この数には、前の休憩の [MaxCumulWorkTime] と [ServiceTime] の値に加えて、2 回目の休憩が許可される前の 3 時間の追加作業時間が含まれます。最大作業時間の休憩を誤って取ることを避けるために、ルートの開始から作業時間を累積していること、および作業時間にはそれまでに訪問した拠点、訪問先、休憩でのサービス時間が含まれることを再確認してください。 このフィールドに値を設定した場合、解析を正常に実行するには、[TimeWindowStart]、[TimeWindowEnd]、[MaxViolationTime]、および [MaxTravelTimeBetweenBreaks] が NULL でなければなりません。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
RouteName | 休憩が適用されるルートの名前。休憩は 1 つのルートだけに割り当てられますが、多くの休憩を同じルートに割り当てることができます。 このフィールドは、[ルート] クラスの [Name] フィールドに対する外部キーであり、NULL 値を持つことができません。 ルート オブジェクトはあらかじめ存在している場合に限り、[RouteName] ドロップダウン リストに表示されます。 |
Precedence | 優先順位値は、特定のルートの休憩を順序付けします。優先順位値が 1 の休憩は、2 の休憩よりも前に取られ、以降の休憩も優先順位値の順番に取られます。 タイム ウィンドウか、最大移動時間か、最大労働時間かにかかわりなく、すべての休暇が優先順位値を持たなければなりません。 |
ServiceTime | 休憩時間の長さ。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がないことを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
MaxViolationTime | このフィールドでは、タイム ウィンドウによる休憩について最大許容超過時間を指定します。到着時刻がこの時間の範囲を超えている場合、タイム ウィンドウが超過されたとみなされます。 値がゼロの場合、タイム ウィンドウのどのような超過も許されません。つまり、タイム ウィンドウは条件が厳しい (ハード) ということです。ゼロ以外の値は最大遅延時間を指定します。たとえば、タイム ウィンドウの終了時刻から最大で 30 分遅れて休憩を開始することができますが、解析レイヤーの [タイム ウィンドウ違反] プロパティに従ってこの遅延時間にはペナルティが適用されます。 このプロパティは NULL 値にすることができます。[TimeWindowStart] と [TimeWindowEnd] が NULL 値の場合、最大許容超過時間に制限がないことを示します。[MaxTravelTimeBetweenBreaks] または [MaxCumulWorkTime] に値が設定されている場合、[MaxViolationTime] は Null でなければなりません。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
IsPaid | 休憩に賃金を支払うかをブール値で指定します。[True] 値を指定すると、休憩で費やされた時間はルートのコスト計算および規定外労働時間の判定で考慮されます。[False] 値を指定すると、休憩で費やされた時間はルートのコスト計算および規定外労働時間の判定で考慮されません。デフォルト値は [True] です。 |
休憩の入力/出力フィールド
入力/出力フィールド | 説明 |
---|---|
Sequence | 入力フィールドとして、ルート上での休憩の順序を示します。このフィールドは、NULL 値を含むことができます。順序を示す入力値は、正の値であり、各ルートに対して一意です (リニューアル拠点立ち寄り状況、訪問先、および休憩の間で共有される)。ただし、1 から開始する必要も連続している必要もありません。 解析では、順序フィールドが変更されます。解析実行後、このフィールドにはルート上での休憩の順序の値が含まれます。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。 |
休憩の出力フィールド
出力フィールド | 説明 |
---|---|
RelativePosition | 休憩の相対位置です。休憩は、2 つのネットワーク ロケーション (訪問先または拠点) の間で取られます。値 0.0 は前のネットワーク ロケーションでサービスが終了した直後に休憩を取ることを示します。値 1.0 は次のネットワーク ロケーションでサービスを開始する直前に休憩を取ることを示します。この 2 つの値の中間にある値は、最初のネットワーク ロケーションから 2 番目のネットワーク ロケーションへの経路上で休憩を取ることを示します。たとえば、値 0.25 は、前のネットワーク ロケーションから次のネットワーク ロケーションへの道を 4 分の 1 進んだときに休憩を取ることを示します。 2 つのネットワーク ロケーションの間で何回休憩を取っても、相対位置は常に、他の休憩ではなくネットワーク ロケーションを基準にして報告されます。 |
FromPrevTravelTime | 前の訪問先、拠点、または休憩からこの休憩までの移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
FromPrevDistance | 前の訪問先、拠点、または休憩からこの休憩までの移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
CumulTravelTime | ルートが休憩地に到着するまでの累積移動時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulDistance | ルートが休憩地に到着するまでの累積移動距離。 このフィールドの値の単位は、解析レイヤーの [距離フィールドの単位] プロパティで指定します。解析パラメーターで [距離属性] プロパティが指定されていない場合、このフィールドは NULL です。 |
CumulTime | 休憩までのルートの累積所要時間で、休憩で費やした時間を含みます。累積所要時間には、移動時間に加えて、訪問先、拠点、休憩でのサービス時間および待ち時間も含まれます。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ArriveTime | 実際の休憩開始時間です。ルートは、休憩のタイム ウィンドウが始まる前に休憩に到着することがあります。この場合、休憩開始時間までの待ち時間が発生します。ソフト タイム ウィンドウが設定されている休憩については、休憩時間帯の終了後に休憩が始まることもあります。この場合、休憩では超過時間が発生します。 複数のタイム ゾーンにまたがるネットワーク データセットを使用する場合、この時間は実際の休憩場所のタイム ゾーンで報告されます。 |
DepartTime | 休憩が終了する時間。 複数のタイム ゾーンにまたがるネットワーク データセットを使用する場合、この時間は実際の休憩場所のタイム ゾーンで報告されます。 |
ArriveTimeUTC | ストップに到着した時刻を UTC (世界協定時) で示す日時の値。 |
DepartTimeUTC | ストップからの開始時刻を UTC (世界協定時) で示す日時の値。 |
WaitTime | 休憩開始時間までの待ち時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ViolationTime | 休憩での超過時間。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulWaitTime | ルートの開始から休憩までの累積待ち時間で、休憩開始時間までの待ち時間を含む。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
CumulViolationTime | ルートの開始から休憩までの累積超過時間で、休憩での超過時間を含む。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ルート ゾーン クラス
ルート ゾーンは、特定のルートの担当区域を指定します。ルート ゾーンはポリゴン フィーチャです。ルート ゾーンを使用して、領域内にある訪問先または領域の近くにある訪問先にのみサービスを提供するようにルートを制限します。どのようなときにルート ゾーンが役に立つかを以下の例で示します。
- 従業員または車両の一部が特定の地域で作業を行うために必要な許可証を持っていません。この場合は、要件を満たす地域の訪問先のみを訪れるようにハード ルート ゾーンを作成することができます。
- 車両のいずれかが頻繁に故障する場合は、対応時間を可能な限り短くするために、その車両の担当を修理工場の近くの訪問先にのみ限定するのが望ましいでしょう。車両を近隣での運用にとどめるために、ソフト ルート ゾーンまたはハード ルート ゾーンを作成できます。
解析でルート ゾーンを使用する場合、ルート シード ポイントは使用できなくなります。
ルート ゾーン プロパティ
ルート ゾーンの入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
Shape | ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 |
RouteName | このゾーンが適用されるルートの名前。ルート ゾーンは、関連付けられたルートを最大で 1 つ持っています。このフィールドは、NULL 値を含むことができません。ルート フィーチャ レイヤーの [Name] フィールドに対する外部キーとなります。 ルート オブジェクトはあらかじめ存在している場合に限り、[RouteName] リストに表示されます。 |
IsHardZone | ハード ルート ゾーンかソフト ルート ゾーンかをブール値で示します。[True] 値はルート ゾーンがハード ルート ゾーンであることを示します。つまり、ルート ゾーン ポリゴンの外にある訪問先をルートに割り当てることはできません。デフォルト値は [True] (1) です。[False] 値 (0) を指定した場合、ルート ゾーン ポリゴンの外にある訪問先をルートに割り当てることはできますが、訪問先へのサービス提供のコストはルート ゾーンからのユークリッド距離に基づく関数によって重み付けされます。基本的に、ソフト ゾーンから訪問先までの直線距離が長くなるに従い、訪問先をルートに割り当てる機会が低くなることを意味しています。 |
ルート シード ポイント クラス
このネットワーク解析クラスには、特定の配車ルート解析レイヤーのルート シード ポイントが格納されます。ルート シード ポイントを使用し、ポイントの近くにルートが集約されるように指定します。通常、訪問先がルートのシード ポイントに近づくほど、訪問先がそのルートに割り当てられる可能性が高くなります (特別指定や積載制限などの他の基準が満たされている限り)。訪問先を集約すると、ルートがカバーする領域が狭くなり、他のルートと交差することは少なくなりますが、ソリューションの全体のコストは増大する可能性があります。シード ポイントを使用して、運転手が慣れている配送地域を配置することができます。また、組織で管理しやすいように、ルートを区画化することもできます。
ルート シード ポイントで作業するときに考慮すべきいくつかのルールとオプションを次に示します。
- ルート シード ポイントはルートにあらかじめ割り当てておくことも、VRP 解析によって算出することもできます。
- 解析でルート シード ポイントを使用する場合、ルート ゾーンは使用できなくなります。
- ルート シード ポイントを使用する場合、各ルートにはルート シード ポイントを 1 つ割り当てる必要があります。
- ルート シード ポイントの種類を組み合わせることはできません。ネットワーク解析クラスのシード ポイントは、すべて動的なシード ポイントとするか、すべて静的なシード ポイントとする必要があります。
ルート シード ポイントはポイント フィーチャですが、ネットワーク ロケーションではありません。そのため、ネットワーク ロケーション フィールドを持ちません。
ルート シード ポイント クラス
ルート シード ポイントの入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
RouteName | このシード ポイントが適用されるルートの名前。ルート シード ポイントは、1 つのルートに 0 または 1 つ存在します。このフィールドは、NULL 値を含むことができません。[ルート] クラスの [Name] フィールドに対する外部キーとなります。ルート オブジェクトはあらかじめ存在している場合に限り、[RouteName] リストに表示されます。 |
SeedPointType | シード ポイントの種類。このフィールドは、値のドメインによって制約されます。設定可能な値は、[静的] と [動的] です。このフィールドのデフォルト値は [静的] です。 静的シード ポイントの場合、ルート シード ポイントの場所を指定すると、シード ポイント ロケーションの周囲にルートが集約されます。動的シード ポイントの場合は、マップ上の任意の場所にシード ポイントを追加すると、まず解析処理中に訪問先の集約化が行われ、次にシード ポイントがルートの訪問先の重心に再配置されます。 |
ルート シード ポイントの入力/出力フィールド
入力/出力フィールド | 説明 |
---|---|
Shape | 入力フィールドとして、ルート シード ポイントのロケーションを示します。静的シード ポイントの場合、その入力ポイントの位置は、解析プロセスを通してそのままです。 一方、動的シード ポイントの場合、入力ポイントの位置は無視され、解析機能により解析プロセス中に [Shape] フィールドが変更され、新しい位置に配置されます。 |
ルート リニューアル クラス
ルート リニューアル クラスでは、配車ルート解析内のルートが荷物を配達するか引き取るときに、再積み込みおよび荷降ろしのために立ち寄ることができる中間の拠点を指定します。
特に、ルート リニューアル解析オブジェクトは、ルート オブジェクトを拠点オブジェクトにリンクします。このリレーションシップは、関連付けられた拠点でルートがリニューアル (再積み込みまたは荷降ろし) できることを示します。
業務によっては車両が満載の積荷の配達または引き取りと配達を行うために 1 回または複数回往復します。ルート リニューアルを使用してモデリング可能なシナリオとして、「開始拠点で配達する荷物を車両に満載し、訪問先に供給し、拠点に戻って配達用の荷物を再び積み込み、訪問先への供給を継続する」というものがあります。たとえば、プロパンガスの配達の場合は、車両はタンクがほとんどまたは完全に空になるまで複数回配達を行い、燃料補給ポイントに立ち寄り、さらに配達を継続することができます。
ルート リニューアルで作業するときに考慮すべきいくつかのルールとオプションを次に示します。
- 再積み込み/荷降ろしのポイントである、リニューアル ロケーションは、開始拠点または終了拠点とは異なる可能性があります。
- 各ルートは、あらかじめ決定されたリニューアル ロケーションを 1 つまたは複数持つことができます。
- リニューアル ロケーションは、1 つのルートで複数回使用することができます。
- 1 つのルートにおいて使用できるリニューアル ロケーションがいくつか存在する場合は、一番近い有効なリニューアル ロケーションが解析によって選択されます。
ルート リニューアル プロパティ
ルート リニューアルの入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
DepotName | このリニューアルが行われる拠点の名前。このフィールドは、NULL 値を含むことができません。拠点フィーチャ レイヤーの [Name] フィールドに対する外部キーとなります。 拠点オブジェクトはあらかじめ存在している場合に限り、[DepotName] リストに表示されます。 |
RouteName | このリニューアルが適用されるルートの名前。このフィールドは、NULL 値を含むことができません。ルート フィーチャ レイヤーの [Name] フィールドに対する外部キーとなります。 ルート オブジェクトはあらかじめ存在している場合に限り、[RouteName] リストに表示されます。 |
ServiceTime | リニューアルのサービス時間。このフィールドは NULL 値を含むことができます。NULL 値はサービス時間がゼロであることを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 |
ルート リニューアルの入力/出力フィールド
入力/出力フィールド | 説明 |
---|---|
Sequences | 入力フィールドとして、リニューアル拠点への立ち寄りの順序の値をスペース区切りの文字列で指定します。このフィールドは、NULL 値を含むことができ、リニューアル拠点への立ち寄りをあらかじめ指定しておくために使用します。 出力フィールドとして、解析機能が変更した順序を格納する場合があります。解析実行後、このフィールドには、関連するルート用に設定されたリニューアル拠点への立ち寄りの順序を示す値が入ります。1 つのルートがその拠点で複数回のリニューアル拠点に立ち寄る場合は、順序の値はスペースで区切られます。ルートに対して出力される順序の値は、拠点立ち寄り状況、訪問先、および休憩の間で共有され、1 (開始拠点) から始まり、連続的な値となります。したがって、ルートが拠点を出発し、2 つの訪問先に立ち寄り、リニューアル拠点に立ち寄り、さらに業務を継続する場合、リニューアルの順序の値は 4 となります。 |
特別指定クラス
この表は、訪問先で要求することができ、ルートでサポートすることが可能な特別指定を示しています。ルートは、訪問先が必要としている特殊な条件をすべてサポートしている場合に限り、その訪問先にサービスを提供できます。
訪問先では、特定のスキルを身に付けた技術者または特定の機能を備えた車両を必要とする場合があります。まず、そうしたスキルや機能などを特別指定クラスに追加して、モデル化します。次に、ルートがサポートしている特別指定をその [SpecialtyNames] プロパティに追加します。最後に、訪問先が必要としている特別指定をその [SpecialtyNames] プロパティに追加します。VRP 解析を行うと、ある特別指定を必要とする訪問先と、それを提供できるルートがマッチングされます。
特別指定プロパティ
特別指定の入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
Name | ネットワーク解析オブジェクトの名前。 このフィールドは主キーです。訪問先フィーチャ レイヤーおよびルート フィーチャ レイヤーでは、外部キーとして使用して特別指定を参照します。 特別指定の名前は一意でなければならず、空であってはなりません。名前にスペースを含めることもできません。したがって、たとえば「senior technician」の特別指定は「SeniorTechnician」と入力します。 名前にスペースを含めることができないのは、複数の特別指定に関連付けられた訪問先とルートは、「SeniorTechnician Lift」のように特別指定の名前をスペースで区切って列挙するからです。 |
説明 | ネットワーク解析オブジェクトに関する情報。あらゆるテキスト情報を保持することができ、一意でなくてもかまいません。 |
訪問先ペア クラス
このネットワーク解析クラスは、配達と引き取りの訪問先をペアにし、同じルートでサービスされるようにするために使用されるレコードのテーブルです。
訪問先に対する引き取りと配達をペアにすることが必要な場合があります。たとえば、宅配業者の場合、ドキュメントの配達には 2 つのストップが関係します。まず発送元でドキュメントを引き取り、次に配送先にドキュメントを届けます。このような関連するストップは、適切な順序で同じルートに割り当てます。訪問先の片方だけをルートに割り当てることは禁止されています。訪問先の両方を同じルートに割り当てるか、どちらも割り当てないようにします。
荷物を車両に載せておく時間が制限されている場合があります。たとえば、病院から試験所までの血液サンプルの輸送は、2 時間以内に行う必要があります。
場合によっては 2 つの訪問先ペアを必要とする場合があります。たとえば、高齢者を自宅から、かかりつけの病院まで連れて行き、その後、家につれて戻りたい場合があるとします。自宅から病院までの乗車は、1 つの訪問先ペアであり、病院への到着時刻が要求されます。一方、病院から自宅に帰る乗車はもう 1 つの訪問先ペアであり、病院に迎えに行く時刻が要求されます。
訪問先ペア プロパティ
訪問先ペアの入力フィールド
入力フィールド | 説明 |
---|---|
ObjectID | システムで管理される ID フィールド。 |
FirstOrderName | ペアの第 1 の訪問先の名前。このフィールドは、訪問先フィーチャ レイヤーの [Name] フィールドに対する外部キーです。 訪問先オブジェクトはあらかじめ存在している場合に限り、[FirstOrderName] リストに表示されます。 |
SecondOrderName | ペアの第 2 の訪問先の名前。このフィールドは、訪問先フィーチャ レイヤーの [Name] フィールドに対する外部キーです。 訪問先オブジェクトはあらかじめ存在している場合に限り、[SecondOrderName] リストに表示されます。 ペアの第 1 の訪問先は引き取り訪問先でなければなりません。つまり、その [DeliveryQuantities] フィールドの値は NULL です。ペアの第 2 の訪問先は配達訪問先でなければなりません。つまり、その [PickupQuantities] フィールドの値は NULL です。第 1 の訪問先で引き取られる数量は、第 2 の訪問先に配達される数量と対応する必要があります。特殊な場合として、積荷制限が使用されていないシナリオについては、両方の訪問先の数量がゼロになることがあります。 |
MaxTransitTime | ペアの最大移動時間です。移動時間とは、第 1 の訪問先の出発時刻から第 2 の訪問先の到着時刻までの時間の長さです。この制約により、2 つの訪問先の間で車両に積まれている時間 (乗車時間) が制限されます。人または生鮮食料品を車両で輸送する場合、その乗車時間は、荷物または非生鮮食料品を車両で輸送する場合より短くなるのが普通です。このフィールドは NULL 値を含むことができます。NULL 値は乗車時間に制約がないことを示します。 このフィールドの値の単位は、解析レイヤーの [時間フィールドの単位] プロパティで指定します。 解析では、超過移動時間 (訪問先ペア間の直接移動時間に基づく) を追跡し、重み付けすることができます。このため、次の 3 つの手法のいずれかを使用するように VRP 解析機能に指示することができます。(1) 保有車両の移動コストの増大を無視して、全体の超過移動時間を最小にする、(2) 全体の超過時間と移動コストのバランスをとるソリューションを検索する、(3) 全体の超過移動時間を無視して、保有車両の移動コストを最小にする。解析レイヤーの [超過移動時間] 設定に重要度を割り当てることで、この 3 つの手法の中から 1 つを効果的に選択できます。重要度にかかわりなく、[MaxTransitTime] 値が超過すると必ずエラーが返されます。 |
ポイント バリア、ライン バリア、ポリゴン バリア
バリアは一時的な制限として機能し、ネットワークの一部にインピーダンスを追加したり、インピーダンスの値を増減します。新しいネットワーク解析レイヤーが作成されるとき、バリア クラスは空です。バリア クラスはオブジェクトを追加するときにだけ設定されます。ただし、バリアの追加は必須ではありません。
バリアはすべてのネットワーク解析レイヤーで使用できます。したがって、これらについては別のトピックで説明します。
配車ルート解析のパラメーター
解析パラメーターは、解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスで設定します。ダイアログ ボックスには複数の方法でアクセスできます。
ネットワーク解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスを開く方法の詳細
解析の設定タブ
解析レイヤーで設定できるパラメーターを以下に示します。これらのパラメーターは、解析レイヤーの [レイヤー プロパティ] ダイアログ ボックスの [解析の設定] タブで設定できます。
時間属性
ネットワークのエレメントに沿って通過時間を定義するのに使用する時間コスト属性。配車ルート解析は時間を最小限に短縮するため、時間コスト属性が必要です。
距離属性
ネットワークのエレメントに沿って長さを定義するのに使用する距離コスト属性。距離コスト属性はオプションです。
デフォルトの日付
日付が指定されない時間フィールド値で使用する日付。[TimeWindowStart1] のような訪問先のタイム フィールドが時刻のみを示す値である場合、その日付は [デフォルトの日付] プロパティで指定された日付とみなされます。たとえば、訪問先の [TimeWindowStart1] 値が午前 9:00 で [デフォルトの日付] が 2011 年 3 月 6 日の場合、このフィールドの時刻値全体は 2011 年 3 月 6 日、午前 9:00 になります。[デフォルトの日付] の設定を変更すると、日付が指定されていないすべての時間フィールド値に対して、この新しいデフォルトの日付が自動的に適用されます。時間フィールド値として時刻と特定の日付がすでに指定されている場合、デフォルトの日付は無効になります。
ネットワーク データセットに交通量データが含まれている場合、ここで指定する日付によって解析の結果が変わる可能性があります。たとえば、ルートが交通量の少ない日曜日の午前 8:00 に開始される場合と、混雑時の月曜日の午前 8:00 に開始される場合では、月曜日のルートの方が時間がかかります。また、最適なパスは交通状況によって異なります。
変動日または暦日のどちらかを選択できます。暦日は、特定の日、月、年を指定します。変動日は、[今日] またはいずれかの曜日 ([日] から [土]) を指定できます。変動日を指定できることにより、日付を変更することなく再利用できる解析レイヤーを設定できます。
交通量は分ごとおよび日ごとに変化するため、変動日は交通量データとともに使用する場合に特に便利です。たとえば、毎日同じルートを計算し、交通状況を考慮に入れた正確な時間や最適なルートを求める必要がある場合は、[曜日] 設定と [今日] 設定を選択することができます。解析はコンピューターのオペレーティング システムによって決定される現在の日付の交通量データに基づいて結果を生成します。その日のルートを更新するために次の日 (たとえば、5 月 5 日) を戻した場合には、同じ解析レイヤーを再解析できます。[曜日] を [今日] に設定しているため、この解析は自動的に 5 月 5 日の交通量データに基づくものになります。
積載制限の総数
積載容量の制約を示すディメンション数であり、車両の関連する制限を説明するのに必要です。訪問先への配達の場合、各車両が一度に輸送できる重量および体積は物理的および法律的な規制に基づいて制限されます。この場合、訪問先の重量および体積を追跡すれば、この 2 つの積載制限を使用することで、車両への過積載を防ぐことができます。このシナリオでの積載制限の総数は 2 (重量と体積) です。問題に応じて、積載制限のさまざまなタイプまたは量を追跡することが必要な場合もあります。積載制限フィールド ([訪問先] クラスでは [DeliveryQuantities] と [PickupQuantities]、[ルート] クラスでは [Capacities]) には、積載制限を表す数値がスペース区切りの文字列として入力されます。このフィールドで保持できる値の個数は、[積載制限の総数] に指定された値の個数に対応します。同じ配車ルート解析レイヤーでは、すべての積載制限フィールド値で各積載制限ディメンションの表示順序は同じになります。積載制限自体は名前を持ちません。したがって、積載制限ディメンションの順番を誤って入れ替えてしまうのを避けるために、すべての積載制限フィールドについては、スペース区切りの積載制限リストを常に同じ順序で入力する必要があります。
時間フィールドの単位
解析レイヤーのサブレイヤーおよびテーブル (ネットワーク解析のクラス) の時間的なフィールドで使用される時間の単位。時間コスト属性の単位と同じである必要はありません。
距離フィールドの単位
解析レイヤーのサブレイヤーおよびテーブル (ネットワーク解析のクラス) の距離的なフィールドで使用される距離の単位。オプションである距離コスト属性の単位と同じである必要はありません。
ジャンクションでの U ターン
Network Analyst では、U ターンをすべての場所で許可、どの場所でも許可しない、行き止まり (袋小路) のみで許可、または交差点と行き止まりのみで許可するように設定できます。U ターンを許可するということは、ルートがジャンクションで方向転換し、同じ道路を引き返すことができるということを意味します。
出力形状タイプ
解析によって出力されるルート フィーチャは、次の 4 つの方法のいずれかで表すことができます。
- [正確な形状] は、結果のルートを正確な形状で表示します。
- [正確な形状 (メジャー付き)] は、結果のルートを正確な形状で表示します。リニア リファレンスのためのルートのメジャー値が出力に含まれます。メジャー値は、最初のストップから積算され、累積インピーダンスを記録します。
- [直線] は、ストップの間を 1 本の直線で表します。
- 出力形状タイプが [なし] に設定されている場合、形状は返されません。
これらのオプションの場合はすべて、ソリューションでの時間ベースのコストと距離ベースのコストは同じです。また、ルート フィーチャ レイヤーの属性も同じになります。唯一の違いは、ルート出力の形状、またはリニア リファレンスが自動的に設定されるかどうかです。
階層を使用
ネットワーク データセットが階層属性を持つ場合は、解析のときに階層を使用できます。階層を使用すると、解析は下位ランクのエッジよりも上位ランクのエッジを優先します。階層解析は高速で、運転者が遠回りであっても一般道路の代わりに高速道路を利用する状況をシミュレートするのに使用できます。ただし、階層を使用しない場合は、ネットワーク データセットの正確なルートが検索されます。
無効な訪問先の場所を無視
配車ルートを解析する際に無効な訪問先を無視するかどうかを指定します。このオプションがオフの場合にどの訪問先も無効になっていると、解析処理に失敗します。
無効な訪問先とは、VRP 解析で解決できない訪問先を意味します。訪問先を解決できない理由はさまざまですが、訪問先が禁止されたネットワーク エレメント上に配置されている、訪問先がネットワーク上のどの場所にも配置されていない、訪問先がネットワーク上の接続されていない部分に配置されているといったことが主に考えられます。
無効な訪問先の原因を特定して解決するのは、時間のかかる作業です。このため、ルートを生成した後すぐに運転手にルートを分配する必要がある場合は、無効な訪問先を無視し、解析を行った上で、運転手にルートを分配することができます。この後、最後に行った解析から無効な訪問先を解決し、次回の就業日または作業シフトに関する VRP 解析にこれらの訪問先を加えます。
規制
解析の実行中に適用する規制属性を選択できます。ほとんどの場合、規制により道路は通行禁止になりますが、回避または優先する道路に指定することもできます。一方通行 (Oneway) などの規制属性は、一方通行に従う必要のある車両 (たとえば、緊急車両以外) を対象とするソリューションの検索で使用します。その他の一般的な規制属性には、一部の車両に道路や橋の通行を禁止する高さ規制や重量規制、危険物運搬車両が迂回または少なくとも回避を試みる必要がある危険物規制、トラック運転手が従うべきトラックの指定ルートなどがあります。解析の実行中に、適用する規制を選択できます (さらに、[属性パラメーター] タブで、規制を使用するエレメントを通行禁止、回避、または優先のいずれにするかを指定できます)。
ルート案内
[ルート案内] プロパティでは、距離の表示単位と、オプションとして時間を設定できます。さらに、ルートの生成後にルート案内を自動的に表示するように設定できます (ルート案内を自動的に表示しない場合は、[ルート案内] ボタン をクリックすると、ルート案内が表示されます)。
高度な設定タブ
[レイヤー プロパティ] ダイアログ ボックスの [高度な設定] タブには、配車ルート解析レイヤーの以下のプロパティが表示されます。ルートのタイム ウィンドウ違反および訪問先ペアの超過移動時間を処理する場合、ここで行う設定が解析の優先順位に影響します。[低]、[中]、または [高] の値を割り当てることができます。重要度が高くなるほど、解析機能は、関連付けられたタイム ウィンドウ違反または超過移動時間を一層削減または排除しようと試みます。
タイム ウィンドウ違反
タイム ウィンドウ違反: このプロパティを使用すると、違反を招くことなく、タイム ウィンドウの条件を満たす重要度を評価することができます。タイム ウィンドウ違反は、タイム ウィンドウが閉じてから訪問先、拠点、または休憩にルートが到着した場合に発生します。この超過時間は、タイム ウィンドウの終了からルートの到着時間までの時間です。
VRP ソリューションは、選択された [タイム ウィンドウ違反] プロパティの値に従って変化します。以下に各値の意味と、各値を設定した場合に VRP ソリューションがどのように変化するかを説明します。
高 - 全体の移動時間の増大を無視して、タイム ウィンドウ違反を最小にするソリューションを検索します。全体のソリューション コストを最小にするよりも訪問先に時間どおりに到着することが重要である場合は [高] を選択します。訪問先で顧客と打ち合わせをする予定があり、遅刻して先方に迷惑をかけたくないという場合に使用します (別のオプションとして、超過がまったく許されないハード タイム ウィンドウを使用することもできます)。
配車ルートの他の制約が指定されている場合、タイム ウィンドウの期間内に立ち寄ることができない訪問先が出てくると考えられます。この場合は、[高] 設定でも違反が発生することがあります。
中 - デフォルトの設定です。タイム ウィンドウの条件を満たすことと、全体のソリューション コストを削減することのバランスを取ります。
低 - タイム ウィンドウを無視して、全体の移動時間を最小にするソリューションを検索します。タイム ウィンドウの条件を満たすことが全体のソリューション コストを削減することより重要でない場合は [低] を選択します。未処理のサービス依頼が増えている場合は、この設定を使用すると便利です。保有車両の到着が遅れて顧客に迷惑をかけることになっても、1 日にサービスを提供する訪問先の数を増やして手持ちの注文をさばくために、[低] を選択することができます。
次の 2 つの図は両方とも同じ一連の訪問先と拠点です。ただし、[タイム ウィンドウ違反] の設定値が異なるのでルートは同じではありません。左側の図は、[タイム ウィンドウ違反] の重要度を [低] に設定した場合に得られるルートを示しています。ルートは短いものの、タイム ウィンドウ違反が発生しています。[高] に設定すると、ルートはすべてのタイム ウィンドウの条件を満たします。ただし、タイム ウィンドウを持つ訪問先にサービスを最初に提供するので距離が長くなります。
超過移動時間
このプロパティを使用すると、超過移動時間の短縮の重要度を評価することができます。超過移動時間とは、訪問先ペア間を直接移動するのに必要な時間に対する超過時間です。この超過時間は、訪問先ペアへの立ち寄りの途中で、休憩を取ったり他の訪問先や拠点に移動することで発生します。
VRP ソリューションは、選択された [超過移動時間] の値に従って変化します。以下に各値の意味と、各値を設定した場合に VRP ソリューションがどのように変化するかを説明します。
- 高 - 全体の移動コストの増大を無視して、訪問先ペア間で超過移動時間が短いソリューションを検索します。訪問先ペア間で人を輸送し、乗車時間を短くしたい場合、この設定を使用すると便利です。これはタクシー サービスの特徴を示します。
- 中 - デフォルトの設定です。超過移動時間を短縮することと、全体のソリューション コストを削減することのバランスを取ります。
- 低 - 超過移動時間を無視して、全体のソリューション コストを最小にするソリューションを検索します。この設定は一般に宅配サービスで使用されます。宅配業者は人ではなく荷物を輸送するため、乗車時間を考慮する必要はありません。宅配業者は [低] を使用することで、訪問先ペアに適切な順序でサービスを提供し、全体のソリューション コストを最小にすることができます。
次の 2 つの図は、両方とも同じ一連の訪問先と拠点です。ただし、[超過移動時間] の設定が異なるのでルートは同じではありません。左側の図は、[超過移動時間] の重要度を [低] に設定した場合に得られるルートを示しています。全体のルートは短いですが、第 1 の訪問先から、訪問先とペアになっている訪問先 (空港) までの移動時間は長くなっています。重要度を [高] に設定すると、ルートは第 1 の訪問先と空港との間の時間を短縮し、空港から右側の訪問先への乗車時間と同じ長さに維持しています。ただし、ルートの全体のコストは増大します。
[ネットワーク ロケーション] タブ
[ネットワーク ロケーション] タブのパラメーターは、ネットワーク ロケーションを検索して、それらのプロパティに値を設定するために使用されます。
配車ルート解析の実行および結果解釈
配車ルート解析レイヤーの作成、必要なネットワーク解析オブジェクトの取り込み、および適切な解析プロパティの設定を行った後で配車ルート解析レイヤーのソリューションを取得するには、[Network Analyst] ツールバーの [解析の実行] ボタン をクリックします。
解析の実行後に [出力形状のタイプ] プロパティを [正確な形状] に設定した場合は、ルートごとに開始拠点、訪問先、リニューアル拠点、および終了拠点を接続するネットワークに沿ってラインが描かれます。
[Network Analyst] ウィンドウではまた、[訪問先] クラスを更新し、すべての訪問先を、それらが割り当てられるルートごとにグループ化します。[拠点立ち寄り状況] クラスが更新され、ルートごとに起点、終点、およびリニューアル拠点を表示します。
解析時に、配車ルート解析では、[AssignmentRule] フィールドが [除外] に設定されたルートおよび [AssignmentRule] フィールドが [除外] に設定された訪問先を無視します。
配車ルート解析では次に、[時間属性] をインピーダンスとして、[距離属性](指定されている場合) を累積属性として使用し、訪問先ロケーションと拠点ロケーションのそれぞれの間で、内部で管理される起点/終点 (OD) コスト マトリックスを算出します。
配車ルート解析では、拠点、休憩、およびルート リニューアルといったネットワーク解析オブジェクトのいずれかがルートにあらかじめ割り当てられている場合、それらのオブジェクトで構成される初期ソリューションを作成します。この事前割り当てを使用して有効な初期ソリューションを検索できない場合 (つまり、規制に違反している場合)、解析プロセスはエラーになります。
ルート解析されない訪問先がある限り、配車ルート解析では、ルート解析されない最も経済的な訪問先を、互換性のある最適なルートに挿入しようとします。順序の再設定によりソリューションが向上する場合、解析機能はルートに割り当てられた訪問先の順序の再設定を試みます。ただし、[AssignmentRule] フィールドが [ルートと関連する順序を保持] に設定されている訪問先の関連する順序は対象外です。[AssignmentRule] フィールドが [最初にアンカー] または [最後にアンカー] に設定されている訪問先の場合、解析では、割り当てられているルート上でその訪問先が最初の訪問先または最後の訪問先であることが確認されます。
可能な訪問先のすべてが正常にルート解析されると、配車ルート解析では、ネットワーク解析オブジェクトの適切な出力フィールドに結果を出力します。ルート解析できない訪問先がある場合、訪問先フィーチャ レイヤーの [ViolatedConstraints] フィールドに制約違反が出力されます。ソリューションでルートが使用されていない場合、その出力フィールドは NULL に設定されます。
配車ルート解析の結果解釈
配車ルート解析レイヤーの解析が正常に実行された後、各ルートのルート解析ソリューションを統合するには、休憩テーブル、拠点立ち寄り状況フィーチャ レイヤー、訪問先フィーチャ レイヤー、およびルート フィーチャの入力および出力フィールドを参照します。各ルートについて、[RouteName] で検索を行い、[休憩]、[拠点立ち寄り状況]、および [訪問先] の順序値を確認すれば、ルートの道程が明らかになります。ルート案内を作成して同様の道程をコンパイルすることもできます。ルート フィーチャ レイヤーは、算出された各ルートのサマリーを提供します。