MISDP/MISOCP 에 cvxpy

0

질문

나를 해결하기 위해 노력하고 다음과 같은 문제에 CVXPY.

문제를 혼합 정수 SDP 으로 인해 PSD 행렬 우리는 설명합니다. 그러나 그에 따라, 이 목록은 그것은 아무도 해법을 처리할 수 있 이러한 문제입니다.

우리가 사용할 수 있습니다 사실 A 은 2x2 매트릭스를 어떻게든 변환이 혼합된 정수 SOCP 문제입니까?

import cvxpy as cp
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(271828) 
m = 2; n = 50
x = np.random.randn(m,n)

off = cp.Variable(boolean=True)

A = cp.Variable((2,2), PSD=True)
b = cp.Variable(2)
obj = cp.Maximize(cp.log_det(A))
constraints = [ cp.norm(A@x[:,i] + b) <= 1 + 20*off for i in range(n) ]
constraints += [cp.sum(off) <= 20]

prob = cp.Problem(obj, constraints)
optval = prob.solve(solver='XPRESS', verbose=False) # seems to work, although it's not super accurate

print(f"Optimum value: {optval}")

# plot the ellipse and data
angles = np.linspace(0, 2*np.pi, 200)
rhs = np.row_stack((np.cos(angles) - b.value[0], np.sin(angles) - b.value[1]))
ellipse = np.linalg.solve(A.value, rhs)

plt.scatter(x[0,:], x[1,:])
plt.plot(ellipse[0,:].T, ellipse[1,:].T)
plt.xlabel('Dimension 1'); plt.ylabel('Dimension 2')
plt.title('Minimum Volume Ellipsoid')
plt.show()
1

최고의 응답

1

A=[[x,z], [z,y]]다음 극대화할 수 있습니다 sqrt(det(A)) (해당 당신의 목적). Note

det(A) = xy-z^2

그래서 극대화 sqrt(det(A)) 과 같은 극대화 u 주제

xy - z^2 >= u^2

동등하게

xy >= z^2 + u^2

이(거의)회전 두 번째 순서 콘서의 의미 https://docs.mosek.com/modeling-cookbook/cqo.html#rotated-quadratic-cones

나는 생각 같은 뭔가

x >= quad_over_lin([z,u], y)

(을 테스트하지 않았 구문을)수 있는 가장 편리한 방법을 익스프레스에 그것 cvxpy.

참고 정의의 콘과의 quad_over_lin 또한을 부과하 x,y>=0 그래서 당신은 필요하지 않는 별도로,그리고 원뿔 제약 조건을 자동으로 보증 PSDness 의 A.

2021-11-24 09:08:37

그리고 여기에 몇 가지 빛 엔터테인먼트와 관련된 문제점: twitter.com/mosektw/status/1190259248250445824
Michal Adamaszek

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................