クイックスタートガイド#

このガイドは、OMMX形式の量子最適化ベンチマークデータセットへの標準化されたアクセスを提供するOMMX Quantum Benchmarksの使い方をご案内します。

インストール#

pipを通じてこのパッケージをインストールしてください!

pip install ommx-quantum-benchmarks

または、GitHubから直接インストールすることもでき、こちらが最新版となります:

pip install git+https://github.com/Jij-Inc/OmmxQuantumBenchmarks.git

基本的な使い方#

Marketsplitデータセットを使った簡単な例から始めましょう:

from ommx_quantum_benchmarks.qoblib import Labs

# Create a dataset instance
dataset = Labs()

# Check basic properties
print(f"Dataset name: {dataset.name}")
print(f"Available models: {dataset.model_names}")
print(f"Description: {dataset.description}")
Dataset name: 02_labs
Available 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.

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

各データセットには複数のインスタンスが含まれています。特定のインスタンスを読み込んでみましょう:

# Choose a model and instance
model_name = "integer"
instance_name = "labs002"

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

print(f"Loaded instance: {instance_name}")
print(f"Instance type: {type(instance)}")
print(f"Solution type: {type(solution)}")
Loaded instance: labs002
Instance type: <class 'ommx.v1.Instance'>
Solution type: <class 'ommx.v1.Solution'>

解の操作#

OMMX Quantum Benchmarksは多くのインスタンスに対する解を提供しています。これらの解を評価し、操作することができます:

if solution is not None:
    # Evaluate the solution using the instance
    evaluated_solution = instance.evaluate(solution.state)
    
    print(f"Original solution objective: {solution.objective}")
    print(f"Evaluated solution objective: {evaluated_solution.objective}")
    print(f"Solution is feasible: {evaluated_solution.feasible}")
    
    # Check if the solutions match
    objectives_match = solution.objective == evaluated_solution.objective
    feasibility_matches = solution.feasible == evaluated_solution.feasible
    
    print(f"Objectives match: {objectives_match}")
    print(f"Feasibility matches: {feasibility_matches}")
else:
    print("No solution available for this instance")
Original solution objective: 1.0
Evaluated solution objective: 1.0
Solution is feasible: True
Objectives match: True
Feasibility matches: True

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

各データセットには、異なるモデルに対して異なる利用可能なインスタンスがあります:

# Check available instances for each model
for model, instances in dataset.available_instances.items():
    print(f"Model '{model}' has {len(instances)} instances:")
    # Show first 5 instances as example
    for instance in instances[:5]:
        print(f"  - {instance}")
    if len(instances) > 5:
        print(f"  ... and {len(instances) - 5} more")
    print()
Model 'integer' has 99 instances:
  - labs002
  - labs003
  - labs004
  - labs005
  - labs006
  ... and 94 more

Model 'quadratic_unconstrained' has 99 instances:
  - labs002
  - labs003
  - labs004
  - labs005
  - labs006
  ... and 94 more

異なるデータセットの操作#

OMMX Quantum Benchmarksは、複数の最適化問題カテゴリへのアクセスを提供します:

from ommx_quantum_benchmarks.qoblib import (
    Marketsplit, Labs, Portfolio, IndependentSet, Topology
)

# Create instances of different datasets
datasets = {
    "Marketsplit": Marketsplit(),
    "Labs": Labs(),
    "Portfolio": Portfolio(),
    "IndependentSet": IndependentSet(),
    "Topology": Topology()
}

# Display information about each dataset
for name, ds in datasets.items():
    print(f"{name}:")
    print(f"  Name: {ds.name}")
    print(f"  Models: {ds.model_names}")
    total_instances = sum(len(instances) for instances in ds.available_instances.values())
    print(f"  Total instances: {total_instances}")
    print()
Marketsplit:
  Name: 01_marketsplit
  Models: ['binary_linear', 'binary_unconstrained']
  Total instances: 0

Labs:
  Name: 02_labs
  Models: ['integer', 'quadratic_unconstrained']
  Total instances: 198

Portfolio:
  Name: 06_portfolio
  Models: ['binary_quadratic', 'quadratic_unconstrained']
  Total instances: 0

IndependentSet:
  Name: 07_independent_set
  Models: ['binary_linear', 'binary_unconstrained']
  Total instances: 0

Topology:
  Name: 10_topology
  Models: ['flow_mip', 'seidel_linear', 'seidel_quadratic']
  Total instances: 0

次のステップ#

基本を学んだので、次のことができます:

  1. 使用ガイドを探索する:データセットとインスタンスの操作に関する詳細情報

  2. サンプルをチェックする:異なる問題タイプの実用的な使用例

  3. APIリファレンスを閲覧する:利用可能な全てのクラスとメソッドの完全なドキュメント

OMMX Quantum Benchmarksで楽しく最適化しましょう!