クイックスタートガイド#
このガイドは、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
次のステップ#
基本を学んだので、次のことができます:
使用ガイドを探索する:データセットとインスタンスの操作に関する詳細情報
サンプルをチェックする:異なる問題タイプの実用的な使用例
APIリファレンスを閲覧する:利用可能な全てのクラスとメソッドの完全なドキュメント
OMMX Quantum Benchmarksで楽しく最適化しましょう!