索引
Optimization
(インターフェース)DesignShippingNetworkRequest
(メッセージ)DesignShippingNetworkResponse
(メッセージ)SolveMathOptModelRequest
(メッセージ)SolveMathOptModelResponse
(メッセージ)SolveShiftGenerationRequest
(メッセージ)SolveShiftGenerationResponse
(メッセージ)SolveShiftSchedulingRequest
(メッセージ)SolveShiftSchedulingResponse
(メッセージ)
最適化
運用調査の概要レベルの問題に対する最適化ソルバーのセットを公開する One Platform API。MOE:begin_strip
DesignShippingNetwork |
---|
指定された LSNDSP は、ライナー船会社の最適な設計とスケジュールを見つけるための複雑な最適化問題です。目標は、ポート間の貨物需要を可能な限り多く満たしながら、ネットワーク運用の総コストを最小限に抑えることです。 LSNDSP は、ネットワーク設計とスケジューリングという 2 つの主要なサブ問題に分けることができます。ネットワーク設計のサブ問題では、ネットワークによってサービスを提供するポートのセット、各ルートに展開する船舶の数、船が通るルートを決定します。スケジューリング サブ問題では、港間の出航にかかる時間、貨物の積み下ろしにかかる時間、港間の貨物輸送の需要を考慮して、船舶の出航スケジュールを決定します。 簡単に言えば、LSNDSP は、貨物需要を満たすために収益を最大化しながらネットワークの運用コストを最小限に抑えるために、サービスを提供するポート、使用する船の数、船のスケジュールを決定する方法を決定する問題です。LSNDSP の難しいサブコンポーネントは、貨物のルーティングです。収益を最大化するために、どの需要を満たすべきか、どのルートを貨物に割り当てるかを決定します。 |
SolveMathOptModel |
---|
入力モデルを解いて結果を一度に返します。コールバックやインクリメンタリティが不要で、解決の進捗状況を追跡する必要がない場合に使用します。 |
SolveShiftGeneration |
---|
従業員の需要を満たすために、特定のシフト テンプレートからシフトを生成することで、指定された |
SolveShiftScheduling |
---|
従業員のスケジュール設定が最大化され、スケジュールの制約違反が最小限になるように従業員をシフトに割り当てることで、指定された |
DesignShippingNetworkRequest
このリクエストには LSNDSP のインスタンスが含まれ、ポートのセット、区間の候補のセット、船舶のクラスのセット、履行すべき商品需要のセットが含まれている必要があります。
フィールド | |
---|---|
request_id |
問題またはリクエスト ID。 |
solver_parameters |
ソルバーのパラメータ。 |
ports[] |
船舶サービスで呼び出すことができるポートのリスト。リクエストには、このリストにあるポート ID のみを含める必要があります。 |
leg_candidates[] |
船舶サービスに追加する区間の候補リスト。リクエストには、このリストにある区間候補 ID のみを含める必要があります。 |
vessel_classes[] |
船舶サービスを提供する船舶クラスのリスト。同じクラスの船はすべて完全に交換可能です。リクエストには、このリストにある船クラス ID のみを含める必要があります。 |
commodity_demands[] |
船舶サービスによって満たされる可能性のあるコモディティ(コンテナ)の需要のリスト。 |
vessel_services[] |
有効な船舶サービスのネットワーク(通常はネットワークの現在の状態)を提供して、最適化の出発点として使用できます。 |
DesignShippingNetworkResponse
レスポンスには、リクエストで渡された LSNDSP インスタンスに解答が保持されます。船舶サービスとコモディティ需要経路の有効なネットワークが含まれています。各区間を通る商品需要の総額は、この区間を通る船舶クラスの容量を超えてはなりません。船舶のネットワーク設計とスケジュールに関する問題は、需要を満たしていない船舶サービスを提供しないことが、常に現実的な解決策となります。
フィールド | |
---|---|
request_id |
このレスポンスが関連付けられているリクエストの ID。 |
vessel_services[] |
船舶サービスのネットワーク。各船舶クラスにおいて、使用される船舶の総数は、このクラスで利用可能な船舶の数を超えてはいけません。 |
commodity_demand_paths[] |
プラスの商品需要が出荷されるすべてのコモディティ需要パスのリスト。需要が発送されない場合、一部の商品需要 ID は含まれない場合があります。あるいは、商品需要を部分的に満たすこともできます。各商品の需要について、履行された数量の合計が需要の合計を超えることはできません。最後に、commodity_demand_paths は vessel_services に依存します(CommodityDemandPath の定義を参照)。 |
SolveMathOptModelRequest
MathOpt での単項リモート解決のリクエスト。
フィールド | |
---|---|
solver_type |
省略可。問題を数値的に解く解法タイプ。ソルバーがモデルの特定の特徴をサポートしていない場合、最適化手順は成功しないことに注意してください。 |
model |
必須。解く最適化問題の数学的表現。 |
parameters |
省略可。単一のソルバーを制御するパラメータ。enable_output パラメータは特別に処理されます。メッセージ コールバックをサポートするソルバーの場合、true に設定すると、サーバーはメッセージ コールバックを登録します。結果のメッセージは SolveMathOptModelResponse.messages に返されます。他のソルバーでは、enable_output を true に設定するとエラーが発生します。 |
model_parameters |
省略可。入力モデルに固有の単一のソルバーを制御するパラメータ(モデル非依存パラメータについては、SolveParametersProto をご覧ください)。 |
SolveMathOptModelResponse
MathOpt での単項遠隔解法のレスポンス。
フィールド | |
---|---|
result |
リクエスト内のモデルを解く際の出力の説明。 |
messages[] |
SolveParametersProto.enable_output が使用されている場合、メッセージ コールバックをサポートするソルバーのログ メッセージが格納されます。 |
SolveShiftGenerationRequest
シフト生成の問題を解決するリクエスト。シフトを生成するためのルールについては、各 ShiftTemplate をご覧ください。1 つの ShiftTemplate からレスポンスの複数のシフトを生成できます。ソルバーによって生成および選択されたシフトは、ShiftTemplate で概説されているルールに従い、指定された従業員の需要をカバーする必要があります。
フィールド | |
---|---|
solver_config |
省略可。ソルバーのパラメータ。 |
shift_templates[] |
必須。シフトを生成するためのルールを指定するシフト テンプレートのセット。 |
employee_demands[] |
必須。 |
SolveShiftGenerationResponse
シフト生成の問題に対するレスポンス。返された solution_status
が SOLVED
の場合、ソルバーによって生成された有効なシフトのセットが employee_schedules
に返されます。有効なシフト スケジュールの場合、次のプロパティが保持されます。
employee_schedules
で生成された各シフトは、対応するShiftTemplate
で指定されたルールに従います。- 各シフトで選択された各イベントは、対応する
ShiftTemplate.Event
で指定されたルールに従います。 - 同じ ShiftTemplate から生成された一連のシフトに割り当てられた従業員の合計数が、そのテンプレートの
maximum_employee_count
を超えない。 - 割り当てられた従業員セットが一定の間隔で需要に対応します。
フィールド | |
---|---|
solution_status |
返されたソリューションのステータス。 |
employee_schedules[] |
ソルバーによって生成された一連のシフトと、各スケジュールに割り当てられた従業員数。 |
demand_coverage_violations[] |
指定された |
SolveShiftSchedulingRequest
Workforce Scheduling API のリクエスト。少なくとも、このリクエストでは、一連の従業員、一連のシフト、従業員が実行できる一連の可能なロール、一連のカバレッジ要件を指定します。適用範囲の要件では、時間枠内で各役割を果たすために必要な従業員数を指定します。シフトに割り当てられた従業員はそのシフトの 1 つの(唯一の)役割にも割り当てられ、重複する 2 つのシフトに従業員を割り当てることはできません。シフト割り当てが有効になる条件について詳しくは、以下の SolveShiftSchedulingResponse
をご覧ください。
各従業員に対して追加のスケジュール制約を指定して、問題をさらに制限できます。すべてのスケジューリング制約とカバレッジ要件に優先度レベル(MANDATORY、HIGH、MEDIUM、LOW)が割り当てられます。優先度レベルが PRIORITY_MANDATORY
のすべての制約は、ソルバーによって満たされる必要があります。他の優先順位の制約は、ソルバーによって違反される可能性がありますが、これらの違反は優先順位に従って最小限に抑えられます。各制約の優先度レベルの処理の詳細については、Priority
列挙型をご覧ください。
ソルバーは、指定された制約内で各 Employee の ShiftPreference.preference
値を最大化しようとします。ソルバーは、より多くの設定を満たすために制約に違反しません。指定された制約の下でスケジューリング割り当てが実行不可能な場合にのみ、ソルバーが制約に違反することになります。
時間に関する注意: 問題の時刻はすべて、DateTime メッセージを使用して指定されます。このメッセージには TimeZone フィールドが含まれています。TimeZone は、ユーザーが特に指定しない限り UTC とみなされます。DateTime メッセージは分単位でのみ指定します。秒と nano はすべて無視されます。
フィールド | |
---|---|
request_id |
問題またはリクエスト ID。 |
solve_parameters |
問題の 1 つの解き方を制御するパラメータ。 |
employees[] |
スケジュール可能なすべての従業員。 |
shifts[] |
スケジュールを作成するすべてのシフト。 |
coverage_requirements[] |
プランニング期間全体のカバレッジ要件。これらは、時間枠またはシフト ID のリストのいずれかにおいて、各役割を担う必要がある従業員、またはスキルを保有する必要がある従業員の数を指定します。適用範囲の要件はすべて、時間枠またはシフト ID のリスト(両方ではなく)で指定する必要があります。カバレッジ要件の期間(指定した場合)を地域ごとに重複させることはできません。これらの各制約のデフォルトの優先度は、ロール要件では |
role_ids[] |
従業員全体で可能なすべてのロールのリスト。各従業員には、シフトに割り当てることができるロールが少なくとも 1 つ必要です。Role は、シフト中に割り当てられた特定の職務を指します(登録看護師、エグゼクティブ シェフ、ウェイターなど)。従業員がシフトに割り当てられると、単一の特定のロールにも割り当てられます。 |
skill_ids[] |
従業員全体で獲得し得るすべてのスキルのリスト。スキルとは、従業員が持っている、特定の割り当て可能な職務とは無関係な追加の資格を指します(認定資格、使用言語など)。このリストは空でもかまいません。従業員がシフトに割り当てられると、そのシフトに必要なすべてのスキルを習得する必要があります。 |
location_ids[] |
スケジュール内の一連のシフトに対して考えられるすべてのロケーションのリスト。このリストは空でもかまいません。たとえば、看護師のマネージャーが病院の複数の部門で多数の看護師の勤務スケジュールを設定したい場合や、ホテル マネージャーが複数のホテルにまたがって従業員のスケジュールを設定したい場合などに、異なる場所を指定すると便利です。 |
budget_requirements[] |
スケジューリングの問題の予算の仕様。これらの各要件のデフォルトの優先度は |
assignments_hint[] |
割り当てをシフトして、スケジューリングの問題への暫定的な解決策(別名、解答ヒント)として使用する。割り当てできないシフトまたはスケジュール リクエストと割り当てが一致しない場合、割り当てのヒントは無視されます。 |
SolveShiftSchedulingResponse
Workforce Scheduling API に対するレスポンス。各レスポンスで、返された solution_status
が NOT_SOLVED_DEADLINE_EXCEEDED
または INFEASIBLE
の場合、shift_assignments
は空になります。返された solution_status
が OPTIMAL
または FEASIBLE
の場合、有効なシフト割り当てが shift_assignments
で返されます。シフトの割り当てが有効な場合、次のプロパティが保持されます。
- 各従業員 ID は、リクエストで指定された従業員のセットに含まれます。
- 従業員に割り当てられた各ロール ID は、その従業員のロール ID のセットに含まれています。
- 各シフト ID は、リクエストで与えられた一連のシフトに含まれます。
- 各シフト ID は、その従業員の割り当て不可能なシフト ID ではありません。
- 1 人の従業員が、重複する 2 つのシフトに割り当てられることはありません。
- 指定されたスケジュールで、優先度レベル
PRIORITY_MANDATORY
の制約またはリクエストに違反はありません。
フィールド | |
---|---|
request_id |
このレスポンスが関連付けられているリクエストの ID。 |
solution_status |
返されたソリューションのステータス。解答が FEASIBLE または OPTIMAL でない場合、この proto の他のフィールドは空になる可能性があります。ステータスが NOT_SOLVED_DEADLINE_EXCEEDED の場合、実行可能な解決策が見つからなかったり、実行可能な解決策が存在するかどうかを判別することなく、制限時間に達しています。優先度レベル「MANDATORY」の制約をすべて満たすことができない場合、リクエストは不可能なことがあります。 |
shift_assignments[] |
すべての割り当てのリスト。各 |
status_message |
|