ブロックリファレンス

BLOCKS Reference

最適化

割当て最適化

概要

このブロックは、リソースからコンテナへの最適な割り当てを自動で計算する割り当て最適化ブロックです。配送車両への荷物の割り当て、作業から人への割り当て、設備からリソースの割り当てなど、様々なビンパッキング問題に対応できます。効率の向上やコスト削減を実現し、複雑な最適化計画を効率よく作成できます。

例えば配送領域では、配送場所(荷物)を複数の配送車両に最適振り分けし、車両の積載容量を最大限活用しつつ、配送コストを最小化した配送計画を作成します。作業分担では、作業項目を適切な人員に割り当てることで、スキルや稼働状況を考慮した効率的な業務計画を立案できます。また、カテゴリ別の制約や依存関係、同じコンテナへの割り当て制約など、実際のビジネスで必要な複雑な条件にも対応しています。

内部では、状況に応じて最適な計算エンジン(D-Wave、SQBM+、Amplify AEなど)が自動的に選択され、量子コンピューティング技術や先進的なアルゴリズムを用いて高速に最適化処理を行います。利用者は技術的な詳細を意識することなく、最適な割り当て計画のみが簡単に得られます。

プロパティ

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

フローの中で、このブロックを識別するための表示名を設定します。例えば、「配送ルート最適化」、「荷物の割当計画」、「作業員タスク配分」、「設備リソース割当」など、分かりやすい名前を付けることで、フロー全体の可読性が向上します。

GCPサービスアカウント

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

データセット

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

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

具体的には、配送場所の情報や配送車両の情報などが格納されたテーブルをこのデータセット内に準備してください。

配送場所データが保存されているテーブル

配送場所(荷物)に関する情報が格納されたテーブル名を指定します。(必須)

このテーブルには、「location_id(配送場所ID)」、「location_name(配送場所名)」、「baggage(積み荷の量)」のカラムが必要です。距離制約を使用する場合は、「latitude(緯度)」、「longitude(経度)」も必要になります。

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

配送車データが保存されているテーブル

配送車両に関する情報が格納されたテーブル名を指定します。(必須)

このテーブルには、「container_id(配送車ID)」、「container_name(配送車名)」、「capacity(積載可能量)」、「cost(積載コスト)」のカラムが必要です。

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

配送場所、配送車の関連データが保存されているテーブル

配送場所と配送車の関連情報が格納されたテーブル名を指定します。(必須)

このテーブルには、「location_id(配送場所ID)」、「container_id(配送車ID)」、「cost(関連のコスト)」、「enabled(有効化フラグ)」のカラムが必要です。

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

カテゴリと配送場所の関連データが保存されているテーブル

カテゴリと配送場所の関連情報が格納されたテーブル名を指定します。

カテゴリ別の制約を使用する場合に設定が必要です。このテーブルには、「category_id(カテゴリID)」、「category_sub_id(サブカテゴリID)」、「location_id(配送場所ID)」のカラムが必要です。

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

同じ配送車に割り当てたい関連データが保存されているテーブル

同じサブカテゴリの配送場所を同じ配送車に割り当てたい場合の設定が格納されたテーブル名を指定します。

このテーブルには、「category_id(カテゴリID)」、「category_sub_id(サブカテゴリID)」、「weight(重み)」のカラムが必要です。重みが大きいほど、同じサブカテゴリの配送場所が同じ配送車に割り当てられやすくなります。

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

同じ配送車に割り当てたくない関連データが保存されているテーブル

異なるサブカテゴリの配送場所を同じ配送車に割り当てたくない場合の設定が格納されたテーブル名を指定します。

このテーブルには、「category_id(カテゴリID)」、「category_sub_id(サブカテゴリID)」、「pair_category_sub_id(ペアサブカテゴリID)」、「weight(重み)」のカラムが必要です。

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

配送場所の依存関係のデータが保存されているテーブル

配送場所間の依存関係が格納されたテーブル名を指定します。

特定の配送場所を配送する前に、別の配送場所を先に配送する必要がある場合に使用します。このテーブルには、「location_id(配送場所ID)」、「previous_location_id(前の配送場所ID)」のカラムが必要です。

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

パラメータが保存されているテーブル

最適化計算の挙動や優先順位を調整するためのパラメータが格納されたテーブル名を指定します。(必須)

このテーブルには、「assign_all_item(全荷物の割当制約)」、「container_priority(配送車の優先度)」、「item_distance(距離制約)」などのパラメータが含まれます。これらは、最適化の計算方法や結果の品質を調整するための重要な設定項目です。

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

結果を格納する変数

最適化処理の結果の概要情報を格納する変数名を指定します。

この変数には、実行結果に関する基本的な情報が格納され、後続の処理ブロックで参照できます。省略可能です。

割当て最適化実行に関する情報を格納する変数

最適化処理を実行した際のジョブID(処理識別子)などを格納する変数名を指定します。(必須)

この変数には、実行結果に関する詳細な情報(ジョブIDなど)が格納され、後続の処理ブロックで参照できます。

実行に関する情報を格納するテーブル

最適化計算の実行に関する詳細な情報(メタデータ)を格納するテーブル名を指定します。

指定しない場合、これらのメタデータは保存されません。実行にかかった時間や計算の評価値(エネルギー値)など、処理の詳細情報を記録・分析したい場合に設定します。事前に作成する必要はなく、指定したテーブルがなければ、自動作成されます。既に存在する場合は、追加されます。

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

実行結果を格納するテーブル

最適化計算の結果(具体的な配送計画)を格納するテーブル名を指定します。

指定しない場合、計算結果は保存されません。最適化結果を保存し、他の処理ブロックから参照したり、後で分析したりする場合は必ず設定してください。事前に作成する必要はなく、指定したテーブルがなければ、自動作成されます。既に存在する場合は、追加されます。

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

ジョブのラベル名

実行する最適化ジョブに付与するラベル名(識別名)を指定します。

複数の最適化処理を区別するために使用します。特に、複数のジョブを同時に実行する場合や、後で特定のジョブの結果を確認する際に役立ちます。

ブロックメモ

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

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

実行モード

最適化処理の実行モードを選択します。

  • 通常実行:通常の処理キューで実行される。
  • 即時実行:優先度の高いキューで即座に実行を試行する。
  • 即時実行に失敗した場合、通常実行:まず即時実行を試行し、失敗した場合は通常実行に切り替える。

テーブルスキーマ

このブロックでは、複数の入力情報(テーブル形式)と、結果を格納する出力情報(テーブル形式)を使用します。それぞれのテーブルがどのような構造を持ち、どのようなデータを含める必要があるかを理解しておくことが重要です。

注:「必須」列の「✓」マークは、その項目が必須であることを示します。「*」付きのものは条件付き必須を示します(詳細は各テーブルの説明を参照)。

1. 配送場所データが保存されているテーブル

配送場所(荷物)の基本情報を定義するテーブルです。配送する荷物の場所や重量などを設定します。

JSONスキーマを表示
[
  { "name": "location_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "location_name", "type": "STRING", "mode": "NULLABLE", "description": ""},
  { "name": "latitude", "type": "FLOAT", "mode": "NULLABLE", "description": ""},
  { "name": "longitude", "type": "FLOAT", "mode": "NULLABLE", "description": ""},
  { "name": "baggage", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "group_id", "type": "STRING", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
location_id 文字列(STRING) 配送場所を一意に識別するためのID(例:depot_001customer_A
location_name 文字列(STRING) 配送場所の表示名(例:「営業所1」、「顧客A」)。省略可能です。
latitude 数値(FLOAT) * 配送場所の緯度。距離制約(item_distance)を使用する場合は必須です。
longitude 数値(FLOAT) * 配送場所の経度。距離制約(item_distance)を使用する場合は必須です。
baggage 整数(INTEGER) 積み荷の量(例:重量、体積、個数など)
group_id 文字列(STRING) * グループID。同一コンテナへの割当制約や、同一グループコンテナに割り当てる荷物グループ数の最小化制約を使用する場合に必須です。

baggageは、その配送場所における荷物の量を表します。配送車の容量制約に直接関わる重要な値です。

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

2. 配送車データが保存されているテーブル

配送車両の基本情報を定義するテーブルです。車両の積載容量やコストなどを設定します。

JSONスキーマを表示
[
  { "name": "container_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "container_name", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "capacity", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "cost", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "group_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "sequence_no", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
container_id 文字列(STRING) 配送車を一意に識別するためのID(例:truck_001vehicle_A
container_name 文字列(STRING) 配送車の表示名(例:「トラック1号」、「車両A」)。省略可能です。
capacity 整数(INTEGER) * 積載可能量(最大容量)。assign_all_item.type = 'capacity' または assign_item_weight_to_container_capacity 制約を使用する場合は必須です。
cost 数値(FLOAT) * 積載コスト(車両を使用する際のコスト)。container_priority.type = 'uniform' 制約を使用する場合は必須です。
group_id 文字列(STRING) * グループID。同一グループコンテナに割り当てる荷物グループ数の最小化制約を使用する場合は必須です。
sequence_no 整数(INTEGER) * 配送車の順序。順序制約を使用する場合は必須です。

capacityは配送車の最大積載量を、costは車両使用時のコストを表します。コストが小さいほど優先的に使用されます。

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

3. 配送場所、配送車の関連データが保存されているテーブル

配送場所と配送車の関連情報を定義するテーブルです。どの配送場所がどの配送車に割り当て可能かを設定します。

JSONスキーマを表示
[
  { "name": "location_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "container_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "cost", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "enabled", "type": "BOOLEAN", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
location_id 文字列(STRING) 配送場所ID(上記「1. 配送場所データが保存されているテーブル」のlocation_idと対応)
container_id 文字列(STRING) 配送車ID(上記「2. 配送車データが保存されているテーブル」のcontainer_idと対応)
cost 数値(FLOAT) 関連のコスト(この配送場所をこの配送車に割り当てる際のコスト)。container_priority.type = 'by_item' を設定した場合に使用されます。
enabled 真偽値(BOOLEAN) この関連を有効にするかのフラグ(true: 割り当て可能、false: 割り当て不可)

このテーブルは、配送場所と配送車の間の関連性を表現します。enabledがfalseの場合、その配送場所はその配送車に割り当てられません。

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

4. カテゴリと配送場所の関連データが保存されているテーブル

カテゴリ分類と配送場所の関連情報を定義するテーブルです。配送場所をカテゴリ別に分類して制約を適用する場合に使用します。

JSONスキーマを表示
[
  { "name": "category_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "category_sub_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "location_id", "type": "STRING", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
category_id 文字列(STRING) カテゴリを表すID(例:foodelectronics
category_sub_id 文字列(STRING) 同一カテゴリID内における、各配送場所が属するサブカテゴリのID(例:frozenfresh
location_id 文字列(STRING) 配送場所ID(上記「1. 配送場所データが保存されているテーブル」のlocation_idと対応)

このテーブルは、配送場所を階層的にカテゴリ分類するために使用します。例えば、食品カテゴリ内の冷凍品サブカテゴリなど。

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

5. 同じ配送車に割り当てたい関連データが保存されているテーブル

同じサブカテゴリの配送場所を同じ配送車に割り当てるための設定テーブルです。

JSONスキーマを表示
[
  { "name": "category_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "category_sub_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "weight", "type": "FLOAT", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
category_id 文字列(STRING) カテゴリを表すID
category_sub_id 文字列(STRING) サブカテゴリを表すID
weight 数値(FLOAT) 重み(大きいほど同じサブカテゴリの配送場所が同じ配送車に割り当てられやすくなる)

weightの値が大きいほど、同じサブカテゴリに属する配送場所を同じ配送車に割り当てようとする力が強くなります。

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

6. 同じ配送車に割り当てたくない関連データが保存されているテーブル

異なるサブカテゴリの配送場所を同じ配送車に割り当てないための設定テーブルです。

JSONスキーマを表示
[
  { "name": "category_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "category_sub_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "pair_category_sub_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "weight", "type": "FLOAT", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
category_id 文字列(STRING) カテゴリを表すID
category_sub_id 文字列(STRING) 分離したいサブカテゴリID
pair_category_sub_id 文字列(STRING) category_sub_idと分離したい別のサブカテゴリID
weight 数値(FLOAT) * 重み(大きいほど異なるサブカテゴリが同じ配送車に割り当てられにくくなる)。assign_specified_category_item_to_different_containerで制約型を指定した場合はnull可

このテーブルは、特定のサブカテゴリ同士を同じ配送車に載せたくない場合(例:冷凍品と常温品を分ける)に使用します。

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

7. 配送場所の依存関係のデータが保存されているテーブル

配送場所間の依存関係を定義するテーブルです。特定の配送場所を配送する前に、別の配送場所を先に配送する必要がある場合に使用します。

JSONスキーマを表示
[
  { "name": "location_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "previous_location_id", "type": "STRING", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
location_id 文字列(STRING) 配送場所ID
previous_location_id 文字列(STRING) 先に配送する必要がある配送場所のID

このテーブルは、配送順序に制約がある場合に使用します。例えば、倉庫から商品を取得してから顧客に配送する場合など。

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

8. パラメータが保存されているテーブル

最適化計算の挙動をより細かく制御するためのパラメータを設定するテーブルです。

JSONスキーマを表示
[
  {"name":"label","type":"STRING","mode":"NULLABLE"},
  { "name": "assign_all_item", "type": "RECORD", "mode": "NULLABLE", "description": "", "fields": [
    { "name": "type", "type": "STRING", "mode": "NULLABLE" },
    { "name": "coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "constraint_type", "type": "STRING", "mode": "NULLABLE" }
  ]
  },
  { "name": "container_capacity_limit", "type": "RECORD", "mode": "NULLABLE", "description": "", "fields": [
    { "name": "one_hot_connect_detail_coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "equal_connect_detail_and_detail_coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "exclusive_detail_and_connect_detail_coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "equal_base_and_detail_connect_coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "one_or_zero_detail_coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "constraint_type", "type": "STRING", "mode": "NULLABLE" }
  ]},
  { "name": "container_priority", "type": "RECORD", "mode": "NULLABLE", "description": "", "fields": [
    { "name": "coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "type", "type": "STRING", "mode": "NULLABLE" }
  ]},
  { "name": "item_distance", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "minimize_containers_by_item", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "assign_item_weight_to_container_capacity", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "assign_equally_item_weight_to_container", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "assign_all_items_to_container_or_none", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "assign_same_group_item_to_same_container", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "minimize_item_group_num_by_container_group", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "assign_same_category_item_to_same_container", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "assign_specified_category_item_to_different_container", "type": "RECORD", "mode": "NULLABLE", "description": "", "fields": [
    { "name": "coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "constraint_type", "type": "STRING", "mode": "NULLABLE" }
  ] },
  { "name": "assign_item_by_container_sequence", "type": "RECORD", "mode": "NULLABLE", "description": "", "fields": [
    { "name": "coeff", "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "constraint_type", "type": "STRING", "mode": "NULLABLE" }
  ]},
 {"name":"solver_options","type":"RECORD","mode":"NULLABLE",
  "fields":[
    { "name": "normalize", "type": "BOOLEAN", "mode": "NULLABLE" },
    { "name": "backend", "type": "STRING", "mode": "NULLABLE" },
    { "name": "max_search_trial", "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "search_order", "type": "STRING", "mode": "NULLABLE" },
    {"name": "dwave", "type": "RECORD", "mode": "NULLABLE", "fields": [
      { "name": "params_type", "type": "STRING", "mode": "NULLABLE" },
      { "name": "params_version", "type": "STRING", "mode": "NULLABLE" },
      { "name": "params_time_limit", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "info_qubit_info", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_timing", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_debug_level", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "info_response", "type": "STRING", "mode": "NULLABLE" }
    ]},
    { "name": "sbm", "type": "RECORD", "mode": "NULLABLE", "fields": [
      { "name": "params_type", "type": "STRING", "mode": "NULLABLE" },
      { "name": "params_version", "type": "STRING", "mode": "NULLABLE" },
      { "name": "params_algo", "type": "STRING", "mode": "NULLABLE" },
      { "name": "params_steps", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_loops", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_timeout", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_maxwait", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_maxout", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_target", "type": "FLOAT", "mode": "NULLABLE" },
      { "name": "params_dt", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_C", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_iter", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_alpha", "type": "FLOAT", "mode": "NULLABLE" },
      { "name": "params_timeoutx", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "info_qubit_info", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_response", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_timing", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_exec", "type": "STRING", "mode": "NULLABLE" }
    ]},
    { "name": "amplify", "type": "RECORD", "mode": "NULLABLE", "fields": [
      { "name": "params_time_limit", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_num_gpus", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_num_outputs", "type": "INTEGER", "mode": "NULLABLE" },
      { "name": "params_penalty_calibration", "type": "BOOLEAN", "mode": "NULLABLE" },
      { "name": "info_response", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_timing", "type": "STRING", "mode": "NULLABLE" },
      { "name": "info_exec", "type": "STRING", "mode": "NULLABLE" }
    ]}
  ]
 },
  {"name":"amplify_token","type":"STRING","mode":"NULLABLE"}
]

パラメータについては下記のように設定することで制約を制御できます。

  • 制約を使用しない: null(BigQueryに登録する時にカラムを登録しない)
  • 制約のパラメータ自動設定: 0
  • 制約のパラメータを指定値にする: 0以外の値
カラム名 データ型 必須/条件付き 説明
label 文字列(STRING) 複数の最適化処理を実行する際のジョブラベル(識別名)。省略可能です。
assign_all_item 複合型(RECORD) 全ての荷物を配送車に割り当てる制約。省略可能です。
assign_all_item.type 文字列(STRING) ✓* 制約のタイプ。「capacity」(容量制約)または「simple」(単純制約)を指定
assign_all_item.coeff 数値(FLOAT) ✓* 制約の強さ(重み係数)。値が大きいほど、全荷物を割り当てようとする傾向が強まります。
assign_all_item.constraint_type 文字列(STRING) 制約の実装タイプ。「constrained」(制約型)または「penalty」(ペナルティ型、デフォルト)
container_priority 複合型(RECORD) 配送車の優先度制約。コストが少ない配送車を優先的に使用します。
container_priority.coeff 数値(FLOAT) ✓* 制約の強さ(重み係数)
container_priority.type 文字列(STRING) ✓* コスト計算タイプ。「uniform」(配送車のコストを使用)または「by_item」(関連テーブルのコストを使用)
item_distance 数値(FLOAT) 距離制約。近い配送場所を同じ配送車に割り当てる制約です。省略可能です。
minimize_containers_by_item 数値(FLOAT) 荷物ごとの配送車数を最小化する制約。省略可能です。
assign_item_weight_to_container_capacity 数値(FLOAT) 荷物の量を考慮して配送車の容量を超えないようにする制約。省略可能です。
assign_equally_item_weight_to_container 数値(FLOAT) 各配送車に荷物を均等に割り当てる制約。省略可能です。
assign_all_items_to_container_or_none 数値(FLOAT) 全ての荷物を配送車に割り当てるか、割り当てないかの制約。省略可能です。
assign_same_group_item_to_same_container 数値(FLOAT) 同一グループの荷物を同じ配送車に割り当てる制約。省略可能です。
minimize_item_group_num_by_container_group 数値(FLOAT) 同一グループの荷物を同じ配送車に割り当てる最小化制約。省略可能です。
assign_same_category_item_to_same_container 数値(FLOAT) 同一カテゴリの荷物を同じ配送車に割り当てる制約。省略可能です。
assign_specified_category_item_to_different_container 複合型(RECORD) 特定カテゴリの荷物を異なる配送車に割り当てる制約。省略可能です。
assign_item_by_container_sequence 複合型(RECORD) 配送車の順序(sequence_no)に基づいて荷物を割り当てる制約。省略可能です。
solver_options 複合型(RECORD)

使用する計算エンジン(ソルバー)固有の詳細な設定。通常は設定不要です。省略可能です。

主な設定項目。

  • normalize(Boolean):QUBO作成時に係数を正規化するか(デフォルト: false)
  • backend(文字列):QUBO作成バックエンド(デフォルト: 'TF')
  • max_search_trial(整数):自動調整時の最大試行回数(デフォルト: 100)
  • search_order(文字列):自動調整する制約の優先順位
  • dwave(複合型):D-Wave社のソルバー向け設定
  • sbm(複合型):SQBM+ソルバー向け設定
  • amplify(複合型):Amplify AEソルバー向け設定
amplify_token 文字列(STRING) * Amplify AEソルバーを使用する場合に必須の認証トークン。省略可能です。
container_capacity_limit 複合型(RECORD) 配送車の容量に関する詳細な制約。省略可能です。

* assign_all_itemcontainer_priority の設定項目は、それぞれの親項目を定義する場合に必須となります。

各パラメータの値は、一般的に以下のように設定します。

  • 制約を使用しない場合: そのカラム自体をテーブルに含めない(null扱い)
  • 自動パラメータ設定を利用する場合: 0 を設定
  • 特定の値を指定する場合: 0 以外の数値を設定

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

9. 実行に関する情報を格納するテーブル

最適化処理の実行結果に関するメタデータを保存するテーブルです。処理のパフォーマンスや解の品質に関する詳細情報を記録します。

JSONスキーマを表示
[
  { "name": "job_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "optimization_type", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "solver_type", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "solutions", "type": "RECORD", "mode": "REPEATED", "fields": [ 
    { "name": "solution_index", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
    { "name": "energy", "type": "FLOAT", "mode": "NULLABLE", "description": "" }
  ], "description": "" },
  { "name": "total_qubit_num", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "qubo", "type": "RECORD", "mode": "NULLABLE", "fields": [
    { "name": "maximum_coeff_ratio", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "max", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "min", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "max_positive", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "min_positive", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "max_negative", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "min_negative", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "nonzero_num", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
    { "name": "density", "type": "FLOAT", "mode": "NULLABLE", "description": "" }
  ], "description": "" },
  { "name": "problem", "type": "RECORD", "mode": "REPEATED", "fields":[
    { "name": "id",                            "type": "STRING",  "mode": "NULLABLE" },
    { "name": "qpu_sampling_time",             "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_anneal_time_per_sample",    "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_readout_time_per_sample",   "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_access_time",               "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_access_overhead_time",      "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_programming_time",          "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_delay_time_per_sample",     "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "total_post_processing_time",    "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "post_processing_overhead_time", "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "charge_time",                   "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "run_time",                      "type": "INTEGER", "mode": "NULLABLE" }
  ], "description": "" },
  { "name": "solver_response", "type": "RECORD", "mode": "REPEATED", "fields":[
    { "name": "id",                            "type": "STRING",  "mode": "NULLABLE" },
    { "name": "qpu_sampling_time",             "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_anneal_time_per_sample",    "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_readout_time_per_sample",   "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_access_time",               "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_access_overhead_time",      "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_programming_time",          "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "qpu_delay_time_per_sample",     "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "total_post_processing_time",    "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "post_processing_overhead_time", "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "charge_time",                   "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "run_time",                      "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "calculation_time",              "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "wait_time",                     "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "num_runs",                      "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "message",                       "type": "STRING", "mode": "NULLABLE" }
  ], "description": "" },
  { "name": "constraints", "type": "RECORD", "mode": "REPEATED", "fields":[
    { "name": "solution_index",                "type": "INTEGER",  "mode": "NULLABLE" },
    { "name": "name",                          "type": "STRING", "mode": "NULLABLE" },
    { "name": "energy",                        "type": "FLOAT", "mode": "NULLABLE" },
    { "name": "coeff",                         "type": "STRING", "mode": "NULLABLE" }
  ], "description": "" },
  { "name": "created_at", "type": "TIMESTAMP", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須 説明
job_id 文字列(STRING) 最適化処理を実行した際のジョブID
optimization_type 文字列(STRING) 実行された最適化のタイプ(この場合は"binpacking"
solutions 複合型(RECORD)、
繰り返し(REPEATED)
得られた解のリスト(複数の解とその評価値が含まれます)
solutions.solution_index 整数(INTEGER) 解のインデックス番号
solutions.energy 数値(FLOAT) 各解に対応する評価値(エネルギー値)
total_qubit_num 整数(INTEGER) 計算に使用された論理的な変数(qubit)の総数。問題の複雑さの目安となります。
qubo 複合型(RECORD) 最適化問題を数式で表現したQUBO(Quadratic Unconstrained Binary Optimization)モデルに関する情報。専門的な分析に用います。
qubo.maximum_coeff_ratio 数値(FLOAT) QUBOモデル内の係数の最大値と最小値の比率。解の精度に関わる指標です。
qubo.max 数値(FLOAT) QUBOモデル内の係数の最大値。
qubo.min 数値(FLOAT) QUBOモデル内の係数の最小値。
qubo.nonzero_num 整数(INTEGER) QUBOモデル内でゼロではない係数の数。
qubo.density 数値(FLOAT) QUBOモデル内でゼロではない係数の数の割合。
solver_type 整数(INTEGER) 実際に計算に使用された計算エンジン(ソルバー)の種類を示すコード。
solver_response 複合型(RECORD)、
繰り返し(REPEATED)
計算エンジンからの応答データ。専門的な分析に用います。
constraints 複合型(RECORD)、
繰り返し(REPEATED)
設定された各制約条件がどの程度満たされたかなどの詳細情報。
created_at タイムスタンプ(TIMESTAMP) この実行データが作成された日時。

このテーブルから得られる情報の中で、特に注目すべき点をいくつか紹介します。

  • total_qubit_num これは、最適化問題を解くために内部的に使用された変数(論理qubit)の数を示します。この数値が大きいほど、問題が複雑であることを意味します。
  • qubo.maximum_coeff_ratioQUBOモデルにおける係数の最大値と最小値(絶対値)の比率です。一般的に、この値が小さい(例えば、103~105程度)ほど、計算精度が良くなり、解が安定する傾向があります。
  • qubo.densityQUBOモデルの密度、つまりゼロではない係数の割合を示します。この値が大きい(密な問題である)ほど、一般的に計算精度が出にくく、計算時間が増加する傾向があります。
  • solver_typeどの種類の計算エンジン(ソルバー)が使用されたかを示します。
    • 1:D-Wave社の量子コンピュータ(dwave)
    • 2:シミュレーテッドバイナリマシン(SQBM+) - 古典コンピュータ上のシミュレーション
    • 3:SQBM+(パラメータ自動調整タイプ)
    • 4:SQBM+(QP)
    • 5:D-Wave社の制約付き量子モデル(dwave_CQM)
    • 6:FDA
    • 7:Amplify社の提供する計算エンジン(amplify)

これらのメタデータを分析することで、最適化計算のパフォーマンスや結果の品質を客観的に評価できます。また、問題の定式化(配送場所や車両、制約の与え方)が適切であったかどうかの判断材料にもなり、設定の調整や改善する際に役立ちます。

10. 実行結果を格納するテーブル

最適化計算の実行後に生成される結果が格納されるテーブルです。具体的に、どの配送場所がどの配送車に割り当てられたかが記録されます。

JSONスキーマを表示
[
  { "name": "job_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "energy", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "solution_index", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "locations", "type": "RECORD", "mode": "REPEATED", "fields": [
    { "name": "location_id", "type": "STRING", "mode": "NULLABLE" },
    { "name": "location_index", "type": "INTEGER", "mode": "NULLABLE" },
    { "name": "lat", "type": "FLOAT", "mode": "NULLABLE", "description": "latitude" },
    { "name": "lng", "type": "FLOAT", "mode": "NULLABLE", "description": "longitude" },
    { "name": "baggage", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
  ], "description": "" },
  { "name": "container_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "container_index", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 出力有無 説明
job_id 文字列(STRING) 必須 実行された最適化ジョブのID
energy 数値(FLOAT) 必須 計算結果の評価値(エネルギー値)。値が小さいほど、制約条件をよく満たした良い解であることを示します。
solution_index 整数(INTEGER) 必須 複数の解が得られた場合の、解のインデックス番号
locations 複合型(RECORD)、
繰り返し(REPEATED)
必須 配送車が訪問する配送場所のリスト(複数の場所情報が含まれます)
locations.location_id 文字列(STRING) 条件付き 割り当てられた配送場所のID
locations.location_index 整数(INTEGER) 必須 システム内部で使用される配送場所のインデックス番号
locations.lat 数値(FLOAT) 必須 配送場所の緯度
locations.lng 数値(FLOAT) 必須 配送場所の経度
locations.baggage 整数(INTEGER) 必須 その配送場所の積み荷量
container_id 文字列(STRING) 条件付き 配送場所が割り当てられた配送車のID
container_index 整数(INTEGER) 必須 システム内部で使用される配送車のインデックス番号

「エネルギー値(energy)」は、最適化計算の「良さ」を示す数値です。この値が小さいほど、設定した制約条件をより良く満たしている「良い解」であると解釈できます。

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

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