ブロックリファレンス

BLOCKS Reference

最適化

工程最適化(複数実行)【ベータ版】

notificationsこのブロックはベータ版です。機能改善や不具合などの情報提供は、MAGELLAN BLOCKSのお問い合わせ機能からお願いします。

概要

このブロックは、製造業や物流業などにおける工程の実行順序と、各工程に割り当てるリソース(機械、作業者など)を複数パターンで同時に最適化します。これにより、異なる条件や制約下での最適化結果を一度に比較検討でき、従来の手動計画と比較して処理時間を短縮し、最適解の精度を向上できます。例えば、複数の製品を複数の機械で加工する際の工程順序、作業者のタスク割り当て、配送ルートの時間調整など、様々な場面で活用できます。

「工程最適化(複数実行)」では、ジョブ(作業の単位)、オペレーション(各ジョブに含まれる個別の工程)、リソース(機械や作業者)の関係を定義し、複数の設定パターンを一括で実行できます。これにより、異なるパラメータ設定での最適化結果を効率的に比較し、最も適した条件を選択できます。

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

プロパティ

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

フローの中で、このブロックを識別するための表示名を設定します。例えば、「製造工程の複数パターン最適化」、「配送スケジュール複数実行」など、分かりやすい名前を付けることで、フロー全体の可読性が向上します。

GCPサービスアカウント

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

データセット

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

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

具体的には、ジョブ、オペレーション、リソース、複数実行用の設定テーブルなどの情報が格納されたテーブルをこのデータセット内に準備してください。

入力テーブル群を指定するテーブル

複数実行のパラメータ設定と、各実行で使用するテーブル群の情報が格納されたテーブル名を指定します。(必須)

このテーブルには、各実行に必要な入力テーブル(ジョブ、オペレーション、リソース、設定など)の名前と、実行ラベルが含まれます。複数の行を設定することで、異なるパラメータや入力データでの最適化を同時に実行できます。

table_chart テーブルスキーマを参照 arrow_downward

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

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

この変数には、各実行結果に関する基本的な情報(ジョブIDなど)が配列形式で格納され、後続の処理ブロックで参照できます。複数実行の場合、各実行の結果情報がまとめて格納されます。

ブロックメモ

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

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

テーブルスキーマ

このブロックでは、複数実行用の設定テーブルと、各実行に必要な入力テーブル群を使用します。それぞれのテーブルがどのような構造を持ち、どのようなデータを含める必要があるかを理解しておくことが重要です。

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

1. 入力テーブル群を指定するテーブル

複数実行のためのパラメータ設定テーブルです。各行が1つの実行パターンを表し、実行ラベルと使用するテーブル群を定義します。

JSONスキーマを表示
[
  {"name":"execution_label","mode":"NULLABLE","description":"label for this parameter","type":"STRING"},
  {"name":"jobs","mode":"NULLABLE","description":"jobs master table","type":"STRING"},
  {"name":"operations","mode":"NULLABLE","description":"operations master table","type":"STRING"},
  {"name":"resources","mode":"NULLABLE","description":"resources master table","type":"STRING"},
  {"name":"operation_orders","mode":"NULLABLE","description":"operation orders table","type":"STRING"},
  {"name":"operation_times","mode":"NULLABLE","description":"operation times table","type":"STRING"},
  {"name":"resource_assigns","mode":"NULLABLE","description":"resource assigns table","type":"STRING"},
  {"name":"config","mode":"NULLABLE","description":"config 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) 実行時のジョブラベル。付与されるラベル名は "{execution_label}.{config_label or row_number}" の形式となります。
jobs 文字列(STRING) ジョブの基本情報が格納されたテーブル名 table_chart スキーマを参照 arrow_downward
operations 文字列(STRING) オペレーションの基本情報が格納されたテーブル名 table_chart スキーマを参照 arrow_downward
resources 文字列(STRING) リソースの基本情報が格納されたテーブル名 table_chart スキーマを参照 arrow_downward
operation_orders 文字列(STRING) ジョブとオペレーションの順序関係が格納されたテーブル名 table_chart スキーマを参照 arrow_downward
operation_times 文字列(STRING) オペレーションごとのリソースと作業時間が格納されたテーブル名 table_chart スキーマを参照 arrow_downward
resource_assigns 文字列(STRING) リソース使用時間の制限が格納されたテーブル名(省略可能) table_chart スキーマを参照 arrow_downward
config 文字列(STRING) 最適化パラメータが格納されたテーブル名 table_chart スキーマを参照 arrow_downward
result 文字列(STRING) 実行結果を保存するテーブル名 table_chart スキーマを参照 arrow_downward。事前に作成する必要はなく、指定したテーブルが存在しない場合は自動で作成されます。既に存在する場合は、結果が追加されます。
result_job 文字列(STRING) 実行に関する詳細情報を保存するテーブル名(省略可能) table_chart スキーマを参照 arrow_downward。事前に作成する必要はなく、指定したテーブルが存在しない場合は自動で作成されます。既に存在する場合は、結果が追加されます。

複数の実行パターンを設定する場合は、このテーブルに複数の行を追加します。各行には異なるテーブル名や実行ラベルを設定でき、これにより異なる条件での最適化を並行して実行できます。

settings プロパティに戻る arrow_upward

2. ジョブテーブル(jobs)

作業(ジョブ)の基本情報を定義するテーブルです。ジョブとは、複数のオペレーション(工程)をまとめた作業の単位を指します。

JSONスキーマを表示
[
  { "name": "job_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "job_name", "type": "STRING", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
job_id 文字列(STRING) ジョブを一意に識別するためのID(例:job_001product_A
job_name 文字列(STRING) ジョブの表示名(例:「製品A製造」、「注文B処理」)。省略可能です。

ジョブは、製品の製造や注文の処理など、複数の工程を含む作業の単位です。例えば、「製品Aの製造」というジョブには、「材料準備」、「加工」、「検査」、「梱包」などの複数のオペレーションが含まれます。

settings パラメータテーブルに戻る arrow_upward

3. オペレーションテーブル(operations)

個別の工程(オペレーション)の基本情報を定義するテーブルです。

JSONスキーマを表示
[
  { "name": "operation_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "operation_name", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "delivery_time", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
operation_id 文字列(STRING) オペレーションを一意に識別するためのID(例:op_001cutting
operation_name 文字列(STRING) オペレーションの表示名(例:「材料切断」、「品質検査」)。省略可能です。
delivery_time 整数(INTEGER) オペレーションを完了すべき時刻(納期)。スケジューリング開始時刻からの経過時間で指定します。省略可能です。

delivery_timeは、スケジューリング全体の開始時刻を基準とした相対時刻で設定します。例えば、開始時刻が12:00で、あるオペレーションの納期が14:00の場合、delivery_timeは120(分)となります。

settings パラメータテーブルに戻る arrow_upward

4. リソーステーブル(resources)

機械や作業者などのリソース情報を定義するテーブルです。

JSONスキーマを表示
[
  { "name": "resource_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "resource_name", "type": "STRING", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
resource_id 文字列(STRING) リソースを一意に識別するためのID(例:machine_01worker_A
resource_name 文字列(STRING) リソースの表示名(例:「加工機械1号」、「作業者A」)。省略可能です。

リソースには、機械、作業者、設備、車両など、オペレーションの実行に必要なあらゆる資源が含まれます。

settings パラメータテーブルに戻る arrow_upward

5. オペレーション順序テーブル(operation_orders)

ジョブ内でのオペレーションの実行順序を定義するテーブルです。

JSONスキーマを表示
[
  { "name": "job_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "operation_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "operation_order", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
job_id 文字列(STRING) ジョブID(上記「2. ジョブテーブル」のjob_idと対応)
operation_id 文字列(STRING) オペレーションID(上記「3. オペレーションテーブル」のoperation_idと対応)
operation_order 整数(INTEGER) ジョブ内でのオペレーションの実行順序。値が小さいほど先に実行されます。

このテーブルで、各ジョブにどのオペレーションが含まれ、どの順序で実行すべきかを定義します。例えば、製品製造ジョブでは「材料準備(order=1)」→「加工(order=2)」→「検査(order=3)」といった順序を設定します。

settings パラメータテーブルに戻る arrow_upward

6. オペレーション時間テーブル(operation_times)

各オペレーションがどのリソースを使用し、どの程度の時間がかかるかを定義するテーブルです。

JSONスキーマを表示
[
  { "name": "operation_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "resource_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "cost_time", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
operation_id 文字列(STRING) オペレーションID(上記「3. オペレーションテーブル」のoperation_idと対応)
resource_id 文字列(STRING) リソースID(上記「4. リソーステーブル」のresource_idと対応)
cost_time 整数(INTEGER) オペレーションの処理時間(0以上の整数)

このテーブルで、どのオペレーションがどのリソースを使用し、どの程度の時間がかかるかを定義します。同一のオペレーションが複数のリソースで実行可能な場合は、複数の行で設定できます。

settings パラメータテーブルに戻る arrow_upward

7. リソース割り当て制限テーブル(resource_assigns)

リソースの使用時間に関する制限を定義するテーブルです(省略可能)。

JSONスキーマを表示
[
  {"name":"resource_id","type":"STRING","mode":"NULLABLE","description":""},
  {"name":"start_time","type":"INTEGER","mode":"NULLABLE","description":""},
  {"name":"end_time","type":"INTEGER","mode":"NULLABLE","description":""},
  {"name":"assign_type","type":"STRING","mode":"NULLABLE","description":""}
]
カラム名 データ型 必須/条件付き 説明
resource_id 文字列(STRING) リソースID(上記「4. リソーステーブル」のresource_idと対応)
start_time 整数(INTEGER) 制限対象の時間帯の開始時刻
end_time 整数(INTEGER) 制限対象の時間帯の終了時刻
assign_type 文字列(STRING) 制限の種類。現在は「unavailable」(使用不可)のみサポート

このテーブルで、特定の時間帯にリソースが使用できない期間(メンテナンス時間、休憩時間など)を定義できます。例えば、start_time=2, end_time=5の場合、時刻2、3、4、5の連続する期間が使用不可となります。

settings パラメータテーブルに戻る arrow_upward

8. 設定テーブル(config)

最適化計算のパラメータを定義するテーブルです。

JSONスキーマを表示
[
  {"name":"label","type":"STRING","mode":"NULLABLE","description":""},
  {"name":"time","type":"RECORD","mode":"NULLABLE",
  "fields":[
    { "name": "limit", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
    { "name": "step", "type": "INTEGER", "mode": "NULLABLE", "description": "" }
  ], "description": "" },
  { "name": "operation_order", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "operation_consistency", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "resource_single_operation", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  {"name":"resource_unavailable","type":"RECORD","mode":"NULLABLE",
  "fields":[
    { "name": "coeff", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
    { "name": "force", "type": "BOOLEAN", "mode": "NULLABLE", "description": "" }
  ], "description": "" },
  { "name": "cost_time", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "delivery_time", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "resource_job_count", "type": "FLOAT", "mode": "NULLABLE", "description": "" },
  { "name": "table_integrity", "type": "FLOAT", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 必須/条件付き 説明
label 文字列(STRING) 複数の同時実行時にラベルに付加される識別子。省略可能です。
time 複合型(RECORD) 時間に関する設定
time.limit 整数(INTEGER) スケジューリングの時間制限
time.step 整数(INTEGER) 時間の刻み幅
operation_order 数値(FLOAT) 作業順序の制約の重み係数
operation_consistency 数値(FLOAT) 作業一貫性の制約の重み係数
resource_single_operation 数値(FLOAT) リソースの非並列制約の重み係数
resource_unavailable 複合型(RECORD) リソースの使用不可に関する制約
resource_unavailable.coeff 数値(FLOAT) ✓* 使用不可の制約の重み係数
resource_unavailable.force 真偽値(BOOLEAN) ✓* 使用不可の制約を強制するかどうか(true: 強制、false: ベストエフォート)
cost_time 数値(FLOAT) 処理時間の最小化制約の重み係数
delivery_time 数値(FLOAT) 納期誤差の最小化制約の重み係数
resource_job_count 数値(FLOAT) リソースごとの使用先ジョブ数の最小化制約の重み係数
table_integrity 数値(FLOAT) テーブルの整合性制約の重み係数

* resource_unavailableの設定項目(coeff, force)は、resource_unavailable自体を定義する場合に必須となります。

各重み係数は、最適化の優先度を調整するために使用します。値が大きいほど、その制約を重視した最適化を実行します。

settings パラメータテーブルに戻る arrow_upward

9. 実行結果テーブル

最適化計算の実行後に生成される結果が格納されるテーブルです。具体的に、どのリソースがどのオペレーションをいつ実行するかが記録されます。

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": "jobshop_job_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "operation_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "resource_id", "type": "STRING", "mode": "NULLABLE", "description": "" },
  { "name": "start_time", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "cost_time", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "delivery_time", "type": "INTEGER", "mode": "NULLABLE", "description": "" },
  { "name": "created_at", "type": "TIMESTAMP", "mode": "NULLABLE", "description": "" }
]
カラム名 データ型 出力有無 説明
job_id 文字列(STRING) 必須 実行された最適化ジョブのID
energy 数値(FLOAT) 必須 計算結果の評価値(エネルギー値)。値が小さいほど、制約条件をよく満たした良い解であることを示します。
solution_index 整数(INTEGER) 必須 複数の解が得られた場合の、解のインデックス番号
jobshop_job_id 文字列(STRING) 必須 最適化対象のジョブID
operation_id 文字列(STRING) 必須 実行されるオペレーションID
resource_id 文字列(STRING) 必須 オペレーションを実行するリソースID
start_time 整数(INTEGER) 必須 オペレーションの開始時刻
cost_time 整数(INTEGER) 必須 オペレーションの処理時間
delivery_time 整数(INTEGER) 任意 オペレーションの完了時刻(納期)。オペレーションテーブルで納期が設定されている場合に出力されます。
created_at タイムスタンプ(TIMESTAMP) 必須 実行ジョブの作成時間

「エネルギー値(energy)」は、最適化計算の「良さ」を示す数値です。この値が小さいほど、設定した制約条件をより良く満たしている「良い解」であると解釈できます。複数実行の場合、異なるパラメータ設定での結果を比較する際の指標として活用できます。

settings パラメータテーブルに戻る arrow_upward

10. 実行メタデータテーブル(result_job / Result Meta)

最適化実行時に生成されるメタデータを保存するテーブルです(省略可能)。最適化結果そのものではなく、ソルバー情報、QUBO詳細、制約評価などの実行に関する詳細な技術情報を格納します。

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": "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) 必須 最適化実行時のJob ID
optimization_type 文字列(STRING) 必須 最適化のタイプ(shift_all, binpacking, jobshop, strict_allocation, ising など)
solver_type 整数(INTEGER) 必須 実行されたsolverの種別(1: dwave, 2: SQBM+, 3: SQBM+_autoising, 4: SQBM+_QP, 5: dwave_CQM, 6: FDA, 7: amplify, 8: Gurobi)
solutions 複合型(RECORD) 任意 解の情報配列。各解のsolution_index(解のインデックス)とenergy(エネルギー値)を含む
total_qubit_num 整数(INTEGER) 任意 使用された全Qubit数
qubo 複合型(RECORD) 任意 QUBO(Quadratic Unconstrained Binary Optimization)の詳細情報。係数の最大値・最小値、密度などの統計情報
solver_response 複合型(RECORD) 任意 ソルバーからの応答情報配列。量子処理時間、計算時間、待機時間、実行回数、メッセージなどの詳細な実行情報
constraints 複合型(RECORD) 任意 制約情報の配列。各制約の名前、エネルギー、係数の評価結果
created_at タイムスタンプ(TIMESTAMP) 必須 メタデータレコードの作成時間

このテーブルは、最適化の実行結果ではなく、実行プロセスの詳細な技術情報を格納します。量子アニーリングやその他のソルバーの実行統計、QUBO問題の特性、制約評価などの情報が含まれ、最適化処理のパフォーマンス分析やデバッグに活用できます。

settings パラメータテーブルに戻る arrow_upward

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