Skip to main content
IBM Quantum Platform

Aqarios 제약 조건 기반 양자 최적화기 API 참조

  • Qiskit Functions — 파트너 기관들이 개발한 사전 구축형 도구 — 소프트웨어 개발 워크플로의 일부를 추상화하여, 대규모 알고리즘 탐색 및 애플리케이션 개발을 간소화하고 가속화합니다. 이 Qiskit 함수에 대한 가이드를 보려면 클릭하세요.

Aqarios Constrained Quantum Optimizer는 IBM Quantum® 하드웨어에서 제약 조건이 있는 이진 최적화 문제를 해결합니다. 이 도구는 LP, MPS 또는 Luna Model 형식의 문제를 입력으로 받아 처리하며, XY-믹서를 활용한 고정 각도 QAOA를 사용하여 모든 재형식화, 회로 합성, 트랜스파일레이션 및 반복적 웜스타팅을 내부적으로 처리합니다.

이 함수는 다음과 같이 로드되고 호출됩니다:

optimizer = catalog.load("aqarios/constrained-quantum-optimizer")
job = optimizer.run(problem=lp_str, backend_name="ibm_phoenix")
result = job.result()
미리보기 버전

Aqarios 제약 조건 기반 양자 최적화 도구는 ‘ IBM Quantum® Premium Plan ’, ‘Flex Plan’ 및 ‘ On-Prem Plan ’ 사용자만 이용할 수 있습니다. 현재는 미리보기 버전이며, 향후 변경될 수 있습니다.


입력

이 API가 허용하는 모든 입력 매개변수는 다음 목록을 참조하십시오. 필수 매개변수는 호출할 때마다 반드시 지정해야 하며, 그 외의 모든 매개변수는 선택 사항입니다.

problem

유형: str

해결해야 할 이산화 최적화 문제. 다음과 같은 세 가지 형식이 지원됩니다:

  • LP (*.lp): 문자열로 내보낸 표준 LP 파일 형식. 예를 들어, DOcplex의 export_as_lp_string()
  • MPS (*.mps): 표준 MPS 파일 형식을 문자열로 내보낸 것으로, 예를 들어 DOcplex의 export_as_mps_string()
  • Luna 모델 : Base64-encoded 다음을 통해 얻은 Aqarios Luna 모델 객체의 직렬화 결과 model.encode_b64()

모델은 이항 최적화 문제를 최대화 또는 최소화 형태로 표현해야 합니다. 제약 조건은 이항 변수에 대한 부등식이나 등식이 될 수 있다. 정수 변수는 상한과 하한이 명확하게 지정된 경우에만 지원됩니다. 연속(실수형) 변수는 지원되지 않으며, 이러한 변수가 포함된 모델은 오류 코드와 함께 오류가 발생합니다 4710. 목표와 제약 조건은 고차일 수 있으며, 반드시 선형일 필요는 없습니다.

  • 필수: Yes
  • LP 예시:
\Problem name: MIS
Minimize
  obj: ...
Subject To
  c1: ...
  ...
Binaries
  x_0 x_1
End

backend_name

유형: str or None

기본값: None

실행할 IBM Quantum 백엔드의 이름(예: "ibm_phoenix"). 이 설정으로 지정하면 None, 이 기능은 사용 가능한 장치 중 부하가 가장 적은 장치를 자동으로 선택합니다.

  • 필수: 아니오
  • 예:"ibm_phoenix"

options

유형: dict or None

기본값: None

반복적 웜 스타트 방식의 QAOA 동작을 제어하는 알고리즘 구성 옵션. 옵션은 딕셔너리 형태로 지정됩니다. 사용 가능한 모든 키와 해당 기본값은 아래 옵션 목록 을 참조하십시오.

  • 필수: 아니오
  • 예:{"reps": 2, "num_parallel": 10, "postprocessing_level": 1}

옵션 목록

reps

유형: int

기본값: 1

QAOA 레이어 반복 횟수(회로 깊이 매개변수 pp ). 값이 높을수록 회로 깊이가 깊어지고 실행 시간이 길어지는 대가로 해의 품질이 향상되지만, 이로 인해 노이즈가 더 많이 발생할 수 있습니다.

  • 선택 사항: 지정된 범위 내의 정수 [1, 10]
num_parallel

유형: int

기본값: 5

병렬로 실행되는 독립적인 웜 스타트 체인의 수. 이 값을 높이면 고품질 해법을 찾을 확률은 높아지지만, 소모되는 총 샷 예산은 증가합니다.

  • 선택 사항: 지정된 범위 내의 정수 [1, 100]
shots

유형: int

기본값: 500

체인당 반복 횟수당 측정 샷 수.

  • 선택 사항: 지정된 범위 내의 정수 [1, 10000]
total_shots

유형: int

기본값: 5000

단일 웜 스타트 체인에 대한 모든 반복 단계의 총 샷 예산. 이 예산이 소진되면 해당 체인에 대한 반복 루프가 종료됩니다.

  • 선택 사항: 지정된 범위 내의 정수 [1, 1000000]
epsilon

유형: float

기본값: 0.1

웜 스타트 확률에 대한 정규화 매개변수. 확률 분포가 결정론적 상태로 수렴하는 것을 방지하여, 반복 과정 전반에 걸쳐 탐색을 유지합니다.

  • 선택 사항: 범위 내 부유 (0.01, 1)
beta

유형: float

기본값: 10

측정 샘플로부터 새로운 웜 스타트 상태를 도출하는 데 사용되는 볼츠만 가중치의 역온도. 값이 클수록 확률 질량이 더 낮은 에너지의 표본에 집중됩니다.

  • 선택지: 부유, 만족 beta > 0
approximation_degree

유형: float

기본값: 1.0

비용 함수에 적용되는 근사 수준과 트랜스파일링 과정에서 적용되는 근사 수준을 제어합니다. 값이 낮을수록 근사값을 도입함으로써 회로 깊이가 줄어들지만, 이는 해의 품질에 영향을 미칠 수 있습니다.

  • 선택 사항: 범위 내 부유 [0.0, 1.0]
postprocessing_level

유형: int

기본값: 3

해의 품질을 높이기 위해 각 샘플링 단계 후에 적용되는 고전적인 사후 처리 기법의 장점. 레벨이 높을수록 추가적인 기존 연산 시간을 소모하는 대신, 보다 적극적인 지역 검색이 적용됩니다.

  • 선택 사항: 지정된 범위 내의 정수 [0, 3]
    • 0: 후처리를 비활성화합니다.
    • 1: 단일 통과 국소 탐색. 모든 비트를 무작위 순서로 한 번씩 뒤집어 보고, 에너지를 줄이는 뒤집기만 유지하도록 하세요.
    • 2: 3회 반복 국소 탐색. 레벨을 서로 다른 무작위 순서로 세 1 번 적용하세요.
    • 3: 탐욕적 국소 탐색. 에너지 소비를 가장 크게 줄여주는 비트 플립 연산을, 더 이상 개선의 여지가 없을 때까지 반복해서 적용합니다.
penalty_override

유형: float or None

기본값: None

제약 조건을 목적 함수에 추가되는 페널티 항으로 변환할 때 사용되는 페널티 값을 수동으로 재정의합니다. 기본적으로 페널티는 문제 구조에서 자동으로 산출됩니다. 자동으로 산출된 값이 실현 불가능한 결과를 초래하는 경우에만 이 옵션을 사용하십시오.

  • 선택 사항: 를 충족하는 값을 입력하거나 penalty_override > 0, 자동 값을 사용하려면 None
use_session

유형: bool

기본값: False

작업 실행 시 ‘ IBM Quantum Compute ’ 서비스 세션 모드를 사용할지 여부. 세션을 활성화하면 반복 계산 전반에 걸쳐 QPU와의 전용 연결을 유지함으로써 회로 실행 오버헤드를 줄여주며, 이를 통해 전체 실제 실행 시간을 단축할 수 있습니다.

  • 선택 사항: True / False
seed_transpiler

유형: int or None

기본값: None

선택된 백엔드에 회로를 매핑하는 트랜스파일러로 전달된 시드. 실행 간에 회로 합성 및 배선 결과가 재현될 수 있도록 고정된 값을 설정하십시오. 로 설정하면 None, 트랜스파일러는 비결정론적인 방식으로 시드를 생성하므로, 동일한 문제를 반복해서 실행할 경우 서로 다른 회로 레이아웃이 생성될 수 있습니다.

  • 선택 사항: 임의의 정수, 또는 비결정적 시드인 None 경우
job_tags

유형: list[str]

기본값: []

함수가 QPU로 제출하는 모든 양자 컴퓨팅 작업에 추가 태그가 첨부됩니다. 이 함수는 항상 작업에 함수 작업 ID와 문제 이름을 태그로 지정하며 "aqarios/constrained-quantum-optimizer", 여기에 지정된 항목들은 해당 목록에 추가됩니다. 이 기능을 사용하여 워크로드 목록에 있는 기본 작업들을 그룹화하거나 필터링할 수 있습니다.

  • 선택 사항: 문자열 목록
  • 예:["my-experiment", "mis-benchmark"]

출력

이 API의 출력 결과는 에서 반환되는 딕셔너리로 job.result(), 여기에는 찾아낸 최적의 해결책과 관련 메타데이터가 포함되어 있습니다.

유형: dict[str, Any]

해법 할당, 목적 함수 값, 타당성 상태 및 실행 시간 메타데이터가 포함된 결과 사전.

예:

{
    'solutions': [{'x_1': 0, 'x_2': 1, 'x_3': 0, 'x_4': 1, 'x_5': 1}],
    'solution_bitstrings': ['01011'],
    'raw_energy': -6.0,
    'objective_value': -6.0,
    'feasible': True,
    'metadata': {
        'resource_usage': {
            'RUNNING: MAPPING': {'CPU': 5.405},
            'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU': 9.902},
            'RUNNING: WAITING_FOR_QPU': {'CPU': 25.456},
            'RUNNING: EXECUTING_QPU': {'QPU': 25.202},
            'RUNNING: POST_PROCESSING': {'CPU': 6.481}
        },
        'circuit_metrics': {
            'before_transpilation': {
                'num_qubits': 6,
                'gate_count': 42,
                'depth': 15,
                'two_qubit_gate_count': 12,
                'two_qubit_gate_depth': 7,
                'operations': {'rz': 12, 'p': 8, 'ry': 7, 'rzz': 4, 'cx': 3,
                               'xx_plus_yy': 3, 'global_phase': 2, 'cry': 2, 'x': 1}
            },
            'after_transpilation': {
                'num_qubits': 6,
                'gate_count': 254,
                'depth': 100,
                'two_qubit_gate_count': 48,
                'two_qubit_gate_depth': 33,
                'operations': {'rz': 78, 'sx': 122, 'cz': 48, 'measure': 6, 'x': 0}
            }
        },
        'solver_info': {
            'variable_mapping': {'x_1': 0, 'x_2': 1, 'x_3': 2, 'x_4': 3, 'x_5': 4}
        }
    }
}

출력 구조

solutions

유형: list[dict[str, int]]

발견된 최상의 해결책 목록. 각 항목은 변수 이름(예: "x_0")을 해당 이진 할당값(0 또는 1)에 매핑하는 사전입니다. 이 목록에는 여러 개의 퇴화 최적점이 확인된 경우에만 하나 이상의 항목이 포함됩니다.

  • 예:[{"x_0": 1, "x_1": 0, "x_2": 1}]

solution_bitstrings

유형: list[str]

에서와 동일한 해답을 비트열로 인코딩한 것입니다 solutions. 이 목록의 항목 ii 는 의 항목 ii 에 해당합니다 solutions. 를 사용하여 비트열의 어느 위치에 어떤 변수가 저장되어 있는지 확인하세요 metadata.solver_info.variable_mapping : 변수 의 값은 v 입니다 bitstring[variable_mapping[v]].

  • 예:["101"]

objective_value

유형: float

발견된 최선의 해의 객관적 가치로, 원래 문제의 관점에서 표현된 것. 최대화 문제의 경우, 더 나은 해일수록 이 값은 더 커지고, 최소화 문제의 경우 더 작아집니다.

  • 예:42.0

raw_energy

유형: float

최적 해의 원시 QAOA 에너지는 항상 최소화 값으로 표현됩니다. 여기에는 문제 재정의 과정에서 추가된 모든 페널티 조건이 포함되며, 제약 조건 위반을 진단하는 데 유용합니다.

  • 예:-38.5

feasible

유형: bool

반환된 해가 원래 입력 모델의 모든 제약 조건을 만족하는지 여부. 페널티 값이 하드웨어에 대한 모든 제약 조건을 충족시키기에 불충분한 경우, 그 결과는 실현 불가능할 수 있습니다.

  • 예:True

metadata

resource_usage

유형: dict

알고리즘의 각 단계(매핑, 하드웨어 최적화, QPU 실행, 후처리)별로 분류한 양자 및 고전적 자원 소비량.

  • 예:
{'RUNNING: MAPPING': {'CPU': 4.57},
 'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU': 0.177},
 'RUNNING: WAITING_FOR_QPU': {'CPU': 9.238},
 'RUNNING: EXECUTING_QPU': {'QPU': 30},
 'RUNNING: POST_PROCESSING': {'CPU': 0.093}}

circuit_metrics

유형: dict or None

QAOA 회로의 게이트 수와 회로 깊이. 이는 합성된 결과와 디바이스에서 실행된 결과 모두로 보고되었다. 이 값은 전처리 단계에서 문제가 해결되어 회로가 실행되지 않은 경우 None (오류 코드 4712)에 나타납니다.

before_transpilation

유형: dict

문제에서 합성된 추상 QAOA 회로의 측정값으로, 백엔드로 매핑되기 전의 상태입니다.

after_transpilation

유형: dict

장치에 실제로 전송된 회로의 측정값. 최적화 과정에서 실행된 모든 회로에 대해 평균을 구한 후, 다음 정수로 반올림합니다.

두 항목 모두 다음과 같은 필드를 포함합니다: num_qubits (회로 내 큐비트 수), gate_count (총 연산 횟수), depth (회로 깊이), two_qubit_gate_count (2-큐비트 게이트 수), two_qubit_gate_depth (2-큐비트 게이트만 카운트한 깊이), 그리고 operations (게이트 이름과 해당 게이트의 등장 횟수를 매핑한 값).

solver_info

유형: dict or None

솔버가 문제를 어떻게 표현했는지에 대한 추가 정보.

variable_mapping

유형: dict[str, int]

각 변수 이름을.의 항목 내 해당 문자 위치에 매핑합니다 solution_bitstrings.

  • 예:{"x_0": 0, "x_1": 1, "x_2": 2}

오류 처리

코드
설명
4710해당 입력 모델은 지원되지 않습니다. 모델에 함수가 풀 수 없는 연속형(실수형) 변수나 명시적인 범위가 지정되지 않은 정수형 변수가 포함되어 있습니다.
4711입력된 문자열을 모델로 파싱할 수 없습니다. 가 유효한 LP, MPS 또는 Luna Model 문자열인지 problem 확인하십시오.
4712이 모델은 전처리 단계에서 최적 해를 구했으며, 양자 계산은 수행되지 않았습니다. 결과는 여전히 반환되며, 는 로 설정됩니다 metadata.circuit_metrics``None .
4719예기치 않은 내부 함수 오류가 발생했습니다. 지원 번호(Job ID)를 기재하여 [email protected] 으로 문의해 주십시오.
일반적인 오류 상황
  • 지원되지 않는 변수 유형 : 이 함수는 이산 문제만 해결합니다. 연속형(실수형) 변수는 지원되지 않으며, 정수형 변수에는 하한과 상한을 명시적으로 지정해야 합니다. 이를 위반하는 모델은 오류 코드와 함께 실패합니다 4710.
  • 잘못된 문제 형식 : problem 문자열을 유효한 LP, MPS 또는 Luna 모델로 구문 분석할 수 없는 경우, 작업은 오류 코드와 함께 실패합니다 4711.
  • 옵션 유효성 검사 오류 : 문서화된 범위를 벗어난 옵션 키나 값이 있으면 작업이 즉시 오류 코드와 함께 실패합니다 1221.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.