ある朝食用サンドイッチのスタートアップ企業は、サンフランシスコ一帯の独立系コーヒー ショップにサンドイッチを配達する、繁盛した企業に成長しました。 サンドイッチは独自のファンを獲得し、コーヒー ショップはダース単位でサンドイッチを注文します。 コーヒーが大量に注文される時間帯に間に合わせるため、サンドイッチ企業は午前 5 時から 7 時 30 分の間にコーヒー ショップにサンドイッチを配達する必要があります。このため、サンドイッチ企業と運転手たちは、このわずかなタイム ウィンドウ内にできるだけ効率的に配達を行う必要があります。
現時点では、運転手がすべての朝食用サンドイッチを輸送する際に空間的な問題は発生していないものの、数量が多い注文を配達する際に予定より遅れてしまっています。 配達のタイム ウィンドウは非常に重要であるため、この企業は配達量に基づいて配達時間をより適切に考慮したいと考えています。
注意:
このチュートリアルで使用するデータは架空で、上記のシナリオ例を解析する目的でのみ作成されています。データの取得
このチュートリアルのデータは、ダウンロードして使用できます。
- 「データ ダウンロード ページ」に移動します。
- [ダウンロード] ボタンをクリックしてファイルをローカルに保存します。
- ダウンロードしたファイルを展開します。
マップの作成
次の手順を実行すると、マップを作成できます。
- ArcGIS Pro を起動します。
- [マップ] テンプレートをクリックして、新しいプロジェクトを作成します。 必要に応じて、プロジェクトの名前と位置を変更します。
マップを含む新しいプロジェクトが表示されます。
プロジェクトへのチュートリアル データの追加
ネットワーク データセットは、道路システムの高機能なモデルです。 ネットワーク データセットには、道路の位置と属性だけでなく、どの道路が接続されているか、接続されている道路間のどのターンが許可または禁止されているかなどの、道路の相互関係に関する情報や、可能な移動パスや移動時間に影響する他の情報も含まれています。
注意:
ArcGIS Online を使用して解析する場合は、その解析で、ArcGIS Online クラウドに格納されている高品質な世界規模のネットワーク データセットが参照され、「ArcGIS Online クレジット」が使用されます。 また、自分のコンピューターのローカルに保存した独自のネットワーク データセットを使用するか、または ArcGIS Enterprise を使用して、独自のネットワーク データセットを使用するルート検索サービスを公開して Enterprise ポータルでサービスを構成し、ArcGIS Pro で利用することもできます。次の一連の手順で、ネットワーク データセットをマップに追加します。
- [カタログ] ウィンドウ (デフォルトではアプリケーションの右側にあります) で [フォルダー] を右クリックし、[フォルダー接続の追加] を選択します。
[フォルダー接続の追加] ダイアログ ボックスが表示されます。
- チュートリアル データを置いたフォルダーを参照して、[Network Analyst] をダブルクリックし、[Tutorial] をクリックしてこのフォルダーを選択します。
- [OK] をクリックします。
Tutorial フォルダーへの接続が作成されます。
- [カタログ] ウィンドウで、[フォルダー] > [Tutorial] > [SanFrancisco.gdb] > [Transportation] の順に展開します。
- [Streets_ND] (ネットワーク データセット アイコン が付いています) をマップにドラッグします。
ネットワーク データセットが [コンテンツ] ウィンドウとマップに追加されます。
- [コンテンツ] ウィンドウで、[Streets_ND] をオフにして、ベースマップだけを表示します。
次に、このフォルダーに含まれているネットワーク データセットをマップに追加します。
コーヒー ショップのジオコーディング
ここで、CoffeeShops.csv ファイルをジオコーディングして、顧客の場所のフィーチャクラスを作成します。 テーブルに場所の住所が含まれている場合、ジオコーディングを通じてマップ上に配置することができます。 住所は、テーブルの単一または複数のフィールドに指定することができます。
注意:
独自の道路データがあれば、そのデータを使用してロケーターを作成できます。データがない場合、Esri では ArcGIS World Geocoding Service を提供していますが、クレジットを消費します。
- [カタログ] ウィンドウで、チュートリアル データの場所を参照し、[SanFranciscoLocator.loc] を右クリックして、[プロジェクトに追加] をクリックします。
- [CoffeeShops.csv] を右クリックし、ショートカット メニューから [テーブルのジオコーディング] を選択します。
[テーブルのジオコーディング] ウィンドウが表示されます。
- [テーブルのジオコーディング] ウィンドウで、[開始] をクリックします。
- [入力ロケーター] ドロップダウン リストから、[SanFranciscoLocator] を選択します。
- [テーブルのジオコーディング] ウィンドウで、[次へ] をクリックします。
- [入力テーブル] が [CoffeeShops.csv] を指していることを確認し、ドロップダウン リストの [StreetAddress]、[City]、[Postal] フィールドに顧客の住所として [複数のフィールド] があることを確認し、[次へ] をクリックします。
- 住所フィールドを次のように割り当てます。
- [住所または場所] を StreetAddress に
- [都市] を City に
- [郵便番号] を Postal に
- [州] を State に
- [次へ] をクリックします。
[出力] はそのままにして、プロジェクト ワークスペースに保存します。
- [優先位置タイプ] で、ドロップダウン オプションから [ルート検索位置] を選択します。
このオプションは、屋上ではなく道路ネットワークの場所に配置されたフィーチャを配置します。 Network Analyst では、ポイントは最も近い道路のエッジに空間的に配置されます。 建物の中心が、車道にアクセスできる道路以外の道路に近接している場合もあります。
- [出力フィールド] を [すべて] に設定したまま、[次へ] をクリックします。
- [カテゴリ] で [住所] をオンにし、[完了] をクリックします。
- [実行] をクリックします。
処理が完了すると、再照合を行うかどうかを確認するメッセージが表示されます。
- すべての場所が正しく照合されたため、[いいえ] をクリックします。
- [テーブルのジオコーディング] ウィンドウを閉じます。
ラスト マイル デリバリー解析レイヤーの作成
ラスト マイル デリバリー解析は、最終顧客への荷物の配達に関連する配車ルートのサブセットに焦点を当てます。 ラスト マイル デリバリー解析では、1 か所の配送センターがあり、この配送センターから配達車両が配車され、顧客の場所に立ち寄ります。 このレイヤーでは、顧客、ルートの開始地点と終了地点、車両、運転手に関する情報を追加することができます。 情報を収集するための複数のフィーチャクラスおよびテーブルがあります。 また、[ラスト マイル デリバリー レイヤー] タブでアクセスできる複数のパラメーターがあり、解析が正しい日付に対して行われ、正しい単位と車両の移動情報が使用されていることを確認できます。
ラスト マイル デリバリー解析レイヤーを作成するには、次の手順を実行します。
- [解析] タブの [ワークフロー] グループで、[ネットワーク解析] > [ラスト マイル デリバリー] の順にクリックします。
[コンテンツ] ウィンドウにラスト マイル デリバリー解析レイヤーが追加されます。 このレイヤーには、解析の入力と出力を格納するいくつかのサブレイヤーが含まれます。
ラスト マイル デリバリー レイヤーの作成時にサンフランシスコ ネットワークが [コンテンツ] ウィンドウ内にあったため、このレイヤーはサンフランシスコ ネットワーク データセットを参照しています。
注意:
ネットワーク解析レイヤーの作成に使用されるネットワーク データ ソースを確認または変更するには、[解析] タブの [ワークフロー] グループで、[ネットワーク解析] ドロップダウン メニューをクリックして、[ネットワーク データ ソース] を表示します。
訪問先の追加
訪問先を使用して、顧客に関する情報を指定します。 各訪問先には、運転手がその場所に滞在することが想定される時間、配達または引き取りを行うアイテムの数量、予約時間などの情報を含めることができます。
訪問先を追加するには、次の手順に従います。
- タブを有効にするには、[コンテンツ] ウィンドウで [ラスト マイル デリバリー] レイヤーを選択します。
- [ラスト マイル デリバリー レイヤー] タブをクリックし、[入力データ] セクションで [訪問先のインポート] ボタン をクリックします。
[ロケーションの追加] ダイアログ ボックスが表示されます。
- [入力位置] で [CoffeeShops_Geocoded] を選択します。
- [フィールド マッピング] で、[プロパティ] セクションから [名前] を選択します。
- [フィールド名] ドロップダウン リストから、リストの最下部近くにある [USER_Name] を選択します。
ラスト マイル デリバリー解析では、各訪問先に一意の名前が必要です。 配達リスト上のすべてのコーヒー ショップには一意の名前が設定されているため、コーヒーショップ名 ([USER_Name] フィールド) は訪問先サブレイヤーの Name フィールドにマッピングされます。
- 次の追加プロパティを DeliveryQuantity_1 > USER_DozensOfBreakfastSandwiches としてマッピングします。
サンドイッチ ショップでは、サンドイッチをダース単位で配達しています。 各店舗に配達される数量は USER_DozensOfBreakfastSandwiches フィールドで追跡されるため、DeliveryQuantity_1 フィールドにマッピングされ、ラスト マイル デリバリー解析で各場所に配達されるサンドイッチのダース数を追跡できるようになります。
- [プロパティ] セクションから [CurbApproach] を選択し、[デフォルト値] ドロップダウン リストから [車両の右側] を選択します。
[CurbApproach] フィールドは、車両がサービスを提供する際に、その場所が道路の右側または左側のどちらにある必要があるかを指定します。 これらのルートはサンフランシスコにあり、車両は道路の右側を走行するため、[CurbApproach] を車両の右側に設定することで、配達バンはコーヒー ショップの横の縁石に駐車されるようになります。これにより、運転手は道路を横断する必要がなくなります。
- [OK] をクリックします。
コーヒー ショップが訪問先サブレイヤーに追加されます。
ジオコーディング プロセスにより、CoffeeShops_Geocoded フィーチャクラスの Name フィールドが訪問先サブレイヤーの Name フィールドに対して長すぎるようになったことを示す警告メッセージが表示されます。 名前が長すぎたわけではないため、警告メッセージ ウィンドウを閉じます。
- [コンテンツ] ウィンドウで、[訪問先] サブレイヤーを右クリックして [属性テーブル] を選択します。
- 属性テーブルで [ServiceTime] フィールドを右クリックし、[フィールド演算] を選択します。
[フィールド演算] ダイアログ ボックスが表示されます。
- [ServiceTime] の値を「BasedOnQuantity(!DeliveryQuantity_1!)」に設定します。
- [コード ブロック] に以下を使用します。
- チェック マークをクリックして、その条件式を確認します。
- [OK] をクリックします。
これで、ServiceTime フィールドに適切な値が設定されました。
- 属性テーブルを閉じます。
def BasedOnQuantity(quantity):
if quantity == 1:
time = 3
elif quantity == 2:
time = 4
elif quantity == 3:
time = 5
else:
time = 6
return time
サンドイッチ ショップの場所を拠点サブレイヤーに追加
拠点は、ルートにおけるその日の開始地点と終了地点です。 すべてのルートは同じ場所で開始および終了する必要があります。 この解析では、サンドイッチ ショップが拠点として使用されます。 顧客データと同様に、サンドイッチ ショップの住所もジオコーディングできます。 ただし、これは単一の住所であるため、代わりに [場所検索] ウィンドウを使用して住所をジオコーディングし、拠点サブレイヤーに追加します。
注意:
[フィーチャクラスに追加] オプションを ArcGIS World Geocoding Service で使用すると、クレジットが消費されます。 提供されたロケーターを使用しても、クレジットは消費されません。
サンドイッチ ショップの場所を追加するには、次の手順を実行します。
- [マップ] タブをクリックし、[照会] グループで [場所検索] ボタン をクリックします。
[場所検索] ウィンドウが表示されます。
- 検索ボックスの横にある [オプション] ドロップダウン矢印をクリックします。
- [SanFranciscoLocator] をオンにします。
- 検索テキスト ボックスにサンドイッチ ショップの住所である「50 Southdale Ave. Daly City, CA 94015」を入力し、Enter キーを押します。
- [場所検索] ウィンドウでオプション [A] を右クリックし、[フィーチャクラスに追加] を選択します。
[フィーチャクラスに追加] ウィンドウが表示され、アドレスを追加するフィーチャクラスを選択できます。
- [ラスト マイル デリバリー: 拠点] を展開し、[拠点] テンプレートを選択して、[OK] をクリックします。
- [コンテンツ] ウィンドウで、[拠点] サブレイヤーを右クリックして [属性テーブル] を選択します。
属性テーブルに、サンドイッチ ショップの 1 か所のみの場所を表す行が追加されました。 サンドイッチ ショップの完全な住所が拠点の名前として含まれています。
- 属性テーブルを閉じます。
- [編集] タブで選択を解除し、編集内容を保存します。
- [場所検索] ウィンドウを閉じます。
ルート サブレイヤーへの情報の追加
ルートには、車両と運転手の両方の情報が含まれています。 運転手の就業時間 (就業を開始する時刻、作業できる時間など) に関する情報を含めることができます。 最大容量や運用コストなどの車両情報も含めることができます。
注文を 173 軒のコーヒー ショップに効率よく配達するには、ルートを追加する際に次のパラメーターを設定します。 173 軒のコーヒー ショップにサービスを提供するルートの数、ルートの開始地点と終了地点 (サンドイッチ ショップの場所)、ルートを開始できる最も早い時刻 (配達タイム ウィンドウは午前 5 時から午前 7 時 30 分)、トラックの最大容量、ルートで移動できる最大合計時間、および運転手の時給を指定します。
ルート サブレイヤーにルートとその他の情報を追加するには、次の手順を実行します。
- [コンテンツ] ウィンドウで、[ラスト マイル デリバリー] グループ レイヤー名を右クリックし、[レイヤーにズーム] を選択して、レイヤー全体が表示されるまで縮小します。
- [ラスト マイル デリバリー レイヤー] タブに戻ります。
- [入力データ] グループで、[ルートのインポート] ドロップダウン リストをクリックして [ルートの追加] を選択します。
[配車ルート (VRP) ルートの追加] ダイアログ ボックスが表示されます。
- 次の値を設定します。
- [ルートの数] - 12
サンドイッチ ショップには 12 台の配達車両があるため、この台数が配達可能なルートの数になります。
- [開始拠点名] - 50 Southdale Ave. Daly City, CA 94015
ルートはサンドイッチ ショップで開始および終了する必要があるため、[開始拠点名] と [終了拠点名] の値は両方ともサンドイッチ ショップの住所になります。
ドロップダウン リストから [開始拠点名] を選択でき、その値は拠点サブレイヤーの Name フィールドの値と一致する必要があります。
- [終了拠点名] - 50 Southdale Ave. Daly City, CA 94015
ドロップダウン リストから [終了拠点名] を選択でき、その値は拠点サブレイヤーの Name フィールドの値と一致する必要があります。
- [ルート最早開始時刻] - 5:00 am
朝の大量注文に間に合わせるには、ルートを午前 5 時に開始してコーヒー ショップに朝食用サンドイッチを届ける必要があります。
- [Capacity_1] - 150
各車両には、最大 150 ダースの朝食用サンドイッチを積み込むことができます。 [Capacity_1] で使用される単位 (この場合、サンドイッチのダース) が [DeliveryQuantity_1] の単位と一致していることが重要です。
- [最大合計時間] - 150
ルートを午前 7 時 30 分までに終了してサンドイッチ ショップに戻る必要があります。このため、運転手は 2.5 時間でルートを完了する必要があります。 この解析のモデル化に使用されている時間フィールドの単位は分であるため、[最大合計時間] には 150 分と入力する必要があります。
- [単位時間ごとのコスト] - 0.5
運転手の時給は 30 ドルですが、この解析のモデル化には分が使用されているため、1 分あたり 0.5 ドルに相当します。
- [ルートの数] - 12
- [OK] をクリックして、このツールを実行します。
ルート サブレイヤーに 12 個のルートが追加されます。
ゾーンの追加
運転手を町で優先度の高い地域に留めるには、ゾーンを追加します。
- [ラスト マイル デリバリー レイヤー] タブの [入力データ] セクションで、[フィーチャ作成] ボタン をクリックします。
- [フィーチャ作成] ウィンドウで、[ゾーン] テンプレートを選択します。
- ゴールデン ゲート パークとサン ミゲル ヒルズの南北を分断するように 2 つのポリゴンを描画します。 ゾーンは、以下の画像のようになります。
- [コンテンツ] ウィンドウで、[ゾーン] を右クリックして、[属性テーブル] を選択します。
- ゴールデン ゲート パークとサン ミゲル ヒルズの南側のポリゴンで、Name フィールドの値を「South」に変更します。
- ゴールデン ゲート パークとサン ミゲル ヒルズの北側のポリゴンで、Name フィールドの値を「North」に変更します。
- ルート属性テーブルを開き、ZoneName フィールドおよび IsHardZone フィールドまで右にスクロールします。
- IsHardZone フィールドを右クリックして、[フィールド演算] をクリックします。
[フィールド演算] ダイアログ ボックスが表示されます。
- [IsHardZone] の値を「True」に設定します。
この設定は、ルートが指定したゾーン内の訪問先にのみ配達できるように定義します。
- 属性テーブルで最初の 3 行を選択し、ZoneName フィールドを右クリックして、[フィールド演算] をクリックします。
[フィールド演算] ダイアログ ボックスが表示されます。
- [ZoneName] の値を「South」に設定します。
これにより、南側のゾーンのみで訪問先に配達できる最初の 3 つのルートに対して制限が設定されます。
- 属性テーブルの行選択を切り替え、[フィールド演算] を使用して、残りの 9 つのルートで [ZoneName] の値を「North」に設定します。
これにより、北側のゾーンのみで訪問先に配達できる残りの 9 つのルートに対して制限が設定されます。
- 選択を解除し、編集内容を保存します。
- 属性テーブルを閉じます。
日付の設定と解析の実行
ここで、ルートを開始する日付を設定します。 各ルートには、前のセクションで [配車ルート (VRP) ルートの追加 (Add Vehicle Routing Problem Routes)] ツールを使用してルートを追加したときの時間が設定されているため、時間を設定する必要はありません。
- [ラスト マイル デリバリー レイヤー] リボンの [日時] セクションで、[デフォルトの日付] ドロップダウン矢印をクリックし、日付を「03/14/2024」に設定します。
- [解析] グループで [実行] をクリックします。
ラスト マイル デリバリー レイヤーの解析が行われます。 訪問先がルートに割り当てられ、シンボルが更新され、ルートと割り当てられた訪問先が一致した色で表示されます。
- [コンテンツ] ウィンドウで、[ルート] サブレイヤーを右クリックして [属性テーブル] を選択します。
- OrderCount 出力フィールドまでテーブルを右にスクロールします。