ブロックリファレンス

BLOCKS Reference

最適化

割当て最適化(複数実行)

概要

このブロックは、限られた資源(リソース)を最も効率的に配分するための計画を複数のパラメータ設定で同時に自動作成します。一度の実行で複数の最適化シナリオを比較検討できるため、迅速な意思決定を支援します。例えば、倉庫における商品の配送車両への割り当て、配送ルートの最適化、プロジェクトへの人員配置など、様々なビジネスシーンで活用できます。

通常の割当て最適化ブロックとの主な違いは、異なる制約条件や優先度設定を一度に実行する点です。これにより、「コスト重視の場合」「時間重視の場合」「品質重視の場合」といった複数の戦略を同時に計算し、最適な解を比較します。

内部では、状況に応じて最適な計算エンジン(専門的にはソルバーと呼ばれ、D-Wave、SQBM+、Amplify AEなどが該当)が自動的に選択されます。量子コンピューティング技術(量子アニーリングなど)をはじめとする先進技術を用いて高速に計算処理を行います。利用者は技術的な詳細を意識することなく、複数の最適な配分結果を同時に得られます。

プロパティ

プロパティ名 説明
ブロック名

フローの中で、このブロックを識別するための表示名を設定します。例えば、「配送ルート複数比較」、「在庫配分シナリオ検証」など、分かりやすい名前を付けることで、フロー全体の可読性が向上します。

GCPサービスアカウント

最適化処理を実行するために、Google Cloud Platform(GCP)のサービスアカウントを選択します。処理に必要な権限を持つアカウントを設定します。

入力テーブル群を指定するデータセット

BigQueryのデータセットを指定します。(必須)

このデータセットには、最適化計算に使用する入力データテーブルと、計算結果を保存する出力データテーブルが含まれます。

具体的には、配送場所(locations)、コンテナ(containers)、制約条件(coefficients)などが格納されたテーブルをこのデータセット内に準備します。

複数実行の設定テーブル

複数実行のための設定情報が格納されたテーブル名を指定します。(必須)

このテーブルには、各最適化シナリオで使用するテーブル名(locations、containers、coefficientsなど)とその組み合わせを定義します。テーブルの各行が1つの最適化ジョブに対応し、複数行設定することで異なるパラメータでの最適化が同時実行されます。

table_chart テーブルスキーマを表示 arrow_downward

結果を格納する変数

複数の最適化の実行結果に関する情報を格納する変数名を指定します。(必須)

この変数には、全ての実行ジョブのステータス情報(成功/失敗、ジョブID、ラベル名など)が配列形式で格納されます。具体的には、以下のような構造のJSONオブジェクトが格納されます。

[
  {
    "job_id": "7a6e52bed084dbd7fdff62cfa6ffcc0b",
    "job_label": "scenario_1.cost_priority",
    "status": "succeeded"
  },
  {
    "job_id": "8b7f63cfe195ece8geff73dfb7ggdd1c",
    "job_label": "scenario_1.time_priority",
    "status": "succeeded"
  }
]

主なキーの説明は以下の通りです。

  • job_id: 実行された最適化ジョブの一意なID。
  • job_label: ジョブのラベル名(「実行ラベル名.制約ラベル名またはrow番号」の形式)。
  • status: ジョブの実行結果(「succeeded」または「failed」)。
ブロックメモ

このブロックに関するメモを自由に記述できます。

フローの管理やメンテナンス時の情報共有に役立ちます。このメモの内容は、ブロックの実行には影響しません。

テーブルスキーマ

このブロックでは、複数実行の設定テーブルと、各シナリオで使用する個別のテーブル(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_1cost_optimization)。省略可能です。
locations 文字列(STRING)

配送の場所情報を格納したテーブル名(例:locations_master)。

table_chart テーブルスキーマを表示 arrow_downward

containers 文字列(STRING)

コンテナ(配送車両等)情報を格納したテーブル名(例:vehicles_info)。

table_chart テーブルスキーマを表示 arrow_downward

location_containers 文字列(STRING)

場所とコンテナの関連情報を格納したテーブル名。省略可能です。

table_chart テーブルスキーマを表示 arrow_downward

category_locations 文字列(STRING)

カテゴリと場所の関連情報を格納したテーブル名。省略可能です。

table_chart テーブルスキーマを表示 arrow_downward

subcategory_attract 文字列(STRING)

サブカテゴリの引き寄せ制約を格納したテーブル名。省略可能です。

table_chart テーブルスキーマを表示 arrow_downward

subcategory_repel 文字列(STRING)

サブカテゴリの反発制約を格納したテーブル名。省略可能です。

table_chart テーブルスキーマを表示 arrow_downward

location_dependencies 文字列(STRING)

場所間の依存関係を格納したテーブル名。省略可能です。

table_chart テーブルスキーマを表示 arrow_downward

coefficients 文字列(STRING)

最適化の制約条件やパラメータを格納したテーブル名(例:optimization_params)。

table_chart テーブルスキーマを表示 arrow_downward

result 文字列(STRING)

最適化結果を保存するテーブル名(例:allocation_results)。事前に作成する必要はなく、指定したテーブルが存在しない場合は自動で作成されます。既に存在する場合は、結果が追加されます。

table_chart テーブルスキーマを表示 arrow_downward

result_job 文字列(STRING)

実行メタデータを保存するテーブル名。省略可能です。事前に作成する必要はなく、指定したテーブルが存在しない場合は自動で作成されます。既に存在する場合は、結果が追加されます。

table_chart テーブルスキーマを表示 arrow_downward

このテーブルの各行が独立した最適化実行を表します。例えば、異なるcoefficientsテーブルを指定することで、コスト重視とスピード重視の両方の最適化を同時実行できます。

settings プロパティとの関連を確認 arrow_upward

2. 配送場所(locations)テーブル

配送場所(荷物)に関する情報を格納します。

カラム名 データ型 必須/条件付き 説明
location_id 文字列(STRING) 配送場所を表すID
location_name 文字列(STRING) 配送場所の名前
latitude 数値(FLOAT) * 緯度(距離制約を利用する場合に必須)
longitude 数値(FLOAT) * 経度(距離制約を利用する場合に必須)
baggage 整数(INTEGER) 積み荷の量
group_id 文字列(STRING) * 同一コンテナ割当て、または、コンテナグループごとの荷物グループ数最小化の制約を利用する場合に必須

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

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) 配送車の順序

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

4. 場所とコンテナの関連(location_containers)テーブル

配送場所と配送車の関連情報を格納します。

カラム名 データ型 必須/条件付き 説明
location_id 文字列(STRING) 配送場所ID
container_id 文字列(STRING) 配送車ID
cost 数値(FLOAT) * 関連のコスト(container_priority.type = 'by_item' 制約を利用する場合に必須)
enabled 真偽値(BOOLEAN) この関連を有効にするかどうかのフラグ

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

5. カテゴリと場所の関連(category_locations)テーブル

カテゴリ、サブカテゴリと配送場所の関連を定義します。

カラム名 データ型 必須/条件付き 説明
category_id 文字列(STRING) カテゴリを表すID
category_sub_id 文字列(STRING) 同一カテゴリIDにおいて、各location_idが属するサブカテゴリID
location_id 文字列(STRING) 配送場所を表すID

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

6. サブカテゴリ引き寄せ制約(subcategory_attract)テーブル

同じサブカテゴリを持つ配送場所を、同じ配送車に割り当てたい場合に定義します。

カラム名 データ型 必須/条件付き 説明
category_id 文字列(STRING) カテゴリを表すID
category_sub_id 文字列(STRING) 同一カテゴリIDにおいて、各location_idが属するサブカテゴリID
weight 数値(FLOAT) 重み。大きいほど同じ配送車に割り当てられやすくなります。

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

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を許容)

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

8. 場所間の依存関係(location_dependencies)テーブル

配送場所の依存関係を定義します。

カラム名 データ型 必須/条件付き 説明
location_id 文字列(STRING) 配送場所を表すID
previous_location_id 文字列(STRING) 先に行う必要がある配送場所のID

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

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ソルバーを利用する場合に必須。

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

10. 結果(result)テーブル

最適化計算の結果(具体的な割当計画)を格納するテーブルです。1行が1つのコンテナへの割当て結果に対応します。

カラム名 データ型 説明
job_id 文字列(STRING) 実行された最適化ジョブのID
energy 数値(FLOAT) 計算結果の評価値(エネルギー値)
solution_index 整数(INTEGER) 複数の解が得られた場合の、解のインデックス番号
container_id 文字列(STRING) 配送車(コンテナ)のID
container_index 整数(INTEGER) 配送車(コンテナ)のインデックス
locations レコード(RECORD)、繰り返し このコンテナに割り当てられた配送場所(荷物)のリスト

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

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) 実行日時

table_chart 「入力テーブル群を指定するテーブル」との関連を確認 arrow_upward

この情報は役に立ちましたか?