最適化
割当て最適化(変数指定)
概要
このブロックは、変数を使用して動的にデータを指定できるリソースからコンテナへの最適な割り当てを自動で計算する割り当て最適化ブロックです。配送車両への荷物の割り当て、作業から人への割り当て、設備からリソースの割り当てなど、様々なビンパッキング問題に対応できます。従来の割当て最適化ブロックと同様に効率の向上やコスト削減を実現しながら、変数によるデータ指定により、より柔軟で動的な最適化計画作成を可能にします。
例えば配送領域では、配送場所(荷物)を複数の配送車両に最適に振り分けることで、車両の積載容量を最大限活用しつつ、配送コストを最小化した配送計画を作成します。作業分担では、作業項目を適切な人員に割り当てることで、スキルや稼働状況を考慮した効率的な業務計画を立案できます。変数を使用することで、実行時にデータを動的に指定でき、複数のデータソースや実行環境に対応できます。
内部では、状況に応じて最適な計算エンジン(D-Wave、SQBM+、Amplify AEなど)が自動的に選択され、量子コンピューティング技術や先進的なアルゴリズムを用いて高速に最適化処理を行います。利用者は技術的な詳細を意識することなく、最適な割り当て計画のみが簡単に得られます。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
フローの中で、このブロックを識別するための表示名を設定します。例えば、「 |
配送場所データが保存されている変数 |
配送場所(荷物)に関する情報が格納された変数を指定します。(必須) 指定した変数には、「 |
配送車データが保存されている変数 |
配送車両に関する情報が格納された変数を指定します。(必須) 指定した変数には、「 |
配送場所、配送車の関連データが保存されている変数 |
配送場所と配送車の関連情報が格納された変数を指定します。(必須) 指定した変数には、「 |
カテゴリと配送場所の関連データが保存されている変数 |
カテゴリと配送場所の関連情報が格納された変数を指定します。 カテゴリ別の制約を使用する場合に設定が必要です。指定した変数には、「 |
同じ配送車に割り当てたい関連データが保存されている変数 |
同じサブカテゴリの配送場所を同じ配送車に割り当てたい場合の設定が格納された変数を指定します。 指定した変数には、「 |
同じ配送車に割り当てたくない関連データが保存されている変数 |
異なるサブカテゴリの配送場所を同じ配送車に割り当てたくない場合の設定が格納された変数を指定します。 指定した変数には、「 |
配送場所の依存関係のデータが保存されている変数 |
配送場所間の依存関係が格納された変数を指定します。 特定の配送場所を配送する前に、別の配送場所を先に配送する必要がある場合に使用します。指定した変数には、「 |
パラメータが保存されている変数 |
最適化計算の挙動や優先順位を調整するためのパラメータが格納された変数を指定します。(必須) 指定した変数には、最適化処理の制約やソルバー設定などの情報を持つオブジェクトの配列が格納されている必要があります。 |
結果を格納する変数 |
最適化計算の結果を格納する変数を指定します。(必須) この変数に、配送場所と配送車の最適な割り当て結果がオブジェクトの配列として保存されます。 |
割当て最適化実行に関する情報を格納する変数 |
最適化実行に関する詳細情報を格納する変数を指定します。 この変数に、実行時間、使用したソルバー、エネルギー値などの実行情報がオブジェクトの配列として保存されます。 |
GCPサービスアカウント |
最適化処理を実行するために、Google Cloud Platform(GCP)のサービスアカウントを選択します。処理に必要な権限を持つアカウントを設定してください。 |
実行に関する情報を格納するテーブル |
最適化計算の実行に関する詳細な情報(メタデータ)を格納するBigQueryテーブル名を直接指定します。 指定しない場合、これらのメタデータは保存されません。実行にかかった時間や計算の評価値(エネルギー値)など、処理の詳細情報を記録・分析したい場合に設定します。事前に作成する必要はなく、指定したテーブルがなければ、自動作成されます。既に存在する場合は、追加されます。 |
実行結果を格納するテーブル |
最適化計算の結果(具体的な割当計画)を格納するBigQueryテーブル名を直接指定します。 指定しない場合、計算結果は保存されません。最適化結果を保存し、他の処理ブロックから参照したり、後で分析したりする場合は必ず設定してください。事前に作成する必要はなく、指定したテーブルがなければ、自動作成されます。既に存在する場合は、追加されます。 |
ジョブのラベル名 |
実行するジョブに付与するラベル名を設定します。 複数の最適化ジョブを並行実行する場合の識別や、結果の管理に使用されます。 |
ブロックメモ |
このブロックに関するメモやコメントを自由に入力できます。フローの他のメンバーへの情報共有や、処理内容の備忘録として活用できます。 |
実行モード |
最適化計算の実行モードを選択します。
|
テーブルスキーマ
1. 配送場所データが保存されている変数のスキーマ
配送場所(荷物)に関する情報を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
location_id |
STRING | ○ | 配送場所を表すID |
location_name |
STRING | 配送場所の名前 | |
latitude |
FLOAT | 条件 | 緯度(距離制約を使用する場合のみ必須) |
longitude |
FLOAT | 条件 | 経度(距離制約を使用する場合のみ必須) |
baggage |
INTEGER | ○ | 積み荷の量 |
group_id |
STRING | 条件 | 同一コンテナ割当て、または、コンテナグループごとの荷物グループ数最小化の制約を利用する場合に必須 |
2. 配送車データが保存されている変数のスキーマ
配送車両に関する情報を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
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 | 配送車の順序 |
3. 配送場所、配送車の関連データが保存されている変数のスキーマ
配送場所と配送車の関連情報を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
location_id |
STRING | ○ | 配送場所ID |
container_id |
STRING | ○ | 配送車ID |
cost |
FLOAT | 条件 | 関連のコスト(container_priority.type = 'by_item' 制約を利用する場合に必須) |
enabled |
BOOLEAN | ○ | 有効化フラグ |
4. カテゴリと配送場所の関連データが保存されている変数のスキーマ
カテゴリと配送場所の関連情報を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
category_id |
STRING | ○ | カテゴリID |
category_sub_id |
STRING | ○ | サブカテゴリID |
location_id |
STRING | ○ | 配送場所ID |
5. 同じ配送車に割り当てたい関連データが保存されている変数のスキーマ
同じ配送車に割り当てたい関連データを格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
category_id |
STRING | ○ | カテゴリID |
category_sub_id |
STRING | ○ | サブカテゴリID |
weight |
FLOAT | ○ | 重み(大きいほど同じ配送車に割り当てられやすくなる) |
6. 同じ配送車に割り当てたくない関連データが保存されている変数のスキーマ
同じ配送車に割り当てたくない関連データを格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
category_id |
STRING | ○ | カテゴリID |
category_sub_id |
STRING | ○ | サブカテゴリID |
pair_category_sub_id |
STRING | ○ | ペアサブカテゴリID |
weight |
FLOAT | 条件 | 重み(constraint_type='constrained' が指定された場合はnullを許容) |
7. 配送場所の依存関係のデータが保存されている変数のスキーマ
配送場所間の依存関係を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
location_id |
STRING | ○ | 配送場所ID |
previous_location_id |
STRING | ○ | 前の配送場所ID |
8. パラメータが保存されている変数のスキーマ
最適化計算の挙動や優先順位を調整するためのパラメータが格納されたオブジェクト(単数)またはオブジェクトの配列(複数)を変数に指定します。各パラメータの詳細については、割当て最適化のドキュメントをご参照ください。
注: coeffパラメータは、null
(未設定)で制約を使用しない、0
でパラメータを自動設定、0以外
でその値をパラメータとして使用、という動作をします。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
label |
STRING | 複数同時実行時にラベルに付加されます。カラムが存在しない場合は index が自動で付与されます。 | |
assign_all_item |
RECORD | 全ての荷物を割り当てる制約。詳細はこちら。 | |
container_capacity_limit |
RECORD | assign_all_item.type = 'capacity' の時に必須となる、コンテナ容量に関する制約。詳細はこちら。 |
|
container_priority |
RECORD | コンテナの優先度制約。詳細はこちら。 | |
item_distance |
FLOAT | Locationの距離が近いものを同じコンテナに詰めるようにする制約。 | |
minimize_containers_by_item |
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_weight_to_container_capacity |
FLOAT | 各荷物をコンテナごとの容量に一致するように割り当てる制約。 | |
assign_item_by_container_sequence |
RECORD | 各荷物に設定した前荷物を、コンテナの順序に従って割り当てる制約。 | |
solver_options |
RECORD | ソルバー固有の設定。詳細はこちら。 | |
amplify_token |
STRING | 条件 | Amplify AEソルバーを利用する場合に必須。 |
9. 結果を格納する変数のスキーマ
最適化計算の結果を格納するテーブルです。1行が1つのコンテナへの割当て結果に対応します。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
job_id |
STRING | ○ | 実行JobのID |
energy |
FLOAT | ○ | 結果のエネルギー値 |
solution_index |
INTEGER | ○ | 解のインデックス |
container_id |
STRING | 配送車(コンテナ)のID | |
container_index |
INTEGER | ○ | 配送車(コンテナ)のインデックス |
locations |
RECORD(繰り返し) | このコンテナに割り当てられた配送場所(荷物)のリスト | |
locations.location_id |
STRING | 配送場所のID | |
locations.location_index |
INTEGER | ○ | 配送場所のインデックス |
locations.lat |
FLOAT | ○ | 緯度 |
locations.lng |
FLOAT | ○ | 経度 |
locations.baggage |
INTEGER | ○ | 積み荷の量 |
10. 割当て最適化実行に関する情報を格納する変数のスキーマ
最適化実行に関する詳細情報を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
job_id |
STRING | ○ | 実行JobのID |
optimization_type |
STRING | ○ | 最適化のタイプ |
solver_type |
INTEGER | ○ | 使用したソルバーのタイプ |
solutions |
RECORD(繰り返し) | ○ | 解の情報リスト |
total_qubit_num |
INTEGER | 使用したqubit数 | |
created_at |
TIMESTAMP | ○ | 作成日時 |
11. 実行に関する情報を格納するテーブルのスキーマ
最適化計算の実行に関する詳細な情報(メタデータ)を格納するテーブルです。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
job_id |
STRING | ○ | 最適化処理を実行した際のJob ID |
optimization_type |
STRING | ○ | 実行された最適化のタイプ(この場合は"binpacking" など) |
solver_type |
INTEGER | ○ | 実際に計算に使用された計算エンジン(ソルバー)の種類を示すコード |
solutions |
RECORD、繰り返し | ○ | 得られた解のリスト(複数の解とその評価値が含まれます) |
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_response |
RECORD、繰り返し | 計算エンジンからの応答データ。専門的な分析に用います。 | |
constraints |
RECORD、繰り返し | 設定された各制約条件がどの程度満たされたかなどの詳細情報。 | |
created_at |
TIMESTAMP | ○ | この実行データが作成された日時。 |
12. 実行結果を格納するテーブルのスキーマ
最適化計算の結果(具体的な割当計画)を格納するテーブルです。1行が1つのコンテナへの割当て結果に対応します。
カラム名 | 型 | 必須 | 説明 |
---|---|---|---|
job_id |
STRING | ○ | 実行された最適化ジョブのID |
energy |
FLOAT | ○ | 計算結果の評価値(エネルギー値)。値が小さいほど、制約条件をよく満たした良い解であることを示します。 |
solution_index |
INTEGER | ○ | 複数の解が得られた場合の、解のインデックス番号 |
container_id |
STRING | 配送車(コンテナ)のID | |
container_index |
INTEGER | ○ | 配送車(コンテナ)のインデックス |
locations |
RECORD、繰り返し | このコンテナに割り当てられた配送場所(荷物)のリスト | |
locations.location_id |
STRING | 配送場所のID | |
locations.location_index |
INTEGER | ○ | 配送場所のインデックス |
locations.lat |
FLOAT | ○ | 緯度 |
locations.lng |
FLOAT | ○ | 経度 |
locations.baggage |
INTEGER | ○ | 積み荷の量 |