Aqarios 제약 조건 기반 양자 최적화기 API 참조
Qiskit Functions — 파트너 기관들이 개발한 사전 구축형 도구 — 소프트웨어 개발 워크플로의 일부를 추상화하여, 대규모 알고리즘 탐색 및 애플리케이션 개발을 간소화하고 가속화합니다. 이 Qiskit 함수에 대한 가이드를 보려면 클릭하세요.
Aqarios 제약 조건 기반 양자 최적화 도구 가이드
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 레이어 반복 횟수(회로 깊이 매개변수 ). 값이 높을수록 회로 깊이가 깊어지고 실행 시간이 길어지는 대가로 해의 품질이 향상되지만, 이로 인해 노이즈가 더 많이 발생할 수 있습니다.
- 선택 사항: 지정된 범위 내의 정수
[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.