Skip to main content
IBM Quantum Platform

비용 함수

qiskit_addon_mpf.costs

MPF 계수에 대한 비용 함수.

이 모듈은 다양한 최적화 문제 생성기 함수를 제공하며, 각 함수는 문제의 목표가 되는 비용 함수를 다르게 구현합니다. 이 모듈에서 제공하는 모든 함수는 선형 방정식 시스템(LSE) 최적화 문제의 매개 변수를 첫 번째 인수로 인코딩합니다.

LSE

class LSE(A, b)

GitHub

베이스: NamedTuple

선형 방정식 시스템을 나타내는 namedtuple .

Ax=bA x = b

LSE(A, b)의 새 인스턴스 생성

매개변수

A

유형: ndarray

LSE의 왼쪽입니다.

b

유형: ndarray

LSE의 오른쪽에 있습니다.

count

count(value, /)

값의 발생 횟수를 반환합니다.

index

index(value, start=0, stop=9223372036854775807, /)

첫 번째 값 인덱스를 반환합니다.

값이 없으면 ValueError 을 반환합니다.

solve

solve()

GitHub

이 LSE에 솔루션을 반환합니다: x=A1bx=A^{-1}b.

리턴

이 LSE에 대한 솔루션입니다.

레이즈

  • ValueError - 이 LSE가 할당되지 않은 값으로 매개변수화된 경우.
  • ValueError - 이 LSE에 유효한 MPF 계수에 대한 요구 사항인 ixi==1\sum_i x_i == 1 을 보장하는 행이 포함되어 있지 않은 경우.

리턴 유형

ndarray

x

유형: Variable

X$를 반환합니다 Variable.


최적화 문제 생성기

setup_exact_problem

setup_exact_problem(lse)

GitHub

구성 cvxpy.Problem 를 생성하여 정확한 MPF 계수를 찾습니다.

참고

이 최적화 문제를 통해 찾은 계수는 분석에서 얻은 계수와 동일합니다 LSE.solve() 메서드에서 얻은 분석 계수와 동일합니다. 이 추가 인터페이스는 이 모듈에서 제공하는 다른 비용 함수와의 유사성을 강조하기 위해 존재합니다. 또한 MPF 계수를 대상으로 하는 최적화 문제에 접근하는 방법에 대한 교육적 목적도 있습니다.

이 함수에 의해 구성된 최적화 문제는 다음과 같이 정의됩니다:

  • 비용 함수는 L1-norm (norm1)의 변수(LSE.x)

  • 의 각 방정식에 해당하는 제약 조건은 LSE:

jAijxj=bi\sum_j A_{ij} x_j = b_i

예는 다음과 같습니다.

>>> from qiskit_addon_mpf.costs import setup_exact_problem
>>> from qiskit_addon_mpf.static import setup_static_lse
>>> lse = setup_static_lse([1,2,3], order=2, symmetric=True)
>>> problem, coeffs = setup_exact_problem(lse)
>>> print(problem)
minimize norm1(x)
subject to Sum([1. 1. 1.] @ x, None, False) == 1.0
           Sum([1. 0.25   0.11111111] @ x, None, False) == 0.0
           Sum([1. 0.0625 0.01234568] @ x, None, False) == 0.0

그런 다음 문제를 풀고 다음과 같이 확장 계수에 액세스할 수 있습니다:

>>> final_cost = problem.solve()
>>> print(coeffs.value)  
[ 0.04166667 -1.06666667  2.025     ]

매개변수

lse (LSE) – 모델을 구축할 선형 방정식 시스템입니다.

리턴

최적화 문제와 계수 변수입니다.

리턴 유형

튜플 [*문제*, 변수 ]

참조

[1] : A. Carrera Vazquez 외., 퀀텀 7, 1067 (2023).

https://quantum-journal.org/papers/q-2023-07-25-1067/

setup_sum_of_squares_problem

setup_sum_of_squares_problem(lse, *, max_l1_norm=10.0)

GitHub

구축 cvxpy.Problem 를 생성하여 대략적인 MPF 계수를 구합니다.

이 함수에 의해 구성된 최적화 문제는 다음과 같이 정의됩니다:

  • 비용 함수는 거리의 제곱의 합(sum_squares())의 제곱합을 최소화하여 모든 방정식에 대한 정확한 해를 구합니다 LSE:
i(jAijxjbi)2\sum_i \left( \sum_j A_{ij} x_j - b_i \right)^2
  • 두 가지 제약 조건이 설정됩니다:

    1. 변수의 합계가 1이어야 합니다: ixi==1\sum_i x_i == 1
    2. L1-norm (norm1)의 변수는 max_l1_norm

예는 다음과 같습니다.

>>> from qiskit_addon_mpf.costs import setup_sum_of_squares_problem
>>> from qiskit_addon_mpf.static import setup_static_lse
>>> lse = setup_static_lse([1,2,3], order=2, symmetric=True)
>>> problem, coeffs = setup_sum_of_squares_problem(lse, max_l1_norm=3.0)
>>> print(problem)  
minimize quad_over_lin(Vstack([1. 1.     1.]         @ x + -1.0,
                              [1. 0.25   0.11111111] @ x + -0.0,
                              [1. 0.0625 0.01234568] @ x + -0.0), 1.0)
subject to Sum(x, None, False) == 1.0
           norm1(x) <= 3.0

그런 다음 문제를 풀고 다음과 같이 확장 계수에 액세스할 수 있습니다:

>>> final_cost = problem.solve()
>>> print(coeffs.value)  
[ 0.03513467 -1.          1.96486533]

매개변수

  • lse (LSE) – 모델을 구축할 선형 방정식 시스템입니다.
  • max_l1_norm (float) – 변수의 L1-norm 제약 조건에 사용할 상한을 설정합니다.

리턴

최적화 문제와 계수 변수입니다.

리턴 유형

튜플 [*문제*, 변수 ]

참조

[1] : S. 주크 외., 실제 Rev. Research 6, 033309 (2024).

https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.6.033309

setup_frobenius_problem

setup_frobenius_problem(lse, *, max_l1_norm=10.0)

GitHub

구축 cvxpy.Problem 를 생성하여 대략적인 MPF 계수를 구합니다.

이 함수에 의해 구성된 최적화 문제는 다음과 같이 정의됩니다:

  • 로 설정하면 비용 함수는 다음과 같은 이차식을 최소화합니다:
1+xTAx2xTb1 + x^T A x - 2 x^T b

그림 [1과] [2에서] 볼 수 있듯이 이 표현식은 정확한 시간 진화 상태와 동적 MPF 사이의 오차에 대한 프로베니우스 규범에서 발생합니다. 따라서 LSE 로 구성된 setup_dynamic_lse() 를 이 함수에 연결하면 Eq. (20)의 [1] (Eq. (2)의 ( [2] )를 반복하며, 아래에서 반복합니다

1+i,jAij(t)xi(t)xj(t)2ibi(t)xi(t),1 + \sum_{i,j} A_{ij}(t) x_i(t) x_j(t) - 2 \sum_i b_i(t) x_i(t) \, ,

여기서 $A$와 $b$는 LSE 는 각각 그램 행렬( [1과] [2의] $M$)과 중첩 벡터( [1과] [2의] $L$)에 해당합니다. 또한 [1과] [2에서] $c$ 대신 $x(t)$를 사용하여 MPF 변수(또는 계수)를 표시합니다.

  • 두 가지 제약 조건이 설정됩니다:

    1. 변수의 합계가 1이어야 합니다: ixi==1\sum_i x_i == 1
    2. L1-norm (norm1)의 변수는 max_l1_norm

다음은 예제에서 생성된 lse 객체를 사용하는 예제입니다 setup_dynamic_lse().

>>> from qiskit_addon_mpf.costs import setup_frobenius_problem
>>> problem, coeffs = setup_frobenius_problem(lse, max_l1_norm=3.0)
>>> print(problem)  
minimize 1.0 + QuadForm(x, [[1.00 1.00]
                            [1.00 1.00]]) + -[2.00003171 1.99997911] @ x
subject to Sum(x, None, False) == 1.0
           norm1(x) <= 3.0

그런 다음 문제를 풀고 다음과 같이 확장 계수에 액세스할 수 있습니다:

>>> final_cost = problem.solve()
>>> print(coeffs.value)  
[0.50596416 0.49403584]

매개변수

  • lse (LSE) – 모델을 구축할 선형 방정식 시스템입니다.
  • max_l1_norm (float) – 변수의 L1-norm 제약 조건에 사용할 상한을 설정합니다.

리턴

최적화 문제와 계수 변수입니다.

리턴 유형

튜플 [*문제*, 변수 ]

참조

[1] : S. 주크 외., 실제 Rev. Research 6, 033309 (2024).

https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.6.033309

[2] : N. 로버트슨 외., arXiv:2407.17405v2 (2024).

https://arxiv.org/abs/2407.17405v2

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