मैं कोशिश कर रहा हूँ को हल करने के लिए निम्न समस्या में 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()