顧客マスター
SWATモデルは、ロケーションマスターの同期、保存、管理、および受信予約への自動ハイドレーションをサポートしています。ロケー ションマスターの目的は、座標、タイムウィンドウ、およびその他のロケーションマスター関連情報の保存に関する消費側アプリケーションの負担を軽減することです。アップロード時に、予約のbooking.pickup_operations_locationまたはbooking.pickup_operations_locationに値が設定されている場合、対応するロケーションからの情報が予約に自動的に追加されます。これには以下が含まれます:
- 緯度と経度
- 名前
- タイムウィンドウ
- サービス時間
- その他の制約(例:車両タイプ)
ロケーションマスターは、次の3つのエンティティで表されます:
- オペレーションロケーション
- オペレーションロケーションタイムウィンドウ
- オペレーションロケーショングループ
ロケーションマスターは処理パイプラインに統合されており、アップロード時に予約/注文でロケーションマスターオブジェクトを参照できます。
計算パラメータ
OperationsLocation !apiとOperationsLocationGroup !apiの両モデルは、calculation_paramsオブジェクトをサポートしています。このオブジェクトを使用すると、予約がそのロケーションまたはそのグループのロケーションを参 照するときに自動的に適用される特定の最適化パラメータを定義できます。
これらのパラメータは、次のような現実世界の制約や運用上の詳細をモデル化するために使用されます:
- 施設(倉庫、安全な複合施設など)への出入りに必要な時間。
- ロケーションのサービスキャパシティ(一度に何台の車両を積み込めるかなど)。
- 商品の種類と数量に基づく動的なサービス時間。
複合ゾーンと累積制限との関係
calculation_paramsオブジェクトは、ロケーションレベルで複合ゾーンと累積制限の概念を実装する便利な方法を提供します。
-
enter_time&exit_time: これらのフィールドは、直接複合ゾーンを作成します。車両のルートにこれらのパラメータが設定されたロケーションが含まれている場合、指定された時間がロケーションへの出入りに対するペナルティとして追加されます。これは、倉庫のドッキング時間やセキュリティゲートのクリアランスをモデル化するのに理想的です。 -
cumulative_limitations: このフィールドは、1時間あたりに派遣できる最大車両数など、ロケーションのサービスキャパシティをモデル化します。ピックアップポイントとして使用される場合、その特定のロケーションに対して累積制限制約を直接実装します。 -
service_time&coefficients: これらのフィールドにより、高度なサービス時間計算が可能になります。注文ごとのfixedサービス時間を設定し、booking.product_kindとそのdemandに基づいて動的なコンポーネントを追加できます。これらのパラメータを持つオペレーションロケーションで予約が処理されると、合計サービス時間は次のように計算されます:
合計サービス時間=service_time.fixed+ (booking.demand.cbcm*coefficients[product_kind].cbcm) + (booking.demand.weight*coefficients[product_kind].weight) + ...coefficientsオブジェクトには、booking.product_kindに一致するキーが含まれています。各product_kindキーには、キーが需要タイプ(cbcm、weightなど)に一致し、値がその需要の乗数である別のオブジェクトが含まれています。たとえば、次のような
calculation_paramsオブジェクトがあるとします:"calculation_params": {
"service_time": { "fixed": 300 },
"coefficients": { "AMBIENT": { "cbcm": 0.000018, "weight": 0.01 } }
}そして、
product_kind: "AMBIENT"とdemand: { "cbcm": 500000, "weight": 100 }を持つ予約がある場合、サービス時間は次のようになります:300 + (500000 * 0.000018) + (100 * 0.01) = 300 + 9 + 1 = 310秒。
継承とグループ化ロジック
パラメータは、OperationsLocationGroup(エリア)レベルと個々のOperationsLocationレベルの両方で設定できます。
- 個々の
OperationsLocationにcalculation_paramsが設定されていない場合、それらが属するOperationsLocationGroupから継承されます。 - 両方のレベルで設定されている場合、個々の
OperationsLocationの設定が優先されます。
enter_timeまたはexit_timeがOperationsLocationGroupレベルで設定されている場合、そのグループに属するすべてのロケーションは単一の複合ゾーンとして扱われます。これは、出入り時間のペナルティが、車両のルート内の各個別のロケーションではなく、ロケーションのグループ全体に対して一度だけ適用されることを意味します。
各ロケーションに個別に出入り時間を適用する必要がある場合は、これらのパラメータを各OperationsLocationオブジェクトで個別に定義する必要があります。
また、enter_timeまたはexit_timeの少なくとも1つの値が設定されている場合、両方ともnullであってはならず、そうでない場合は両方ともnullでなければならないことに注意してください。
cumulative_limitationsとservice_timeについては、ロケーションレベルで明示的に定義されていない場合、値はグループから単純に継承されます。
calculation_paramsを活用することで、運用ロケーションの豊富で正確なモデルを構築でき、予約作成プロセスを簡素化し、最適化エンジンが現実世界の制約を尊重することを保証します。