Fermion
qiskit_addon_sqd.fermion
페르미온 시스템 연구를 위한 기능입니다.
SCIState
class SCIState(amplitudes, ci_strs_a, ci_strs_b, norb, nelec)
베이스: object
양자 상태를 설명하는 진폭과 결정 인자입니다.
매개변수
amplitudes
유형: ndarray
len(ci_strs_a) 및 = len(ci_strs_b)인 배열. amplitudes[i][j] 는 결정자 쌍(ci_strs_a[i], ci_strs_b[j])의 진폭입니다.
ci_strs_a
유형: ndarray
알파 결정 요인.
ci_strs_b
유형: ndarray
베타 결정 요인.
load
nelec
norb
유형: int
공간 궤도의 수입니다.
orbital_occupancies
rdm
save
spin_square
bitstring_matrix_to_ci_strs
bitstring_matrix_to_ci_strs(bitstring_matrix, open_shell=False)
bitstring_matrix 의 비트 문자열(행)을 행렬식의 정수 표현으로 변환합니다.
이 함수는 bitstring_matrix 의 각 비트 문자열을 반으로 분리하여 정수 표현으로 변환한 다음 마지막으로 각각의 (스핀업 또는 스핀다운) 목록에 추가합니다. 이러한 목록은 이 함수에서 정렬되어 출력됩니다.
매개변수
- bitstring_matrix (ndarray) – 각 행이 단일 비트 문자열을 나타내는 비트 값의
bool표현의 2D 배열입니다 - open_shell (bool) – 비트스트링의 왼쪽과 오른쪽 절반의 고유한 구성을 분리하여 보관할지 여부를 지정하는 플래그입니다.
False, 비트 문자열의 왼쪽과 오른쪽 절반의 구성이 하나의 고유한 구성 집합으로 결합됩니다. 왼쪽 및 오른쪽 비트 문자열 모두에 대해 결합된 세트가 반환됩니다.
리턴
비트 문자열의 오른쪽(스핀업) 및 왼쪽(스핀다운) 절반을 각각 나타내는 결정자 목록의 length-2 튜플입니다.
리턴 유형
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)
샘플 기반 양자 대각선화(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) – 공간 궤도의 수입니다.
-
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 함수의 출력을 전달하며, 각 삼중 항에는 대각선화 결과가 포함됩니다.
리턴
에너지 추정치 및 해당 에너지가 포함된 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)
bitstring_matrix 에 표시된 구성에 전환 연산자 집합을 적용합니다.
매개변수
- bitstring_matrix (ndarray) – 각 행이 단일 비트 문자열을 나타내는 비트 값의
bool표현의 2D 배열입니다. - transition_operators (ndarray) – 1D 또는 2D 배열
I,+,-,n문자열은 ID, 생성, 소멸 또는 숫자 연산자의 동작을 나타냅니다. 각 행은 전환 연산자를 나타냅니다.
리턴
여기 연산자를 적용한 후 증강된 전자 구성 집합을 나타내는 비트 문자열 행렬입니다.
리턴 유형
solve_fermion
solve_fermion(bitstring_matrix, /, hcore, eri, *, open_shell=False, spin_sq=None, shift=0.1, **kwargs)
분자 적분과 일련의 전자 구성이 주어진 접지 상태의 근사치를 구합니다.
매개변수
-
bitstring_matrix (tuple[ndarray, ndarray] | ndarray) –
해밀턴이 투영되고 대각선화될 하위 공간을 정의하는 구성 집합입니다.
이는 두 가지 방법으로 지정할 수 있습니다:
- 비트 문자열 행렬:
bool값의 2Dnumpy.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) – 지상 상태에 대한 총 스핀 제곱의 목표 값, .
None이면 스핀이 부과되지 않습니다. -
shift (float) – 스핀이 다른 상태에 대한 레벨 이동.
-
**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)
CI 문자열로 정의된 하위 공간에서 해밀턴을 대각선화합니다.
매개변수
-
ci_strings (tuple[ndarray, ndarray]) – 대각선화를 수행할 하위 공간의 기초가 데카르트 곱이 되는 스핀-알파 CI 문자열과 스핀-베타 CI 문자열의 배열 쌍(문자열_a, 문자열_b)을 반환합니다.
-
one_body_tensor (ndarray) – 해밀턴의 일체 텐서입니다.
-
two_body_tensor (ndarray) – 해밀턴의 2체 텐서입니다.
-
norb (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)
하위 공간에서 해밀턴을 대각선화합니다.
매개변수
-
ci_strings (list[tuple[ndarray, ndarray]]) – 대각선화를 수행할 하위 공간의 기초가 데카르트 곱이 되는 스핀-알파 CI 문자열과 스핀-베타 CI 문자열의 배열 쌍(문자열_a, 문자열_b)의 목록입니다.
-
one_body_tensor (ndarray) – 해밀턴의 일체 텐서입니다.
-
two_body_tensor (ndarray) – 해밀턴의 2체 텐서입니다.
-
norb (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)
궤도를 최적화하여 최소한의 접지 상태를 생성합니다.
이 프로세스에는 3단계 이상의 반복이 포함됩니다:
** num_iters 반복의 경우:**
- 매개변수를 기준으로 적분을 회전합니다,
k_flat - 기저 상태 에너지 및 파동 함수 진폭 대각선화 및 근사치 구하기
- 2단계에서 찾은 그라데이션 하강과 파동 함수 진폭을 사용하여
k_flat최적화하기
다음을 참조하세요 Sec. 이 궤도 최적화 기법에 대한 자세한 내용은 을 참조하세요.
이 함수는 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값의 2Dnumpy.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]))
리턴 유형
rotate_integrals
rotate_integrals(hcore, eri, k_flat)
적분에서 유사도 변환을 수행합니다.
변환은 다음과 같이 설명됩니다:
k_flat 에서 및 을 생성하고 1체 및 2체 적분에 적용하는 방법에 대한 자세한 내용은 초를 참조하세요. II A 4.
이 함수는 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 매트릭스
리턴 유형