最適化
割当て最適化(複数実行)
概要
このブロックは、限られた資源(リソース)を最も効率的に配分するための計画を複数のパラメータ設定で同時に自動作成します。一度の実行で複数の最適化シナリオを比較検討できるため、迅速な意思決定を支援します。例えば、倉庫における商品の配送車両への割り当て、配送ルートの最適化、プロジェクトへの人員配置など、様々なビジネスシーンで活用できます。
通常の割当て最適化ブロックとの主な違いは、異なる制約条件や優先度設定を一度に実行する点です。これにより、「コスト重視の場合」「時間重視の場合」「品質重視の場合」といった複数の戦略を同時に計算し、最適な解を比較します。
内部では、状況に応じて最適な計算エンジン(専門的にはソルバーと呼ばれ、D-Wave、SQBM+、Amplify AEなどが該当)が自動的に選択されます。量子コンピューティング技術(量子アニーリングなど)をはじめとする先進技術を用いて高速に計算処理を行います。利用者は技術的な詳細を意識することなく、複数の最適な配分結果を同時に得られます。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
フローの中で、このブロックを識別するための表示名を設定します。例えば、「 |
GCPサービスアカウント |
最適化処理を実行するために、Google Cloud Platform(GCP)のサービスアカウントを選択します。処理に必要な権限を持つアカウントを設定します。 |
入力テーブル群を指定するデータセット |
BigQueryのデータセットを指定します。(必須) このデータセットには、最適化計算に使用する入力データテーブルと、計算結果を保存する出力データテーブルが含まれます。 具体的には、配送場所(locations)、コンテナ(containers)、制約条件(coefficients)などが格納されたテーブルをこのデータセット内に準備します。 |
複数実行の設定テーブル |
複数実行のための設定情報が格納されたテーブル名を指定します。(必須) このテーブルには、各最適化シナリオで使用するテーブル名(locations、containers、coefficientsなど)とその組み合わせを定義します。テーブルの各行が1つの最適化ジョブに対応し、複数行設定することで異なるパラメータでの最適化が同時実行されます。 |
結果を格納する変数 |
複数の最適化の実行結果に関する情報を格納する変数名を指定します。(必須) この変数には、全ての実行ジョブのステータス情報(成功/失敗、ジョブID、ラベル名など)が配列形式で格納されます。具体的には、以下のような構造のJSONオブジェクトが格納されます。
主なキーの説明は以下の通りです。
|
ブロックメモ |
このブロックに関するメモを自由に記述できます。 フローの管理やメンテナンス時の情報共有に役立ちます。このメモの内容は、ブロックの実行には影響しません。 |
テーブルスキーマ
このブロックでは、複数実行の設定テーブルと、各シナリオで使用する個別のテーブル(locations、containers、coefficientsなど)を使用します。複数実行により、一度に複数の最適化シナリオを実行できます。
注:「必須」列の「✓」マークは、その項目が必須であることを示します。「*」付きのものは条件付き必須を示します(詳細は各テーブルの説明を参照)。
1. 入力テーブル群を指定するテーブル
複数の最適化シナリオを定義するためのメインテーブルです。各行が1つの最適化実行に対応し、使用するテーブル名や実行ラベルを設定します。
JSONスキーマを表示
[
{"name":"execution_label","mode":"NULLABLE","description":"label for this parameter","type":"STRING"},
{"name":"locations","mode":"NULLABLE","description":"locations master table","type":"STRING"},
{"name":"containers","mode":"NULLABLE","description":"containers master table","type":"STRING"},
{"name":"location_containers","mode":"NULLABLE","description":"location container table","type":"STRING"},
{"name":"category_locations","mode":"NULLABLE","description":"category location table","type":"STRING"},
{"name":"subcategory_attract","mode":"NULLABLE","description":"subcategory attract table","type":"STRING"},
{"name":"subcategory_repel","mode":"NULLABLE","description":"subcategory repel table","type":"STRING"},
{"name":"location_dependencies","mode":"NULLABLE","description":"location dependencies table","type":"STRING"},
{"name":"coefficients","mode":"NULLABLE","description":"coefficient table","type":"STRING"},
{"name":"result","mode":"NULLABLE","description":"result table","type":"STRING"},
{"name":"result_job","mode":"NULLABLE","description":"result job table","type":"STRING"}
]
カラム名 | データ型 | 必須/条件付き | 説明 |
---|---|---|---|
execution_label | 文字列(STRING) | この実行シナリオのラベル名(例:scenario_1 、cost_optimization )。省略可能です。 |
|
locations | 文字列(STRING) | ✓ |
配送の場所情報を格納したテーブル名(例: |
containers | 文字列(STRING) | ✓ |
コンテナ(配送車両等)情報を格納したテーブル名(例: |
location_containers | 文字列(STRING) |
場所とコンテナの関連情報を格納したテーブル名。省略可能です。 |
|
category_locations | 文字列(STRING) |
カテゴリと場所の関連情報を格納したテーブル名。省略可能です。 |
|
subcategory_attract | 文字列(STRING) |
サブカテゴリの引き寄せ制約を格納したテーブル名。省略可能です。 |
|
subcategory_repel | 文字列(STRING) |
サブカテゴリの反発制約を格納したテーブル名。省略可能です。 |
|
location_dependencies | 文字列(STRING) |
場所間の依存関係を格納したテーブル名。省略可能です。 |
|
coefficients | 文字列(STRING) | ✓ |
最適化の制約条件やパラメータを格納したテーブル名(例: |
result | 文字列(STRING) | ✓ |
最適化結果を保存するテーブル名(例: |
result_job | 文字列(STRING) |
実行メタデータを保存するテーブル名。省略可能です。事前に作成する必要はなく、指定したテーブルが存在しない場合は自動で作成されます。既に存在する場合は、結果が追加されます。 |
このテーブルの各行が独立した最適化実行を表します。例えば、異なるcoefficients
テーブルを指定することで、コスト重視とスピード重視の両方の最適化を同時実行できます。
2. 配送場所(locations)テーブル
配送場所(荷物)に関する情報を格納します。
カラム名 | データ型 | 必須/条件付き | 説明 |
---|---|---|---|
location_id | 文字列(STRING) | ✓ | 配送場所を表すID |
location_name | 文字列(STRING) | 配送場所の名前 | |
latitude | 数値(FLOAT) | * | 緯度(距離制約を利用する場合に必須) |
longitude | 数値(FLOAT) | * | 経度(距離制約を利用する場合に必須) |
baggage | 整数(INTEGER) | ✓ | 積み荷の量 |
group_id | 文字列(STRING) | * | 同一コンテナ割当て、または、コンテナグループごとの荷物グループ数最小化の制約を利用する場合に必須 |
3. コンテナ(containers)テーブル
配送車両に関する情報を格納します。
カラム名 | データ型 | 必須/条件付き | 説明 |
---|---|---|---|
container_id | 文字列(STRING) | ✓ | 配送車を表すID |
container_name | 文字列(STRING) | 配送車の名前 | |
capacity | 整数(INTEGER) | * | 積載可能量(assign_all_item.type = 'capacity' または assign_item_weight_to_container_capacity 制約を利用する場合に必須) |
cost | 数値(FLOAT) | * | 積載コスト(container_priority.type = 'uniform' 制約を利用する場合に必須) |
group_id | 文字列(STRING) | * | コンテナグループごとの荷物グループ数最小化制約を利用する場合に必須 |
sequence_no | 整数(INTEGER) | 配送車の順序 |
4. 場所とコンテナの関連(location_containers)テーブル
5. カテゴリと場所の関連(category_locations)テーブル
6. サブカテゴリ引き寄せ制約(subcategory_attract)テーブル
7. サブカテゴリ反発制約(subcategory_repel)テーブル
異なるサブカテゴリを持つ配送場所を、同じ配送車に割り当てたくない場合に定義します。
カラム名 | データ型 | 必須/条件付き | 説明 |
---|---|---|---|
category_id | 文字列(STRING) | ✓ | カテゴリを表すID |
category_sub_id | 文字列(STRING) | ✓ | 異なるコンテナに割り当てるサブカテゴリID |
pair_category_sub_id | 文字列(STRING) | ✓ | category_sub_idに対応する別のcategory_sub_id |
weight | 数値(FLOAT) | * | 重み。大きいほど同じ配送車に割り当てられづらくなります。(constraint_type='constrained' が指定された場合はnullを許容) |
8. 場所間の依存関係(location_dependencies)テーブル
9. パラメータ(coefficients)テーブル
最適化計算の挙動や優先順位を調整するためのパラメータを格納します。各パラメータの詳細については、割当て最適化のドキュメントをご参照ください。
注: coeffパラメータは、null
(未設定)で制約を使用しない、0
でパラメータを自動設定、0以外
でその値をパラメータとして使用、という動作をします。
カラム名 | データ型 | 説明 |
---|---|---|
label | 文字列(STRING) | 複数同時実行時にラベルに付加されます。 |
assign_all_item | レコード(RECORD) | 全ての荷物を割り当てる制約。 |
container_capacity_limit | レコード(RECORD) | コンテナ容量に関する制約。 |
container_priority | レコード(RECORD) | コンテナの優先度制約。 |
... その他の制約 ... | ||
solver_options | レコード(RECORD) | ソルバー固有の設定。 |
amplify_token | 文字列(STRING) | Amplify AEソルバーを利用する場合に必須。 |
10. 結果(result)テーブル
最適化計算の結果(具体的な割当計画)を格納するテーブルです。1行が1つのコンテナへの割当て結果に対応します。
カラム名 | データ型 | 説明 |
---|---|---|
job_id | 文字列(STRING) | 実行された最適化ジョブのID |
energy | 数値(FLOAT) | 計算結果の評価値(エネルギー値) |
solution_index | 整数(INTEGER) | 複数の解が得られた場合の、解のインデックス番号 |
container_id | 文字列(STRING) | 配送車(コンテナ)のID |
container_index | 整数(INTEGER) | 配送車(コンテナ)のインデックス |
locations | レコード(RECORD)、繰り返し | このコンテナに割り当てられた配送場所(荷物)のリスト |
11. 実行メタデータ(result_job)テーブル
最適化計算の実行に関する詳細な情報(メタデータ)を格納するテーブルです。
カラム名 | データ型 | 説明 |
---|---|---|
job_id | 文字列(STRING) | 最適化実行時のJob ID |
optimization_type | 文字列(STRING) | 最適化のタイプ(例: binpacking ) |
solver_type | 整数(INTEGER) | 実行されたソルバーの種別 |
solutions | レコード(RECORD)、繰り返し | 解とそのEnergy値のリスト |
qubo | レコード(RECORD) | QUBOモデルに関する情報 |
solver_response | レコード(RECORD)、繰り返し | ソルバーからの応答データ |
constraints | レコード(RECORD)、繰り返し | 制約に関する情報 |
created_at | タイムスタンプ(TIMESTAMP) | 実行日時 |