Skip to main content
IBM Quantum Platform

양자 포트폴리오 최적화기 API 참조

  • Qiskit Functions

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


입력

이 함수의 입력 인수는 다음 목록에 설명되어 있습니다. 자산 데이터 및 기타 문제 사양을 제공해야 하며, 최적화 프로세스를 사용자 정의하기 위해 VQE 설정을 포함할 수도 있습니다.

assets

유형: `json`

자산 가격이 수록된 사전. 데이터는 특정 날짜의 금융 자산 종가 정보를 저장하는 JSON 객체 형식으로 구성되어야 합니다. 형식은 다음과 같습니다.

  • 주키(문자열): 금융 자산의 이름 또는 티커 심볼(예: " 8801.T ").
  • 보조 키(문자열): YYYY-MM-DD 형식의 날짜.
  • 값(숫자): 지정된 날짜의 자산 종가. 가격은 표준화된 값이나 표준화되지 않은 값으로 입력할 수 있습니다.

모든 사전은 동일한 보조 키(날짜)를 가져야 한다는 점에 유의하십시오. 특정 자산에 다른 자산에는 있는 날짜 정보가 누락된 경우, 데이터의 일관성을 유지하기 위해 해당 정보를 입력해야 합니다. 예를 들어, 해당 자산의 가장 최근 종가를 활용하면 됩니다.

  • 필수: Yes
  • 예:
{
    "8801.T": {
        "2023-01-01": 2374.0,
        "2023-01-02": 2374.0,
        "2023-01-03": 2374.0,
        "2023-01-04": 2356.5,
        ...
    },
    "AAPL": {
        "2023-01-01": 145.2,
        "2023-01-02": 146.5,
        "2023-01-03": 147.3,
        "2023-01-04": 148.1,
        ...
    },
    ...
}
{
    "asset_name": {
        "date": closing_value,
        ...
    },
    ...
}
참고

자산 데이터에는 최소한 (입력 qubo_settings 섹션 참조) (nt+1) * dt 타임스탬프(예: 일)에 대한 종가가 포함되어야 합니다.

qubo_settings

유형: `json`

QUBO의 설정. 다음 표는 사전의 qubo_settings 키를 설명합니다. 시간 단계 수 nt, 해상도 큐비트 수를 지정하여 사전(dictionary)을 nq 생성하거나, 기타 max_investment 기본값을 변경하십시오.

이름
유형
설명
필수
기본값
ntint시간 단계 수-4
nqint해상도 큐비트 수-4
max_investment플로트(스위치일 경우)모든 자산에 걸쳐 투자된 통화 단위의 최대 수-1,000만
dt*int각 시간 단계에서 고려되는 시간 창. 이 유닛은 자산 데이터 내 키들 간의 시간 간격을 일치시킵니다아니오6시간에서 30분-
risk_aversion플로트(스위치일 경우)위험 회피 계수아니오1000-
transaction_fee플로트(스위치일 경우)거래 수수료 계수아니오0.01-
restriction_coeff플로트(스위치일 경우)QUBO 모델링 내에서 문제 제약 조건을 충족시키기 위해 사용되는 라그랑주 승수아니오1-
  • 필수: Yes

ansatz_settings

유형: `json`

기본값: `None`

안자츠의 설정. 기본 옵션을 수정하려면 다음 키를 사용하여 해당 ansatz_settings 매개변수에 대한 사전(dictionary)을 생성하십시오. 기본적으로 ansatz는 로 설정되어 "real_amplitudes" 있으며, 두 가지 추가 옵션(다음 표 참조)은 모두 로 설정되어 False있습니다.

이름
유형
설명
필수
기본값
ansatz*str사용할 접근법아니오"real_amplitudes"
multiple_passmanager**부울여러 패스 매니저 서브루틴을 사용할 수 있게 합니다(Tailored ansatz에서는 사용할 수 없음)아니오False
dd_enable부울동적 분리 기능을 추가합니다아니오False

* 가능한 접근법

  • real_amplitudes
  • cyclic
  • optimized_real_amplitudes
  • tailored (백엔드 ibm_torino 전용, 7개의 자산, 4개의 시간 단계, 4개의 해상도 큐비트)

** 가 로 설정된 False multiple_passmanager 경우, 이 함수는 를 사용하는 기본 Qiskit 패스 optimization_level=3 관리자를 활용합니다. 이 옵션이 설정된 True 경우, 해당 multiple_passmanager 서브루틴은 세 가지 패스 매니저를 비교합니다: 이전의 기본 Qiskit 패스 매니저, QPU의 첫 번째 이웃 체인에 걸쳐 큐비트를 매핑하는 패스 매니저, 그리고 AI 트랜스파일러 서비스입니다. 그런 다음, 추정된 누적 오차가 더 작은 패스 매니저가 선택됩니다.

  • 필수: 아니오

optimizer_settings

유형: `json`

기본값: `None`

최적화 도구 설정. 이 매개변수는 최적화 프로세스의 조정 가능한 옵션들을 포함하는 사전입니다.

이름
유형
설명
필수
기본값
primitive_optionsjson원시형의 설정아니오-
optimizerstr선택된 클래식 최적화기아니오"differential_evolution"
optimizer_optionsjson최적화기 구성아니오-
참고

현재 사용할 수 있는 최적화기 옵션은 단 하나뿐입니다 "differential_evolution".

under primitive_options and optimizer_options 키 아래에 다음 매개변수를 가진 딕셔너리를 설정합니다:

primitive_options

이름
유형
설명
필수
기본값
sampler_shotsint샘플러의 촬영 횟수.아니오100,000-
estimator_shotsint에스티메이터의 촬영 횟수.아니오25000-
estimator_precision플로트(스위치일 경우)기대값의 목표 정밀도. 지정된 경우, 소수점 이하 자릿수가 estimator_shots대신 사용됩니다.아니오None0.015625 · (1 / √4096)
max_timeint 또는 str런타임 세션이 강제 종료되기 전까지 유지될 수 있는 최대 시간. 초(int) 단위로 지정하거나, 다음과 같이 문자열로 지정할 "2h 30m 40s" 수 있습니다. 시스템에서 정한 최대값보다 작아야 합니다.아니오None"1h 15m"

optimizer_options

이름
유형
설명
필수
기본값
num_generationsint생성 수아니오20
population_sizeint인구 규모아니오20
mutation_range목록최대 및 최소 변이 계수아니오[0, 0.25]
recombination플로트(스위치일 경우)재조합 인자아니오0.4
max_parallel_jobsint병렬로 실행되는 QPU 작업의 최대 수아니오3
max_batchsizeint최대 일괄처리 크기아니오2억
참고
  • 초기 개체군이 포함되므로, 차등 진화(differential evolution)가 평가하는 세대 수는 num_generations +1입니다.

  • 회로 총 개수는 다음과 같이 계산됩니다 (num_generations + 1) * population_size.

  • 일반적으로 더 큰 표본 크기와 더 많은 세대를 사용하면 최적화 결과의 품질이 향상됩니다. 그러나 개체군 크기를 120을 초과하거나 세대 수를 20보다 많이 설정하는 것(예: 120 * 21 = 2520 총 회로 수)은 권장되지 않습니다. 이는 과도한 수의 회로가 생성되어, 처리하는 데 많은 계산 자원이 소요되고 시간이 오래 걸릴 수 있기 때문입니다.

  • 이 함수를 사용하면 이전 최적화 과정을 다시 시작할 수 있으며, (와만 previous_session_id 변경하고 값을 늘린 채 동일한 num_generations입력값을 제공함으로써) 언제든지 세대 수를 늘릴 수 있습니다.

  • 필수: 아니오

backend

유형: `str`

QPU 백엔드 이름

  • 필수: 아니오
  • 예:ibm_torino

previous_session_id

유형: `list` of `str`

기본값: Empty list

이전 실행 기록에서 데이터를 가져오기 위한 세션 ID 목록. 이전 세션 하나 이상에서 처리된 작업의 실행을 재개하거나 해당 작업을 가져오려면, 세션 ID 목록을 previous_session_id 매개변수로 전달해야 합니다. 이는 특히 프로세스 중 발생한 오류로 인해 최적화 작업이 완료되지 못했지만, 실행을 마무리해야 하는 경우에 유용합니다. 이를 위해서는 설명된 대로 목록과 함께 초기 실행 previous_session_id 시 사용된 것과 동일한 인수를 제공해야 합니다.

  • 필수: 아니오
  • 예:["session_id_1", "session_id_2"]

apply_postprocess

유형: `bool`

기본값: `True`

노이즈 감지 SQD 후처리를 적용합니다.

  • 필수: 아니오
  • 예:True

tags

유형: `list` of `str`

기본값: Empty list

실험을 식별하기 위한 태그 목록.

  • 필수: 아니오
  • 예:["optimization", "quantum_computing"]
경고

이전 세션의 데이터를 불러오는 데(최적화를 재개하기 위해) 최대 1시간의 일반적인 계산 시간이 소요될 수 있습니다. 이 작업은 양자 런타임 리소스를 소모하지 않습니다.

참고

IBM Quantum Compute Service의 작업 제한 사항을 준수해야 합니다.

  • 샘플러: sampler_shots <= 10_000_000.
  • 추정량: max_batchsize * estimator_shots * observable_size <= 10_000_000 (이 함수의 경우, 관측 가능한 변수의 모든 항이 교환법칙을 만족하므로 observable_size=1).

자세한 내용은 ‘작업 제한’ 가이드를 참조하십시오.


출력

이 함수는 두 개의 딕셔너리를 반환합니다. "result" 하나는 최적의 해와 이에 해당하는 최소 목적 함수 비용을 포함한 최상의 최적화 결과를 담고 있는 딕셔너리이고, 다른 "metadata" 하나는 최적화 과정에서 도출된 모든 결과의 데이터와 각 결과에 대한 평가 지표를 포함하고 있습니다.

첫 번째 사전은 가장 우수한 성능을 보인 솔루션에 중점을 두는 반면, 두 번째 사전은 목표 비용 및 기타 관련 지표를 포함하여 모든 솔루션에 대한 상세한 정보를 제공합니다.

result 사전

유형: dict[str, dict[str, float]]

시간 경과에 따른 투자 전략을 포함하며, 각 타임스탬프는 자산별 투자 비중(각 비중은 총 투자 금액으로 정규화된 투자 금액)에 대응합니다.

  • 예:{'time_1': {'asset_1': 0.2, 'asset_2': 0.3, ...}, ...}

metadata 사전

유형: dict[str, Any]

분석 과정에서 생성된 데이터(해법, 비용, 지표 등 포함).

이름
유형
설명
예제
session_idstrIBM Quantum 세션의 고유 식별자."d0h30qjvpqf00084fgw0"
all_samples_metricsdict각 후처리된 샘플에 대한 비용이나 제약 조건 등 다양한 측정값을 포함하는 사전.설명 참조
sampler_counts[d] ictstr, int키가 샘플링된 해의 비트열 표현이고, 값이 그 개수인 사전.{"101010": 3, "111000": 1}
asset_order[liststr]투자 전략 내에서 각 시간 단계별 자산의 투자 순서를 나열하십시오.["Asset_0", "Asset_1", "Asset_3"]
QUBO목록[ [listfloat] ]이 문제의 큐보 행렬.[[-6.96e-01, 5.81e-01, -1.26e-02, 0.00e+00], ...]
resource_summarydict[문자열, [문자] 열, 실수]프로세스의 각 단계별 CPU 및 QPU 사용 시간(초 단위) 요약.{'RUNNING: EXECUTING_QPU': {'CPU_TIME': 412.84, 'QPU_TIME': 87.22}, ...}

사전 all_samples_metrics 설명

이름
유형
설명
예제
investment_trajectories[목] 록목록해독된 양자 상태에서 도출된 투자 전략.[[1, 2, 2], [1, 2, 1]]
counts[듣기]각 투자 경로가 표본 추출된 횟수. 색인 일치 investment_trajectories.[5, 3]
objective_costs[listfloat]각 투자 경로에 대한 목적 함수의 값을 낮은 순서부터 높은 순서로 정렬한 것.[0.98, 1.25]
sharpe_ratios[listfloat]각 투자 경로의 위험 조정 수익률(샤프 지수). 인덱스 순으로 정렬됨.[1.1, 0.7]
returns[listfloat]각 투자 경로의 기대 수익률. 인덱스 순으로 정렬됨.[0.15, 0.10]
rest_breaches[listfloat]각 투자 경로 내 최대 제약 조건 편차. 인덱스 순으로 정렬됨.[0.0, 0.25]
transaction_costs[listfloat]각 투자 경로와 관련된 예상 거래 비용. 인덱스 순으로 정렬됨.[0.01, 0.02]
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.