Skip to main content
IBM Quantum Platform

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

  • Qiskit Functions

    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(model=lp_str, backend_name="ibm_phoenix")
result = job.result()
미리보기 버전

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


입력

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

model

유형: 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()

모델은 이항 최적화 문제를 최대화 문제 또는 최소화 문제 중 하나로 표현해야 합니다. 제약 조건은 이항 변수에 대한 부등식이나 등식이 될 수 있다. 정수 변수는 상한과 하한이 명확하게 지정된 경우에만 지원됩니다. 목표와 제약 조건은 고차일 수 있으며, 반드시 선형일 필요는 없습니다.

  • 필수: 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": "weak"}

옵션 목록

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

유형: str

기본값: "strong"

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

  • 선택 사항: "off" / "weak" / "medium" / "strong"
    • "off": 후처리를 비활성화합니다.
    • "weak": 단일 통과 국소 탐색. 모든 비트를 무작위 순서로 한 번씩 뒤집어 보고, 에너지를 줄여주는 뒤집기만 유지하도록 하세요.
    • "medium": 3회 반복 국소 탐색. 약한 전략을 서로 다른 무작위 순서로 세 번 적용하십시오.
    • "strong": 탐욕적 국소 탐색. 에너지 소비를 가장 많이 줄여주는 비트 플립 연산을, 더 이상 개선될 여지가 없을 때까지 반복해서 적용합니다.
penalty_override

유형: float or None

기본값: None

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

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

유형: bool

기본값: False

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

  • 선택 사항: True / False

출력

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

유형: dict[str, Any]

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

  • 예:{"solutions": [{"x_0": 1, "x_1": 0}], "obj_value": 42.0, "feasible": True, "metadata": {...}}

출력 구조

solutions

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

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

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

obj_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

최적화 실행 중에 해당 소자에 제출된 모든 회로에 대한 평균 게이트 수 및 회로 깊이.

  • 예:{"depth": 48, "gate_count": 312, "num_qubits": 20}

오류 처리

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