使用ガイド#

このセクションでは、OMMX Quantum Benchmarksを通じて利用可能な量子最適化ベンチマークデータセットの操作に関する詳細情報を提供します。

概要#

OMMX Quantum Benchmarksは、OMMX形式に変換された最適化ベンチマークデータセットへのアクセスを提供します。現在、QOBLIBリポジトリから選択されたデータセットを含んでおり、追加のベンチマークソースへの拡張を予定しています。利用可能なデータセットは一貫したインターフェースパターンに従っています:

  1. データセットクラス:各問題カテゴリには独自のクラスがあります(例:MarketsplitLabsPortfolio

  2. モデルタイプ:各データセットは異なるモデル定式化をサポートしています(例:バイナリ線形、二次制約なし)

  3. インスタンス読み込み:データセット呼び出しインターフェースを使用して特定の問題インスタンスにアクセスします

主要な概念#

データセット#

データセットは、関連する最適化問題のコレクションを表します。各データセットには以下があります:

  • 固有の名前と説明

  • 複数のモデル定式化

  • 各モデルの利用可能なインスタンス

  • 標準化されたアクセスメソッド

モデル#

同じ問題タイプの異なる数学的定式化:

  • バイナリ線形:線形制約を持つバイナリ変数

  • バイナリ制約なし:制約のないバイナリ変数

  • 整数線形:線形制約を持つ整数変数

  • 二次制約なし:制約のない二次目的関数

  • 混合整数線形:連続変数と整数変数の混合

インスタンス#

データセット内の特定の問題インスタンス、それぞれに以下があります:

  • 固有の識別子(インスタンス名)

  • OMMX形式の問題データ

  • オプションの最適解または既知の解

データセットの操作#

基本的なデータセット情報#

from ommx_quantum_benchmarks.qoblib import Labs

dataset = Labs()
print(f"Name: {dataset.name}")
print(f"Models: {dataset.model_names}")  
print(f"Description: {dataset.description}")
Name: 02_labs
Models: ['integer', 'quadratic_unconstrained']
Description: Labs dataset in ommx format, originally provided by https://git.zib.de/qopt/qoblib-quantum-optimization-benchmarking-library/-/tree/main/02-labs?ref_type=heads.

利用可能なインスタンスの探索#

# Get all available instances
for model, instances in dataset.available_instances.items():
    print(f"{model}: {len(instances)} instances")
    for instance in instances[:3]:  # Show first 3 instances for brevity
        print(f"  - {instance}")
    
# Check if specific instance exists
model_name = "integer"
instance_name = "labs002"
if instance_name in dataset.available_instances[model_name]:
    print("Instance found!")
integer: 99 instances
  - labs002
  - labs003
  - labs004
quadratic_unconstrained: 99 instances
  - labs002
  - labs003
  - labs004
Instance found!

インスタンスと解の読み込み#

# Load instance and solution
instance, solution = dataset(model_name, instance_name)

# Check if solution is available
if solution is not None:
    print(f"Solution objective: {solution.objective}")
    print(f"Solution feasible: {solution.feasible}")
else:
    print("No solution available for this instance")
Solution objective: 1.0
Solution feasible: True

次のトピック#