MISDP/MISOCP में cvxpy

0

सवाल

मैं कोशिश कर रहा हूँ को हल करने के लिए निम्न समस्या में CVXPY.

समस्या है, एक मिश्रित पूर्णांक SDP के कारण PSD मैट्रिक्स हम हल कर रहे हैं । हालांकि, के अनुसार, इस सूची में यह लग रहा है हालांकि के रूप में कोई नहीं के solvers संभाल कर सकते हैं इस तरह के एक समस्या है.

कर सकते हैं हम का उपयोग करें कि इस तथ्य 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)) (के बराबर है जो अपने उद्देश्य के लिए). ध्यान दें कि

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ý
..................................................................................................................