Skip to main content
IBM Quantum Platform

Fermion

qiskit_addon_sqd.fermion

페르미온 시스템 연구를 위한 기능입니다.

SCIState

class SCIState(amplitudes, ci_strs_a, ci_strs_b, norb, nelec)

GitHub

베이스: object

양자 상태를 설명하는 진폭과 결정 인자입니다.

매개변수

amplitudes

유형: ndarray

M=M = len(ci_strs_a) 및 NN = len(ci_strs_b)인 M×NM \times N 배열. amplitudes[i][j] 는 결정자 쌍(ci_strs_a[i], ci_strs_b[j])의 진폭입니다.

ci_strs_a

유형: ndarray

알파 결정 요인.

ci_strs_b

유형: ndarray

베타 결정 요인.

load

classmethod load(filename)

GitHub

.npz 파일에서 SCIState 개체를 로드합니다.

nelec

유형: tuple[int, int]

알파 및 베타 전자의 수입니다.

norb

유형: int

공간 궤도의 수입니다.

orbital_occupancies

orbital_occupancies()

GitHub

평균 궤도 점유량.

리턴 유형

튜플 [*ndarray*, ndarray ]

rdm

rdm(rank=1, spin_summed=False)

GitHub

감소된 밀도 행렬을 계산합니다.

매개변수

리턴 유형

ndarray

save

save(filename)

GitHub

SCIState 개체를.npz 파일에 저장합니다.

spin_square

spin_square()

GitHub

회전 제곱을 반환합니다.

리턴 유형

부동

bitstring_matrix_to_ci_strs

bitstring_matrix_to_ci_strs(bitstring_matrix, open_shell=False)

GitHub

bitstring_matrix 의 비트 문자열(행)을 행렬식의 정수 표현으로 변환합니다.

이 함수는 bitstring_matrix 의 각 비트 문자열을 반으로 분리하여 정수 표현으로 변환한 다음 마지막으로 각각의 (스핀업 또는 스핀다운) 목록에 추가합니다. 이러한 목록은 이 함수에서 정렬되어 출력됩니다.

매개변수

  • bitstring_matrix (ndarray) – 각 행이 단일 비트 문자열을 나타내는 비트 값의 bool 표현의 2D 배열입니다
  • open_shell (bool) – 비트스트링의 왼쪽과 오른쪽 절반의 고유한 구성을 분리하여 보관할지 여부를 지정하는 플래그입니다. False, 비트 문자열의 왼쪽과 오른쪽 절반의 구성이 하나의 고유한 구성 집합으로 결합됩니다. 왼쪽 및 오른쪽 비트 문자열 모두에 대해 결합된 세트가 반환됩니다.

리턴

비트 문자열의 오른쪽(스핀업) 및 왼쪽(스핀다운) 절반을 각각 나타내는 결정자 목록의 length-2 튜플입니다.

리턴 유형

튜플 [*ndarray*, ndarray ]

diagonalize_fermionic_hamiltonian

diagonalize_fermionic_hamiltonian(one_body_tensor, two_body_tensor, bit_array, samples_per_batch, norb, nelec, *, num_batches=1, energy_tol=1e-08, occupancies_tol=1e-05, max_iterations=100, sci_solver=None, symmetrize_spin=False, max_dim=None, include_configurations=None, initial_occupancies=None, carryover_threshold=0.0001, callback=None, seed=None)

GitHub

샘플 기반 양자 대각선화(SQD) 알고리즘을 실행합니다.

매개변수

  • one_body_tensor (ndarray) – 해밀턴의 일체 텐서입니다.

  • two_body_tensor (ndarray) – 해밀턴의 2체 텐서입니다.

  • bit_array (BitArray) – 샘플링된 비트스트링의 배열입니다. 각 비트 문자열은 알파 부분과 베타 부분이 모두 연결되어 있어야 하며, 알파 부분은 다음과 같이 오른쪽에 연결되어 있어야 합니다: [b_N, ..., b_0, a_N, ..., a_0].

  • samples_per_batch (int) – 서브샘플링된 각 비트스트링 배치에 포함할 비트스트링의 개수입니다.

  • norb (int) – 공간 궤도의 수입니다.

  • nelec (tuple[int, int]) – 알파 및 베타 전자의 수입니다.

  • num_batches (int) – 각 구성 복구 반복에서 하위 샘플링할 배치 수입니다. 이 인수는 대각선화 하위 공간의 치수를 간접적으로 제어합니다. 값이 클수록 더 큰 하위 공간 차원이 생성됩니다.

  • energy_tol (float) – 에너지의 수렴에 대한 수치적 허용 오차. 반복 사이의 에너지 변화가 이 값보다 작으면 점유도 수렴한 경우 구성 복구 루프가 종료됩니다( occupancies_tol 인수 참조).

  • occupancies_tol (float) – 평균 궤도 점유량의 수렴에 대한 수치 허용 오차. 반복 사이에 궤도 평균 점유도의 절대값 최대 변화가 이 값보다 작으면 에너지도 수렴한 경우 구성 복구 루프가 종료됩니다( energy_tol 인수 참조).

  • max_iterations (int) – 구성 복구 반복 횟수 제한.

  • sci_solver (Callable[[list[tuple[ndarray, ndarray]], ndarray, ndarray, int, tuple[int, int]], list[SCIResult]] | None) –

    선택한 구성 인터랙션 솔버 기능.

    고려사항:

    • 대각선화를 수행할 하위 공간의 기초가 데카르트 곱이 되는 스핀-알파 CI 문자열과 스핀-베타 CI 문자열의 배열 쌍(문자열_a, 문자열_b)의 목록입니다. 솔버 함수가 대각선화를 병렬로 수행할 수 있도록 목록이 전달됩니다.
    • 해밀턴의 일체 텐서.
    • 해밀턴의 2체 텐서.
    • 공간 궤도의 수입니다.
    • 알파와 베타 전자의 수를 나타내는 쌍(n_알파, n_베타)입니다.

    출력: (에너지, 과학_상태, 점유) 삼중 항의 목록으로, 각 삼중 항에는 해당 대각선화의 결과가 포함됩니다.

  • symmetrize_spin (bool) – 스핀 알파 및 스핀 베타 CI 문자열을 항상 단일 목록으로 병합하여 스핀 알파를 스핀 베타와 교환할 때 대각선화 하위 공간이 불변하도록 할 것인지 여부입니다.

  • max_dim (int |tuple[int, int] | None) –

    SCI 하위 공간의 스핀 섹터 차원에 대한 제한입니다. 이는 다음 중 하나가 될 수 있습니다.

    • 스핀-알파 섹터와 스핀-베타 섹터에 대해 별도의 한계를 제공하는 정수의 튜플 (max_dim_a, max_dim_b) 입니다. 이 경우 SCI 하위 공간의 크기는 max_dim_a * max_dim_b 을 초과하지 않습니다.
    • 스핀-알파 및 스핀-베타 섹터에 모두 사용할 제한을 지정하는 단일 정수입니다. 이 경우 SCI 하위 공간의 크기는 max_dim**2 을 초과하지 않습니다.
    • None로 설정할 수 있으며, 이 경우 제한이 설정되지 않습니다.

    차원 제한은 스핀 섹터에 설정되며, SCI 하위 공간의 전체 차원은 개별 스핀 섹터의 차원의 곱이라는 점에 유의하세요.

  • include_configurations (list[int] | tuple[list[int], list[int]] | ndarray | None) – 대각선화 하위 공간에 항상 포함할 구성입니다. 두 스핀 섹터에 사용할 단일 단일 스핀 문자열 목록을 지정하거나 각 스핀마다 하나씩 단일 스핀 문자열 목록의 쌍(알파_스트링, 베타_스트링)을 지정할 수 있습니다.

  • initial_occupancies (tuple[ndarray, ndarray] | None) – 궤도의 평균 점유량에 대한 초기 추측입니다.

  • carryover_threshold (float) – 구성 복구의 한 반복에서 다음 반복으로 CI 가중치가 큰 비트스트링을 이월하기 위한 임계값입니다. 계수의 절대값이 이 임계값보다 큰 구성과 관련된 모든 단일 스핀 CI 스트링은 다음 반복을 위한 대각선화 하위 공간에 포함됩니다. 임계값이 작을수록 더 많은 구성을 유지하므로 하위 공간이 커지고 따라서 대각선화 비용이 더 많이 듭니다.

  • callback (Callable[[list[SCIResult]], None] | None) – 각 구성 복구 반복 후에 호출할 콜백 함수입니다. 이 함수는 (에너지, sci_state, 점유) 삼중 항의 목록인 sci_solver 함수의 출력을 전달하며, 각 삼중 항에는 대각선화 결과가 포함됩니다.

  • seed (int |Generator | None) – 의사난수 생성기의 시드.

리턴

에너지 추정치 및 해당 에너지가 포함된 SCI 상태입니다.

리턴 유형

SCIResult

참고

이 함수는 MPI를 이용한 집합적 다중 프로세스(SPMD) 실행을 지원하며, 각 프로세스(MPI_THREAD_FUNNELED 또는 그 이하)는 단일 스레드가 제어합니다. 모든 프로세스에서 일괄적으로 호출될 경우, 인수는 모든 프로세스에서 일치해야 하며, 다음의 의미론이 적용됩니다:

  • sci_solver 단계는 유일한 집합적 연산입니다. 모든 프로세스가 이에 참여하므로, 구현 sci_solver 시 모든 프로세스에 작업을 분배할 수 있습니다. 구성-복구 루프의 나머지 단계들(CI 문자열 준비, 대각화 결과 처리, 수렴성 확인)은 분산 구현이 되어 있지 않으며, 제어 프로세스에서 단독으로 수행됩니다.
  • callback(해당 기능이 제공되는 경우)는 제어 프로세스에서만 호출됩니다.
  • 반환 값은 모든 프로세스에서 동일합니다. 최종 결과는 제어 프로세스에서 모든 랭크로 브로드캐스트됩니다.

호출 프로그램이 MPI 환경에서 실행되어야 하는지는 사용 중인 sci_solver MPI 구현에 따라 달라집니다. 앞서 설명한 바와 같이 sci_solver, 컬렉티브는 프로그램이 모든 프로세스에 걸쳐 공동으로 실행되기를 기대합니다. 다른 구현 방식의 경우, 호출 프로그램이 MPI/SPMD 환경 외부에서 단일 프로세스로 실행되어야 합니다. 이러한 구현 중 일부는, 예를 들어 스스로를 mpirun 실행하는 등의 방식으로 내부적으로 병렬 처리를 관리할 수도 있습니다. 기본값은 분포를 sci_solver 따르지 않으며, 후자의 범주에 속합니다.

집합적 sci_solver 구현은 오류가 발생했을 때 단일 프로세스에서 예외를 발생시킬 필요가 없으며, 대신 실행 컨텍스트 전체에 대해 ‘실패 시 중지(fail-stop)’ 세미언틱을 따르며 모든 프로세스를 일괄적으로 중단할 수 있다. (이는 해당 구현체가 수행할 수 있는 작업을 설명한 것이지, 기본값의 동작을 설명한 것이 아닙니다 sci_solver.)

enlarge_batch_from_transitions

enlarge_batch_from_transitions(bitstring_matrix, transition_operators)

GitHub

bitstring_matrix 에 표시된 구성에 전환 연산자 집합을 적용합니다.

매개변수

  • bitstring_matrix (ndarray) – 각 행이 단일 비트 문자열을 나타내는 비트 값의 bool 표현의 2D 배열입니다.
  • transition_operators (ndarray) – 1D 또는 2D 배열 I, +, -, n 문자열은 ID, 생성, 소멸 또는 숫자 연산자의 동작을 나타냅니다. 각 행은 전환 연산자를 나타냅니다.

리턴

여기 연산자를 적용한 후 증강된 전자 구성 집합을 나타내는 비트 문자열 행렬입니다.

리턴 유형

ndarray

solve_fermion

solve_fermion(bitstring_matrix, /, hcore, eri, *, open_shell=False, spin_sq=None, shift=0.1, **kwargs)

GitHub

분자 적분과 일련의 전자 구성이 주어진 접지 상태의 근사치를 구합니다.

매개변수

  • bitstring_matrix (tuple[ndarray, ndarray] | ndarray) –

    해밀턴이 투영되고 대각선화될 하위 공간을 정의하는 구성 집합입니다.

    이는 두 가지 방법으로 지정할 수 있습니다:

    • 비트 문자열 행렬: bool 값의 2D numpy.ndarray 행으로, 각 행은 비트스트링을 나타냅니다. 스핀업 구성은 열 인덱스 (N, N/2] 를 사용해야 하고, 스핀다운 구성은 열 인덱스 (N/2, 0] 를 사용해야 하며, 여기서 N 는 큐비트 수입니다.
    • CI 문자열: 스핀업 및 스핀다운 결정자의 정수 표현을 각각 포함하는 두 시퀀스의 튜플입니다. 예상 형식은 ([a_str_0, ..., a_str_N], [b_str_0, ..., b_str_M]) 입니다.
  • hcore (ndarray) – 단일 전자 적분을 나타내는 핵심 해밀턴 행렬

  • eri (ndarray) – 2전자 적분을 나타내는 전자 반발 적분

  • open_shell (bool) – 비트스트링의 왼쪽과 오른쪽 절반의 구성을 분리하여 보관할지 여부를 지정하는 플래그입니다. False, 비트 문자열의 왼쪽과 오른쪽 절반의 CI 문자열이 하나의 고유한 구성 집합으로 결합되어 알파 및 베타 하위 공간에 모두 사용됩니다.

  • spin_sq (float | None) – 지상 상태에 대한 총 스핀 제곱의 목표 값, S2=s(s+1)S^2 = s(s + 1). None 이면 스핀이 부과되지 않습니다.

  • shift (float) – 스핀이 다른 상태에 대한 레벨 이동. (H+shiftS2)ψ>=Eψ>(H + shift * S^2)|ψ> = E|ψ>

  • **kwargs - 전달할 키워드 인자 pyscf.fci.selected_ci.kernel_fixed_space

리턴

  • SCI 계산의 최소 에너지
  • SCI 접지 상태
  • 스핀업 및 스핀다운 궤도에 대한 궤도 점유를 포함하는 튜플입니다. 형식은 다음과 같습니다: (array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N]))
  • 스핀 제곱의 기대값

리턴 유형

tuple[ float, SCIState, tuple [*ndarray*, ndarray ], float ]

solve_sci

solve_sci(ci_strings, one_body_tensor, two_body_tensor, norb, nelec, *, spin_sq=None, **kwargs)

GitHub

CI 문자열로 정의된 하위 공간에서 해밀턴을 대각선화합니다.

매개변수

  • ci_strings (tuple[ndarray, ndarray]) – 대각선화를 수행할 하위 공간의 기초가 데카르트 곱이 되는 스핀-알파 CI 문자열과 스핀-베타 CI 문자열의 배열 쌍(문자열_a, 문자열_b)을 반환합니다.

  • one_body_tensor (ndarray) – 해밀턴의 일체 텐서입니다.

  • two_body_tensor (ndarray) – 해밀턴의 2체 텐서입니다.

  • norb (int) – 공간 궤도의 수입니다.

  • nelec (tuple[int, int]) – 알파 및 베타 전자의 수입니다.

  • spin_sq (float | None) – 지상 상태에 대한 총 스핀 제곱의 목표 값입니다. None 이면 스핀이 부과되지 않습니다.

  • **kwargs -

    전달할 키워드 인수 pyscf.fci.selected_ci.kernel_fixed_space

리턴

대각선화 결과입니다.

리턴 유형

SCIResult

solve_sci_batch

solve_sci_batch(ci_strings, one_body_tensor, two_body_tensor, norb, nelec, *, spin_sq=None, **kwargs)

GitHub

하위 공간에서 해밀턴을 대각선화합니다.

매개변수

  • ci_strings (list[tuple[ndarray, ndarray]]) – 대각선화를 수행할 하위 공간의 기초가 데카르트 곱이 되는 스핀-알파 CI 문자열과 스핀-베타 CI 문자열의 배열 쌍(문자열_a, 문자열_b)의 목록입니다.

  • one_body_tensor (ndarray) – 해밀턴의 일체 텐서입니다.

  • two_body_tensor (ndarray) – 해밀턴의 2체 텐서입니다.

  • norb (int) – 공간 궤도의 수입니다.

  • nelec (tuple[int, int]) – 알파 및 베타 전자의 수입니다.

  • spin_sq (float | None) – 지상 상태에 대한 총 스핀 제곱의 목표 값입니다. None 이면 스핀이 부과되지 않습니다.

  • **kwargs -

    전달할 키워드 인수 pyscf.fci.selected_ci.kernel_fixed_space

리턴

Ci_strings로 지정된 하위 공간의 대각선화 결과입니다.

리턴 유형

[SCIResult] 목록

optimize_orbitals

optimize_orbitals(bitstring_matrix, /, hcore, eri, k_flat, *, open_shell=False, spin_sq=0.0, num_iters=10, num_steps_grad=10000, learning_rate=0.01, **kwargs)

GitHub

궤도를 최적화하여 최소한의 접지 상태를 생성합니다.

이 프로세스에는 3단계 이상의 반복이 포함됩니다:

** num_iters 반복의 경우:**

  • 매개변수를 기준으로 적분을 회전합니다, k_flat
  • 기저 상태 에너지 및 파동 함수 진폭 대각선화 및 근사치 구하기
  • 2단계에서 찾은 그라데이션 하강과 파동 함수 진폭을 사용하여 k_flat 최적화하기

다음을 참조하세요 Sec. 이 궤도 최적화 기법에 대한 자세한 내용은 을 참조하세요.

0.13.0 버전부터 사용이 권장되지 않습니다

이 함수는 qiskit-addon-sqd 0.13.0 버전부터 더 이상 사용되지 않습니다 qiskit_addon_sqd.fermion.optimize_orbitals() . v0.15.0 이전에는 삭제되지 않을 것입니다. 이제 ffsim 패키지에서 궤도 최적화 기능이 지원됩니다. ffsim을 사용하여 해밀토니안 기저를 최적화하는 방법에 대한 안내서는 /addons/qiskit-addon-sqd/guides /opt imize-orbitals에서 확인하십시오.

매개변수

  • bitstring_matrix (tuple[ndarray, ndarray] | ndarray) –

    해밀턴이 투영되고 대각선화될 하위 공간을 정의하는 구성 집합입니다.

    이는 두 가지 방법으로 지정할 수 있습니다:

    • 비트 문자열 행렬: bool 값의 2D numpy.ndarray 행으로, 각 행은 비트스트링을 나타냅니다. 스핀업 구성은 열 인덱스 (N, N/2] 를 사용해야 하고, 스핀다운 구성은 열 인덱스 (N/2, 0] 를 사용해야 하며, 여기서 N 는 큐비트 수입니다.
    • CI 문자열: 스핀업 및 스핀다운 결정자의 정수 표현을 각각 포함하는 두 시퀀스의 튜플입니다. 예상 형식은 ([a_str_0, ..., a_str_N], [b_str_0, ..., b_str_M]) 입니다.
  • hcore (ndarray) – 단일 전자 적분을 나타내는 핵심 해밀턴 행렬

  • eri (ndarray) – 2전자 적분을 나타내는 전자 반발 적분

  • k_flat (ndarray) – 1D 궤도 변환을 정의하는 배열, K. 배열은 대각선을 제외한 대칭 변환 연산자의 위쪽 삼각형을 행 대소문자 순서로 지정해야 합니다.

  • open_shell (bool) – 비트스트링의 왼쪽과 오른쪽 절반의 구성을 분리하여 보관할지 여부를 지정하는 플래그입니다. False, 비트 문자열의 왼쪽과 오른쪽 절반의 CI 문자열이 하나의 고유한 구성 집합으로 결합되어 알파 및 베타 하위 공간에 모두 사용됩니다.

  • spin_sq (float) – 접지 상태에 대한 총 스핀 제곱의 목표 값입니다

  • num_iters (int) – 수행할 궤도 최적화 반복 횟수입니다

  • num_steps_grad (int) – 각 최적화 반복 중에 수행할 그라데이션 하강 단계의 수입니다

  • learning_rate (float) – 경사 하강 시 사용할 학습 속도

  • **kwargs -

    전달할 키워드 인수 pyscf.fci.selected_ci.kernel_fixed_space

리턴

  • 마지막 최적화 반복 중에 발견된 기저 상태 에너지
  • 궤도 변환을 정의하는 최적화된 1D 배열
  • 스핀업 및 스핀다운 궤도에 대한 궤도 점유를 포함하는 튜플입니다. 형식은 다음과 같습니다: (array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N]))

리턴 유형

튜플[ float, ndarray, 튜플 [*ndarray*, ndarray ]]

rotate_integrals

rotate_integrals(hcore, eri, k_flat)

GitHub

적분에서 유사도 변환을 수행합니다.

변환은 다음과 같이 설명됩니다:

H~^=U^(k)H^U^(k)\hat{\widetilde{H}} = \hat{U^{\dagger}}(k)\hat{H}\hat{U}(k)

k_flat 에서 U^\hat{U}U^\hat{U^{\dagger}} 을 생성하고 1체 및 2체 적분에 적용하는 방법에 대한 자세한 내용은 초를 참조하세요. II A 4.

0.13.0 버전부터 사용이 권장되지 않습니다

이 함수는 qiskit-addon-sqd 0.13.0 버전부터 더 이상 사용되지 않습니다 qiskit_addon_sqd.fermion.rotate_integrals() . v0.15.0 이전에는 삭제되지 않을 것입니다. 이제 ffsim 패키지에서 궤도 최적화 기능이 지원됩니다. ffsim을 사용하여 해밀토니안 기저를 최적화하는 방법에 대한 안내서는 /addons/qiskit-addon-sqd/guides /opt imize-orbitals에서 확인하십시오.

매개변수

  • hcore (ndarray) – 단일 전자 적분을 나타내는 핵심 해밀턴 행렬
  • eri (ndarray) – 2전자 적분을 나타내는 전자 반발 적분
  • k_flat (ndarray) – 1D 궤도 변환을 정의하는 배열, K. 배열은 대각선을 제외한 대칭 변환 연산자의 위쪽 삼각형을 행 대소문자 순서로 지정해야 합니다.

리턴

  • 회전된 코어 해밀턴 행렬
  • 회전된 ERI 매트릭스

리턴 유형

튜플 [*ndarray*, ndarray ]

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.