I = np.eye(N) A = pic.new_param('A', A) J = pic.new_param('J', np.ones(shape=(N,N))) sdp = pic.Problem() #M = sdp.add_variable('M',(N,N)) #W1 = sdp.add_variable('W1',(N,N),'symmetric') #W2 = sdp.add_variable('W2',(N,N),'symmetric') #sdp.add_constraint([[W1,M],[M.T,W2]]>>0) U = sdp.add_variable('U',(2*N,2*N),'symmetric') M = U[0:N,N:2*N] W1 = U[0:N,0:N] W2 = U[N:2*N,N:2*N] sdp.add_constraint(U>>0) sdp.add_constraint(M>0) sdp.add_constraint(M<J) sdp.set_objective('max', (A | M) - mu * (trace(W1)+trace(W2))) print sdp sdp.solve(verbose = 1, maxit=50) val = sdp.obj_value() print 'value: {0}'.format(val) solution = M.value print 'solution:' print solution D, P = eig(solution) D = np.real(D) P = np.real(P) print 'D:' print D print 'P:'
mu = r * k / 3 print M N1 = M.shape[0] N2 = M.shape[1] Ms = samp(M, 11.0 / N2) print Ms A = pic.new_param('A', Ms) J = pic.new_param('J', np.ones(shape=(N1, N2))) sdp = pic.Problem() #M = sdp.add_variable('M',(N,N)) #W1 = sdp.add_variable('W1',(N,N),'symmetric') #W2 = sdp.add_variable('W2',(N,N),'symmetric') #sdp.add_constraint([[W1,M],[M.T,W2]]>>0) U = sdp.add_variable('U', (N1 + N2, N1 + N2), 'symmetric') Mr = U[0:N1, N1:N1 + N2] W1 = U[0:N1, 0:N1] W2 = U[N1:N1 + N2, N1:N1 + N2] sdp.add_constraint(U >> 0) sdp.add_constraint(Mr > 0) sdp.add_constraint(Mr < J) sdp.set_objective('max', (A | Mr) - 0.5 * mu * (trace(W1) + trace(W2))) print sdp sdp.solve(verbose=1, maxit=50) val = sdp.obj_value() print 'value: {0}'.format(val) solution = Mr.value print 'solution:' print solution
mu = r*k/3 print M N1 = M.shape[0] N2 = M.shape[1] Ms = samp(M,11.0/N2) print Ms A = pic.new_param('A', Ms) J = pic.new_param('J', np.ones(shape=(N1,N2))) sdp = pic.Problem() #M = sdp.add_variable('M',(N,N)) #W1 = sdp.add_variable('W1',(N,N),'symmetric') #W2 = sdp.add_variable('W2',(N,N),'symmetric') #sdp.add_constraint([[W1,M],[M.T,W2]]>>0) U = sdp.add_variable('U',(N1+N2,N1+N2),'symmetric') Mr = U[0:N1,N1:N1+N2] W1 = U[0:N1,0:N1] W2 = U[N1:N1+N2,N1:N1+N2] sdp.add_constraint(U>>0) sdp.add_constraint(Mr>0) sdp.add_constraint(Mr<J) sdp.set_objective('max', (A | Mr) - 0.5 * mu * (trace(W1)+trace(W2))) print sdp sdp.solve(verbose = 1, maxit=50) val = sdp.obj_value() print 'value: {0}'.format(val) solution = Mr.value print 'solution:' print solution