メインコンテンツまでスキップ

Logistics API 設定 (Logistics API Settings)

simulation.data.logistics_api_settings オブジェクトを使用すると、Stateful API を使用してシミュレーションを実行する際の最適化プロセスを微調整できます。これらの設定は、ソルバー、モデル制約、および計算動作のさまざまな側面を制御します。

フィールド名は完全一致で、未知のキーは破棄されます

このオブジェクトは固定されたスキーマとして解析されます。以下のパラメータに含まれないキーは警告もエラーもなく無視され、既定値のまま実行が進みます。そのため、綴り間違いや、最適化 (Stateless) API から借用した名前は、「設定したのに効かないパラメータ」として現れます。

いくつかのパラメータは、最終的に渡されるソルバーリクエストとは意図的に異なる名前になっています。algo_optimize_quantitymodel_parameters.optimize_quantity に、vehicle_costmodel_parameters.vehicle_costs に、first_solution_strategiessolver_parameters.first_solution_strategy になります。このページの表にある名前を使用してください。

以下の既定値はいずれも初期状態の値です。ほとんどはデプロイごとに設定可能な環境変数であるため、実際のインストール環境では異なる値から始まる場合があります。既定値は目安として扱い、運用が依存する項目は明示的に設定してください。

一般設定 (General Settings)

これらの設定は、ロジスティクスシミュレーション構成に直接適用されます。

パラメータタイプ説明デフォルト
pipeline_typestring計算パイプラインを定義します。simple_one_stage: 単一のステートレス API 呼び出し。two_stages: 推定とそれに続く正確な計算。simple_one_stage
first_solution_strategiesarray最適化実行を実行するために同時に使用される初期解戦略(整数)のリスト。先頭の要素がソルバー側の solver_parameters.first_solution_strategy になります。[0]
only_pdpbooleantrue の場合、ピックアップおよびドロップオフ問題 (PDP) モードのみを使用します。false の場合、CVRPTW をデフォルトとします。false
trip_costnumber各トリップに割り当てられるコスト。トリップコスト を参照してください。0
max_pickup_slackintegerピックアップノードの最大許容スラック時間(秒単位)。-
max_dropoff_slackintegerドロップオフノードの最大許容スラック時間(秒単位)。-
use_path_equalizerbooleanパスイコライザーを有効にして、車両間で割り当てをより均等に分散します。-
path_equalizer_weightintegerパスイコライザー目的の重み。100
average_travel_duration_to_nodeintegerノードへの推定平均移動時間(秒単位)。1200
allow_upload_after_simulation_start_timebooleantrue の場合、シミュレーション開始後の予約更新(例:ライブ挿入)を許可します。false
booking_data_pipeline_filtersarrayソルバーに渡す前に、受け取った予約へ順に適用されるフィルタ規則のリストです。各規則は booking.data のフィールドを対象とし、equalsnot_equalscontainsnot_containsinnot_inis_nullis_not_null の操作をサポートします。value は Django テンプレート構文(例: {{ simulation.start_time|date:'Y-m-d' }})に対応しており、シミュレーションのプロパティに基づく動的なフィルタが書けます。すべての規則が順に適用され、そのすべてに一致した予約のみがソルバーに渡されます。[]
should_set_max_slack_start_location_zeroboolean開始場所の最大スラックをゼロに設定するかどうか。-
stateless_api_serverstringシミュレーションに使用するカスタムステートレス API サーバーの URL。-
should_lock_next_stop_if_vehicle_liveboolean再最適化中のドライバーの混乱を防ぐために、ライブ車両の次の停止をロックします。true
should_optimize_fail_to_board_bookingsbooleantrue の場合、ピックアップに失敗した注文を最適化の試みに含めます。true
truckban_enabledbooleanトラック禁止制約を有効または無効にします。-
truckban_buffer_time_windowsintegerトラック禁止の時間枠を調整する際のバッファ時間(秒単位)。-
slack_costnumber実行対象のノードをスラック課金対象として指定し、そのノードでの待機時間を目的関数に反映させます。サポートされる値は 01 のみで、スラックを課金するかどうかを選ぶフィールドです。実際の単価は slack_cost_factor で設定します。これは legacy パスの仕組みです。path_constraints_modelogistics の場合、ソルバーは各車両の logistics_optimize_slack からスラックコストを取得し、このフィールドは無視されます。null
logistics_optimize_slackbooleantrue の場合、ソルバーはロジスティクスモードでスラックを最適化します。-
path_constraints_modestringパス制約のモード。-
node_grouping_enabledbooleanノードグループ化ロジックをアクティブにします。-
clear_cumulative_limitationsbooleantrue に設定すると、累積制限をクリアします。-
max_departures_per_hournumber1 時間あたりに運行拠点を出発できる車両数の上限を、拠点ごとの cumulative_limitation ではなくシミュレーション全体の単一設定として指定します。値 N は、すべてのピックアップノードと vehicle_position ノードを対象とする 1 件の累積制限(max_cumulative_vehicles1depot_service_time3600 / N)に変換されます。同時に 1 台のみを扱うため、3600 / N 秒ごとに 1 台が出発します。未設定または 0 の場合、制限は適用されません。拠点ごとの cumulative_limitation との併用はできず、両方を設定した実行は拒否されます。適用対象は最適化の実行のみで、手動編集の再計算に累積制限が渡されることはありません。倉庫のキャパシティ制限 を参照してください。null
cumulative_limitations_modestring拠点の時間枠(スロット)割り当てを経路計算と同時に解くか(local_search)、経路計算の後に別のパスで解くか(postprocessing)を指定します。デフォルトはデプロイごとに設定され、現在は postprocessing です。これは最適化 (Stateless) API 自体のデフォルトである local_search とは異なります。累積制限が適用されない場合は効果がありません。拠点スロットの割り当てタイミングの制御 を参照してください。postprocessing
manual_edit_api_minimize_slackboolean手動編集 API 操作中にスラックを最小化しようとします。-
manual_edit_allow_vehicle_lateboolean手動編集中に車両の遅延を許可します。true
manual_edit_lateness_penalty_coefficientinteger手動編集における遅延のペナルティ係数。10
cvb_fleetmin_time_limitintegerCVB フリート最小化の時間制限。600
cvb_fleetmin_solutions_limitintegerCVB フリート最小化のソリューション制限。-
cvb_fleetmin_iterations_limitintegerCVB フリート最小化の反復制限。-
use_cvb_local_search_operatorbooleanCVB ローカル検索演算子を使用します。-
cvb_local_search_iterations_limitintegerCVB ローカル検索の反復制限。-
geofence_definition_strategyobjectジオフェンスを定義するための戦略。-
geofence_vehicle_allocation_strategyobject車両をジオフェンスに割り当てるための戦略 (STRICT または FLEXIBLE)。-
stateless_api_loginstringカスタムステートレス API サーバーのログイン。-
stateless_api_passwordstringカスタムステートレス API サーバーのパスワード。-
truckban_strategyobjectトラック禁止を処理するための戦略。-
booking_order_prioritizationobject予約注文の優先順位付けのための構成。-
node_grouping_capacity_strategyobjectノードグループ化容量要件の戦略。-
assigned_node_grouping_enabledbooleannode_grouping_enabled によるグループ化を、すでに車両に割り当て済みのノードにも拡張します。これにより、新規の注文を車両がすでに保持している停車地とグループ化できます。node_grouping_enabledtrue でない場合は効果がありません。また PDP の実行時のみ適用され、CVRPTW の経路で割り当て済みノードがグループ化されることはありません。false の場合、グループ化は未割り当てのノードのみを対象とします。false
manual_edit_api_vehicle_logistics_optimize_slackboolean手動編集 API がスラックを最適化するかどうか。-
manual_edit_api_use_vehicle_start_timeboolean手動編集に車両開始時間を使用します。-
manual_edit_api_solver_kindstring手動編集 API のソルバーの種類(デフォルト:LOCAL)。LOCAL
manual_edit_finalization_type_pickupsstring手動編集におけるピックアップノードの確定タイプ。-
manual_edit_finalization_type_dropoffsstring手動編集におけるドロップオフノードの確定タイプ。-
manual_edit_max_possible_latenessinteger手動編集における最大可能な遅延。-
manual_edit_optimize_quantitystring手動編集の最適化数量。-
manual_edit_slack_cost_factornumber手動編集のスラックコスト係数。-
manual_edit_allow_cvrptw_conversionbooleanシミュレーションでの手動編集中に CVRPTW モードと注文グループ化を有効にします。アクティブな場合、手動計画アクションは CVRPTW の実現可能性(同じピックアップ場所と時間枠)の最適化チェックをトリガーします。実現可能な場合、複数の注文が単一のノードに変換されます。同様に、重複する時間枠を持つ同じ場所でのドロップオフは、単一のアクションに統合されます(容量制約を無視)。これにより、トリップに単一のピックアップと統合されたドロップオフが含まれ、トリップごとに各場所を1回だけ訪問するようにすることで、手動計画が合理化されます。false
manual_edit_try_strict_time_windows_requestboolean時間枠の制約を緩める前に、手動編集中に時間枠を厳密に強制しようとします。manual_edit_allow_vehicle_latetrue に設定して組み合わせて使用する必要があります。false
manual_edit_td_postprocessing_no_offer_if_time_windowbooleanpostprocessing_no_offer_if_time_window の手動編集 API 版で、同 API 自体が行う時間依存の再計算パスを制御します。true の場合、再計算後の到着時刻が予約の close_time_ts を超えると、その予約は時間枠に違反した状態で経路に残されるのではなく割り当て解除されます。ノードは NEW に戻り、scheduled_tsbreak_info はクリアされ、予約はレスポンスの details.rejected_bookings に報告されます。効果があるのは vehicle_assign_booking_listshift_nodes_time_windows の 2 つのアクションのみです。他のアクションも経路の再計算は行いますが、違反が見つかっても除外は行いません。tdroute_postprocessing_enabled が必要です。false
route_cost_modification_primaryobjectプライマリルートエンジンのルートコスト変更。-
route_cost_modification_secondaryobjectセカンダリルートエンジンのルートコスト変更。-
finalization_type_pickupsstringピックアップのデフォルトの確定タイプを上書きします。min または max にすることができます。min
finalization_type_dropoffsstringドロップオフのデフォルトの確定タイプを上書きします。min または max にすることができます。min
enable_time_windows_adjustmentbooleanoperations_locations から生成されたノードの時間枠調整を有効にします。これにより、場所の設定の open_ts_offset および close_ts_offset 値を使用してノードの時間枠を変更できます。false
time_windows_adjustment_strategystring時間枠調整の戦略を定義します。現在、サポートされている唯一の値は DROPOFF_FIXED_CLOSE_TS_OFFSET です。この戦略では、close_ts_offset(秒)がノードの元の終了時間から減算され、開始時間より前にならないようにします:new_close_time = max(original_open_time, original_close_time - close_ts_offset)open_ts_offset は現在この戦略では使用されていません。現時点では open_ts の変更はサポートされていません。DROPOFF_FIXED_CLOSE_TS_OFFSET
logistics_break_info_handling_enabledbooleanドライバー休憩の扱いを制御するマスタースイッチで、最適化パイプラインと手動編集 API の両方に効きます。無効の間はどの車両の動的休憩パラメータもソルバーに渡らないため、最適化実行では休憩が一切計画されず、calculate_break_start_times も無効になるため break_start_ts は返りません。手動編集も休憩を再計算・保持せず、変更対象のノードから break_info を削除します。省略または null の場合は、固定の false ではなくデプロイごとの既定値に従います。ドライバー休憩 を参照してください。デプロイの既定値(有効化されていなければ無効)
manual_edit_keep_assigned_nodes_relative_orderbooleantrue の場合、手動編集中も既に割り当て済みのノードの相対的な順序を厳密に保持します。進行中のルートの並びを崩さずに新しい注文を挿入したい場合に有用です。-
enable_pickup_reassignmentboolean割り当て済みのピックアップノードを別の車両へ移動することを最適化に許可します。無効の場合、既存のピックアップ割り当ては固定として扱われます。false
enable_inventory_trackingboolean実行全体で在庫拠点の在庫量を追跡し、すべてのピックアップが可能である前提を置かずに、実際に積める量に沿った計画を立てます。false

ソルバーパラメータ (Solver Parameters)

これらのパラメータは、基礎となる VRP ソルバーの動作を制御します。通常、専門家がパフォーマンスを調整するために使用します。

パラメータタイプ説明デフォルト
algorithmstringソルバーアルゴリズム:static(デフォルト)または dynamic(リアルタイム/オンデマンド用)。static
solution_limitnumber検索中に生成するソリューションの最大数。100000000
time_limit_msnumber検索に許可される最大時間(ミリ秒単位)。既定値は実質無制限ではなく 30 秒です。大規模な実行では意図的に引き上げるか、auto_calculate_time_limit_enabled で問題の規模から算出させてください。30000
use_local_search_metaheuristicbooleanローカル検索メタヒューリスティクスを有効にします。false
guided_local_search_lambda_coefficientnumberガイド付きローカル検索手順のパラメータ。0.1
use_tsp_optboolean巡回セールスマン問題 (TSP) の最適化を有効にします。false
log_searchboolean検索ログを有効にします。false
lns_time_limit_msnumber大規模近傍探索 (LNS) 完了検索の時間制限。1000
savings_neighbors_rationumber貯蓄近傍の比率。1.0
waypoints_optimization_second_phasebooleanprebook モードのウェイポイント最適化の第2フェーズを有効にします。false
optimization_stepnumberローカル検索の最小改善ステップ。1
use_all_local_search_operatorsboolean利用可能なすべてのローカル検索演算子を使用します。false
use_depth_first_searchbooleanローカル検索の代わりに深さ優先検索を使用します。false
auto_calculate_time_limit_enabledbooleanソルバー時間制限の自動計算を有効または無効にします。null
auto_calculate_time_limit_paramsobjectソルバー時間制限の自動計算のためのパラメータ。詳細については ソルバー時間の自動計算 を参照してください。null
first_solution_strategies_second_stagearray2 段階実行(pipeline_typetwo_stages)における第 2 段階の初期解戦略です。未設定の場合は第 1 段階と同じ戦略を使用します。null
time_limit_ms_second_stagenumber2 段階実行(pipeline_typetwo_stages)における第 2 段階の探索時間の上限です。単一段階のパイプラインでは効果がありません。30000
total_to_furthest_distance_rationumber車両の総移動距離と、その車両が訪問する最遠ノードまでの距離との比率に対するハード制約です。放射方向から大きく外れて迂回する経路を除外します。距離比率制約 を参照してください。null
use_local_search_operatorsarray有効にするローカル検索演算子を名前で指定します。すべてか無しかではなく、探索を細かく調整したい場合に使います。各要素はソルバーが認識する演算子名である必要があり、未知の名前はバリデーションエラーになります。空のリストの場合、選択はソルバーに委ねられます。[]
waypoints_solution_limitnumberウェイポイント最適化フェーズが生成できるソリューション数の上限で、このフェーズが探索予算のどれだけを使うかを制限します。1000

モデルパラメータ (Model Parameters)

これらのパラメータは、シミュレーションモデルの一般的なメタデータと制約を定義します。

パラメータタイプ説明デフォルト
vehicle_costnumber車両自身の vehicle_cost に対するフリート全体の既定値です。ソルバーが使用する車両 1 台ごとに一度加算される固定コストで、自身で値を持たないすべての車両に適用されます。値を大きくすると追加の車両の使用が抑制されます。ソルバーには model_parameters.vehicle_costs として渡されます。車両コスト を参照してください。1000
booking_penaltynumber訪問をドロップした(未提供の予約)場合のペナルティ。目的関数に追加されます。1000
use_walking_time_to_reduce_time_windowsboolean時間枠を調整するために徒歩時間を使用します。false
algo_optimize_quantitystring最適化の目標:total_time または total_distance。ソルバーには model_parameters.optimize_quantity として渡されますが、ここで読み取られる設定名は algo_ 付きのものだけです。total_time
use_lifo_order_checkbooleanLIFO(後入れ先出し)注文制約を有効にします。false
lifo_order_check_on_all_vehiclesbooleanLIFO チェックをすべての車両に適用します。true
group_crossing_penaltynumber厳密に排他的ではないグループを横断する場合のペナルティ。-
strictly_exclusive_groupsarray同じ車両に混載できないグループのリスト。-
mutually_exclusive_groupsarray相互に排他的なグループペアのリスト(ソフトまたはハード制約)。-
compound_zonesarray入退室時間ペナルティのあるゾーンの定義。-
cumulative_limitationsarrayデポで同時にサービスを受ける車両数の制限。-
slack_cost_factornumberスラック(待機)時間の量に比例して適用されるペナルティ係数です。ノードごとの固定コストである slack_cost に対して、こちらは待機量に応じて増減します。注意: path_constraints_modelogistics に設定する必要があります。-
cluster_costobject車両の訪問先がどれだけ地理的に散らばっているかに基づくペナルティを加え、車両ごとに密集したクラスタを選ぶよう促します。coord_scale(座標から距離への換算係数、既定 0.001)、factor(全体の重み。自身の cluster_cost_factor を持たない車両に適用)、および測定対象から拠点などの固定地点を除外する ignore_nodes / ignore_node_types / ignore_latlons を受け取ります。null
use_working_hours_equalizerboolean労働時間イコライザーを有効にします。訪問件数ではなく、車両間の総トリップ時間(労働時間)を均等化します。working_hours_equalizer_weight と合わせてソルバー側の単一の working_hours_equalizer 係数へ変換されるため、これが false の間は重みは効きません。イコライザー を参照してください。false
working_hours_equalizer_weightinteger労働時間イコライザーのコスト係数で、同じ目的関数の中で移動コストと競合します。use_working_hours_equalizertrue でない場合は無視され、車両が 1 台のみの実行でもソルバー側で無視されます。100

計算パラメータ (Calculation Parameters)

これらのパラメータは、計算の実行方法と制約の処理方法を制御します。

パラメータタイプ説明デフォルト
allow_vehicle_latebooleanルートを改善するために、時間制約を緩和して遅延到着を許可します。false
vehicle_late_penalty_coefficientintegerallow_vehicle_late が true の場合の遅延のペナルティの重み。-
max_possible_latenessinteger最大許容遅延(秒単位)。null
tdroute_postprocessing_enabledbooleanソルバーの実行後に、時間依存の移動時間に基づいて経路の時刻を再計算する後処理を実行し、scheduled_tsestimated_earliest_arrival_tsslack を精緻化します。最適化パイプラインと、経路の時刻を再計算するすべての手動編集の両方に適用されます。OSRME ルーティングエンジンでのみサポートされ、それ以外のエンジンの経路は変更されません。また fail-open であり、ルーティングエンジンでエラーが発生した場合はログに記録され、ソルバーが算出した時刻がそのまま維持されます。注意: この後処理は再計算した各ノードの break_info も書き換え、独自の累積クロック上でドライバー休憩を計画します。dynamic_break_durationdynamic_break_avg_time_between_breaks両方が設定されていない車両では、記録済みの休憩計画が消去されます。ドライバー休憩 を参照してください。false
postprocessing_no_offer_if_time_windowbooleantdroute_postprocessing_enabled の後処理が算出した時刻が時間枠に違反していた場合の扱いを決めます。たとえばソルバーが考慮していなかったトラック規制による待機時間が、到着時刻をノードの close_time_ts より後ろに押し出すことがあります。false の場合、その予約は違反したまま経路に残ります。true の場合はピックアップとドロップオフの両方を含む予約全体が経路から除外され、除外によって新たに生じた区間を再計測したうえで、残りに対して後処理が再実行されます(そこでさらに違反が見つかれば繰り返されます)。除外された予約は理由 tdroute_postprocessing_time_window_violation とともに実行結果の rejected bookings に加わり、通常の no-offer 処理を経ます。tdroute_postprocessing_enabled が無効な場合は効果がありません。対象は最適化パイプラインで、手動編集 API には別途 manual_edit_td_postprocessing_no_offer_if_time_window があります。false
use_node_weights_costbooleanノード自身の重みを目的関数への寄与に反映させ、重い、あるいは重要な訪問先ほど比例して大きなコストを持たせます。true
use_mixed_time_matrixboolean単一のルーティングプロファイルを共有しない車両を含むフリートのために、複数のソース行列の移動時間を組み合わせて使用します。false
use_selective_path_equalizerbooleanパスイコライザーを実際に使用される車両にのみ適用します。これにより、待機している車両に薄められることなく、稼働中のフリートを対象に均等化が測られます。false
exclude_unroutable_bookingsbooleanルーティングエンジンが到達できない予約を計算から除外します。到達できない座標が 1 件あるだけで実行全体の品質が落ちたり失敗したりするのを防ぎます。除外された予約は拒否として返ります。false
partition_nodesboolean探索の前にノードを分割し、より小さな部分問題としてソルバーに解かせます。VRP toolbox ソルバーでのみサポートされます。false