Python에서 cvxopt를 사용한 2 차 최적화

PYTHON에서 SciPy를 사용하여 선형 문제를 해결하는 방법과 R에서 비선형 최적화 문제를 해결하는 방법 (예 : 기울기-하강 최적화를 위해 nloptr 사용)을 시연했습니다. 이 게시물에서는 cvxopt 모듈을 사용하여 PYTHON에서 2 차 최적화 작업을 해결하는 방법을 보여주고 싶습니다.

PYTHON에서 cvxopt 모듈을 사용하여 아래 문제를 모델링하고 해결합니다.

PYTHON에서 cvxopt 모듈을 사용하여이 문제를 해결하려면 벡터 매트릭스 표기법으로 문제를 다시 설명해야합니다.

아래의 코딩 예제에서 위의 문제를 해결하여 주어진 행렬에 따라 벡터 행렬 표기법으로 표시합니다.

#  cvxopt를 사용하여 모델링 입력 준비 
from cvxopt import matrix

# 행렬과 벡터 설정 
P = matrix([[2.0,0.0],[0.0,4.0]])
q = matrix([6.0,20.0])
G = matrix([[-1.0,-1.0],[-2.0,-3.0]])
h = matrix([-10.0,0.0])

# cvxopt 모듈에서 솔버 가져 오기, 솔버 기능 제공  
from cvxopt import solvers

# 솔버 사용 
solution = solvers.qp(P=P,
                     q=q,
                     G=G,
                     h=h)
     pcost       dcost       gap    pres   dres
 0:  3.1195e+00  1.0142e+02  2e+01  1e+00  3e-01
 1:  1.1086e+02  1.1722e+02  4e+00  9e-02  2e-02
 2:  1.1727e+02  1.1733e+02  4e-02  9e-04  2e-04
 3:  1.1733e+02  1.1733e+02  4e-04  9e-06  2e-06
 4:  1.1733e+02  1.1733e+02  4e-06  9e-08  2e-08
 
최적의 솔루션을 찾았습니다. 
# 최적 x1
solution["x"][0]
4.6666665332235375
# 최적 x2
solution["x"][1]
2.6666665168063117
# 최적의 목적 함수 값 
solution["primal objective"] + 5
122.33332669148787

Leave a Reply

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Close

그 밖의 기능