Python scipy.sparse.eye() Examples
The following are 30
code examples of scipy.sparse.eye().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.sparse
, or try the search function
.
Example #1
Source File: utils.py From dgi with MIT License | 6 votes |
def chebyshev_polynomials(adj, k): """Calculate Chebyshev polynomials up to order k. Return a list of sparse matrices (tuple representation).""" print("Calculating Chebyshev polynomials up to order {}...".format(k)) adj_normalized = normalize_adj(adj) laplacian = sp.eye(adj.shape[0]) - adj_normalized largest_eigval, _ = eigsh(laplacian, 1, which='LM') scaled_laplacian = (2. / largest_eigval[0]) * laplacian - sp.eye(adj.shape[0]) t_k = list() t_k.append(sp.eye(adj.shape[0])) t_k.append(scaled_laplacian) def chebyshev_recurrence(t_k_minus_one, t_k_minus_two, scaled_lap): s_lap = sp.csr_matrix(scaled_lap, copy=True) return 2 * s_lap.dot(t_k_minus_one) - t_k_minus_two for i in range(2, k+1): t_k.append(chebyshev_recurrence(t_k[-1], t_k[-2], scaled_laplacian)) return sparse_to_tuple(t_k)
Example #2
Source File: utils.py From BANE with GNU General Public License v3.0 | 6 votes |
def normalize_adjacency(graph, args): """ Method to calculate a sparse degree normalized adjacency matrix. :param graph: Sparse graph adjacency matrix. :return A: Normalized adjacency matrix. """ for node in graph.nodes(): graph.add_edge(node, node) ind = range(len(graph.nodes())) degs = [1.0/graph.degree(node) for node in graph.nodes()] L = sparse.csr_matrix(nx.laplacian_matrix(graph), dtype=np.float32) degs = sparse.csr_matrix(sparse.coo_matrix((degs, (ind, ind)), shape=L.shape, dtype=np.float32)) propagator = sparse.eye(L.shape[0])-args.gamma*degs.dot(L) return propagator
Example #3
Source File: diffussion.py From manifold-diffusion with MIT License | 6 votes |
def dfs_trunk(sim, A,alpha = 0.99, QUERYKNN = 10, maxiter = 8, K = 100, tol = 1e-3): qsim = sim_kernel(sim).T sortidxs = np.argsort(-qsim, axis = 1) for i in range(len(qsim)): qsim[i,sortidxs[i,QUERYKNN:]] = 0 qsims = sim_kernel(qsim) W = sim_kernel(A) W = csr_matrix(topK_W(W, K)) out_ranks = [] t =time() for i in range(qsims.shape[0]): qs = qsims[i,:] tt = time() w_idxs, W_trunk = find_trunc_graph(qs, W, 2); Wn = normalize_connection_graph(W_trunk) Wnn = eye(Wn.shape[0]) - alpha * Wn f,inf = s_linalg.minres(Wnn, qs[w_idxs], tol=tol, maxiter=maxiter) ranks = w_idxs[np.argsort(-f.reshape(-1))] missing = np.setdiff1d(np.arange(A.shape[1]), ranks) out_ranks.append(np.concatenate([ranks.reshape(-1,1), missing.reshape(-1,1)], axis = 0)) #print time() -t, 'qtime' out_ranks = np.concatenate(out_ranks, axis = 1) return out_ranks
Example #4
Source File: lle.py From OpenNE with MIT License | 6 votes |
def learn_embedding(self): graph = self.g.G graph = graph.to_undirected() t1 = time() A = nx.to_scipy_sparse_matrix(graph) # print(np.sum(A.todense(), axis=0)) normalize(A, norm='l1', axis=1, copy=False) I_n = sp.eye(graph.number_of_nodes()) I_min_A = I_n - A print(I_min_A) u, s, vt = lg.svds(I_min_A, k=self._d + 1, which='SM') t2 = time() self._X = vt.T self._X = self._X[:, 1:] return self._X, (t2 - t1) # I_n = sp.eye(graph.number_of_nodes())
Example #5
Source File: test_gcrotmk.py From GraphicDesignPatternByPython with MIT License | 6 votes |
def test_arnoldi(self): np.random.rand(1234) A = eye(10000) + rand(10000,10000,density=1e-4) b = np.random.rand(10000) # The inner arnoldi should be equivalent to gmres with suppress_warnings() as sup: sup.filter(DeprecationWarning, ".*called without specifying.*") x0, flag0 = gcrotmk(A, b, x0=zeros(A.shape[0]), m=15, k=0, maxiter=1) x1, flag1 = gmres(A, b, x0=zeros(A.shape[0]), restart=15, maxiter=1) assert_equal(flag0, 1) assert_equal(flag1, 1) assert_(np.linalg.norm(A.dot(x0) - b) > 1e-3) assert_allclose(x0, x1)
Example #6
Source File: element.py From StructEngPy with MIT License | 6 votes |
def _N(self,s,r): """ Lagrange's interpolate function params: s,r:natural position of evalue point.2-array. returns: 2x(2x4) shape function matrix. """ la1=(1-s)/2 la2=(1+s)/2 lb1=(1-r)/2 lb2=(1+r)/2 N1=la1*lb1 N2=la1*lb2 N3=la2*lb1 N4=la2*lb2 N=np.hstack(N1*np.eye(2),N2*np.eye(2),N3*np.eye(2),N4*np.eye(2)) return N
Example #7
Source File: lle.py From GEM-Benchmark with BSD 3-Clause "New" or "Revised" License | 6 votes |
def learn_embedding(self, graph=None, edge_f=None, is_weighted=False, no_python=False): if not graph and not edge_f: raise Exception('graph/edge_f needed') if not graph: graph = graph_util.loadGraphFromEdgeListTxt(edge_f) graph = graph.to_undirected() t1 = time() A = nx.to_scipy_sparse_matrix(graph) normalize(A, norm='l1', axis=1, copy=False) I_n = sp.eye(graph.number_of_nodes()) I_min_A = I_n - A try: u, s, vt = lg.svds(I_min_A, k=self._d + 1, which='SM') except: u = np.random.randn(A.shape[0], self._d + 1) s = np.random.randn(self._d + 1, self._d + 1) vt = np.random.randn(self._d + 1, A.shape[0]) t2 = time() self._X = vt.T self._X = self._X[:, 1:] return self._X, (t2 - t1)
Example #8
Source File: utils.py From OpenNE with MIT License | 6 votes |
def chebyshev_polynomials(adj, k): """Calculate Chebyshev polynomials up to order k. Return a list of sparse matrices (tuple representation).""" print("Calculating Chebyshev polynomials up to order {}...".format(k)) adj_normalized = normalize_adj(adj) laplacian = sp.eye(adj.shape[0]) - adj_normalized largest_eigval, _ = eigsh(laplacian, 1, which='LM') scaled_laplacian = ( 2. / largest_eigval[0]) * laplacian - sp.eye(adj.shape[0]) t_k = list() t_k.append(sp.eye(adj.shape[0])) t_k.append(scaled_laplacian) def chebyshev_recurrence(t_k_minus_one, t_k_minus_two, scaled_lap): s_lap = sp.csr_matrix(scaled_lap, copy=True) return 2 * s_lap.dot(t_k_minus_one) - t_k_minus_two for i in range(2, k+1): t_k.append(chebyshev_recurrence(t_k[-1], t_k[-2], scaled_laplacian)) return sparse_to_tuple(t_k)
Example #9
Source File: test_column_transformer.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_column_transformer_sparse_remainder_transformer(): X_array = np.array([[0, 1, 2], [2, 4, 6], [8, 6, 4]]).T ct = ColumnTransformer([('trans1', Trans(), [0])], remainder=SparseMatrixTrans(), sparse_threshold=0.8) X_trans = ct.fit_transform(X_array) assert sparse.issparse(X_trans) # SparseMatrixTrans creates 3 features for each column. There is # one column in ``transformers``, thus: assert X_trans.shape == (3, 3 + 1) exp_array = np.hstack( (X_array[:, 0].reshape(-1, 1), np.eye(3))) assert_array_equal(X_trans.toarray(), exp_array) assert len(ct.transformers_) == 2 assert ct.transformers_[-1][0] == 'remainder' assert isinstance(ct.transformers_[-1][1], SparseMatrixTrans) assert_array_equal(ct.transformers_[-1][2], [1, 2])
Example #10
Source File: test_column_transformer.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_column_transformer_drop_all_sparse_remainder_transformer(): X_array = np.array([[0, 1, 2], [2, 4, 6], [8, 6, 4]]).T ct = ColumnTransformer([('trans1', 'drop', [0])], remainder=SparseMatrixTrans(), sparse_threshold=0.8) X_trans = ct.fit_transform(X_array) assert sparse.issparse(X_trans) # SparseMatrixTrans creates 3 features for each column, thus: assert X_trans.shape == (3, 3) assert_array_equal(X_trans.toarray(), np.eye(3)) assert len(ct.transformers_) == 2 assert ct.transformers_[-1][0] == 'remainder' assert isinstance(ct.transformers_[-1][1], SparseMatrixTrans) assert_array_equal(ct.transformers_[-1][2], [1, 2])
Example #11
Source File: test_column_transformer.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_column_transformer_sparse_stacking(): X_array = np.array([[0, 1, 2], [2, 4, 6]]).T col_trans = ColumnTransformer([('trans1', Trans(), [0]), ('trans2', SparseMatrixTrans(), 1)], sparse_threshold=0.8) col_trans.fit(X_array) X_trans = col_trans.transform(X_array) assert sparse.issparse(X_trans) assert_equal(X_trans.shape, (X_trans.shape[0], X_trans.shape[0] + 1)) assert_array_equal(X_trans.toarray()[:, 1:], np.eye(X_trans.shape[0])) assert len(col_trans.transformers_) == 2 assert col_trans.transformers_[-1][0] != 'remainder' col_trans = ColumnTransformer([('trans1', Trans(), [0]), ('trans2', SparseMatrixTrans(), 1)], sparse_threshold=0.1) col_trans.fit(X_array) X_trans = col_trans.transform(X_array) assert not sparse.issparse(X_trans) assert X_trans.shape == (X_trans.shape[0], X_trans.shape[0] + 1) assert_array_equal(X_trans[:, 1:], np.eye(X_trans.shape[0]))
Example #12
Source File: test_column_transformer.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_column_transformer_sparse_array(): X_sparse = sparse.eye(3, 2).tocsr() # no distinction between 1D and 2D X_res_first = X_sparse[:, 0] X_res_both = X_sparse for col in [0, [0], slice(0, 1)]: for remainder, res in [('drop', X_res_first), ('passthrough', X_res_both)]: ct = ColumnTransformer([('trans', Trans(), col)], remainder=remainder, sparse_threshold=0.8) assert sparse.issparse(ct.fit_transform(X_sparse)) assert_allclose_dense_sparse(ct.fit_transform(X_sparse), res) assert_allclose_dense_sparse(ct.fit(X_sparse).transform(X_sparse), res) for col in [[0, 1], slice(0, 2)]: ct = ColumnTransformer([('trans', Trans(), col)], sparse_threshold=0.8) assert sparse.issparse(ct.fit_transform(X_sparse)) assert_allclose_dense_sparse(ct.fit_transform(X_sparse), X_res_both) assert_allclose_dense_sparse(ct.fit(X_sparse).transform(X_sparse), X_res_both)
Example #13
Source File: utils.py From zero-shot-gcn with MIT License | 6 votes |
def chebyshev_polynomials(adj, k): """Calculate Chebyshev polynomials up to order k. Return a list of sparse matrices (tuple representation).""" print("Calculating Chebyshev polynomials up to order {}...".format(k)) adj_normalized = normalize_adj(adj) laplacian = sp.eye(adj.shape[0]) - adj_normalized largest_eigval, _ = eigsh(laplacian, 1, which='LM') scaled_laplacian = (2. / largest_eigval[0]) * laplacian - sp.eye(adj.shape[0]) t_k = list() t_k.append(sp.eye(adj.shape[0])) t_k.append(scaled_laplacian) def chebyshev_recurrence(t_k_minus_one, t_k_minus_two, scaled_lap): s_lap = sp.csr_matrix(scaled_lap, copy=True) return 2 * s_lap.dot(t_k_minus_one) - t_k_minus_two for i in range(2, k + 1): t_k.append(chebyshev_recurrence(t_k[-1], t_k[-2], scaled_laplacian)) return sparse_to_tuple(t_k)
Example #14
Source File: large_scale.py From Computable with MIT License | 6 votes |
def sakurai(n): """ Example taken from T. Sakurai, H. Tadano, Y. Inadomi and U. Nagashima A moment-based method for large-scale generalized eigenvalue problems Appl. Num. Anal. Comp. Math. Vol. 1 No. 2 (2004) """ A = sparse.eye(n, n) d0 = array(r_[5,6*ones(n-2),5]) d1 = -4*ones(n) d2 = ones(n) B = sparse.spdiags([d2,d1,d0,d1,d2],[-2,-1,0,1,2],n,n) k = arange(1,n+1) w_ex = sort(1./(16.*pow(cos(0.5*k*pi/(n+1)),4))) # exact eigenvalues return A,B, w_ex
Example #15
Source File: convolution.py From spektral with MIT License | 6 votes |
def localpooling_filter(A, symmetric=True): r""" Computes the graph filter described in [Kipf & Welling (2017)](https://arxiv.org/abs/1609.02907). :param A: array or sparse matrix with rank 2 or 3; :param symmetric: boolean, whether to normalize the matrix as \(\D^{-\frac{1}{2}}\A\D^{-\frac{1}{2}}\) or as \(\D^{-1}\A\); :return: array or sparse matrix with rank 2 or 3, same as A; """ fltr = A.copy() if sp.issparse(A): I = sp.eye(A.shape[-1], dtype=A.dtype) else: I = np.eye(A.shape[-1], dtype=A.dtype) if A.ndim == 3: for i in range(A.shape[0]): A_tilde = A[i] + I fltr[i] = normalized_adjacency(A_tilde, symmetric=symmetric) else: A_tilde = A + I fltr = normalized_adjacency(A_tilde, symmetric=symmetric) if sp.issparse(fltr): fltr.sort_indices() return fltr
Example #16
Source File: unconstrained_test.py From osqp-python with Apache License 2.0 | 6 votes |
def setUp(self): """ Setup unconstrained quadratic problem """ # Unconstrained QP problem sp.random.seed(4) self.n = 30 self.m = 0 P = sparse.diags(np.random.rand(self.n)) + 0.2*sparse.eye(self.n) self.P = P.tocsc() self.q = np.random.randn(self.n) self.A = sparse.csc_matrix((self.m, self.n)) self.l = np.array([]) self.u = np.array([]) self.opts = {'verbose': False, 'eps_abs': 1e-08, 'eps_rel': 1e-08, 'polish': False} self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts)
Example #17
Source File: codegen_matrices_test.py From osqp-python with Apache License 2.0 | 6 votes |
def setUp(self): # Simple QP problem self.P = sparse.diags([11., 0.1], format='csc') self.P_new = sparse.eye(2, format='csc') self.q = np.array([3, 4]) self.A = sparse.csc_matrix([[-1, 0], [0, -1], [-1, -3], [2, 5], [3, 4]]) self.A_new = sparse.csc_matrix([[-1, 0], [0, -1], [-2, -2], [2, 5], [3, 4]]) self.u = np.array([0, 0, -15, 100, 80]) self.l = -np.inf * np.ones(len(self.u)) self.n = self.P.shape[0] self.m = self.A.shape[0] self.opts = {'verbose': False, 'eps_abs': 1e-08, 'eps_rel': 1e-08, 'alpha': 1.6, 'max_iter': 3000, 'warm_start': True} self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts)
Example #18
Source File: sysreg.py From vnpy_crypto with MIT License | 6 votes |
def whiten(self, X): """ SUR whiten method. Parameters ----------- X : list of arrays Data to be whitened. Returns ------- If X is the exogenous RHS of the system. ``np.dot(np.kron(cholsigmainv,np.eye(M)),np.diag(X))`` If X is the endogenous LHS of the system. """ nobs = self.nobs if X is self.endog: # definitely not a robust check return np.dot(np.kron(self.cholsigmainv,np.eye(nobs)), X.reshape(-1,1)) elif X is self.sp_exog: return (sparse.kron(self.cholsigmainv, sparse.eye(nobs,nobs))*X).toarray()#*=dot until cast to array
Example #19
Source File: utils.py From DeepRobust with MIT License | 6 votes |
def encode_onehot(labels): """Convert label to onehot format. Parameters ---------- labels : numpy.array node labels Returns ------- numpy.array onehot labels """ eye = np.eye(labels.max() + 1) onehot_mx = eye[labels] return onehot_mx
Example #20
Source File: utils.py From DeepRobust with MIT License | 6 votes |
def tensor2onehot(labels): """Convert label tensor to label onehot tensor. Parameters ---------- labels : torch.LongTensor node labels Returns ------- torch.LongTensor onehot labels tensor """ eye = torch.eye(labels.max() + 1) onehot_mx = eye[labels] return onehot_mx.to(labels.device)
Example #21
Source File: dual_infeasibility_test.py From osqp-python with Apache License 2.0 | 6 votes |
def test_dual_infeasible_lp(self): # Dual infeasible example self.P = sparse.csc_matrix((2, 2)) self.q = np.array([2, -1]) self.A = sparse.eye(2, format='csc') self.l = np.array([0., 0.]) self.u = np.array([np.inf, np.inf]) self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts) # Solve problem with OSQP res = self.model.solve() # Assert close self.assertEqual(res.info.status_val, constant('OSQP_DUAL_INFEASIBLE'))
Example #22
Source File: utils.py From DeepRobust with MIT License | 6 votes |
def normalize_adj_tensor(adj, sparse=False): """Normalize adjacency tensor matrix. """ device = torch.device("cuda" if adj.is_cuda else "cpu") if sparse: # TODO if this is too slow, uncomment the following code, # but you need to install torch_scatter # return normalize_sparse_tensor(adj) adj = to_scipy(adj) mx = normalize_adj(adj) return sparse_mx_to_torch_sparse_tensor(mx).to(device) else: mx = adj + torch.eye(adj.shape[0]).to(device) rowsum = mx.sum(1) r_inv = rowsum.pow(-1/2).flatten() r_inv[torch.isinf(r_inv)] = 0. r_mat_inv = torch.diag(r_inv) mx = r_mat_inv @ mx mx = mx @ r_mat_inv return mx
Example #23
Source File: dev_pdipm.py From lcp-physics with Apache License 2.0 | 5 votes |
def solve_kkt_ir_inverse(Q, D, G, A, F, rx, rs, rz, ry, niter=1): """Inefficient iterative refinement.""" nineq, nz, neq, nBatch = get_sizes(G, A) eps = 1e-7 Q_tilde = Q + eps * torch.eye(nz).type_as(Q).repeat(nBatch, 1, 1) D_tilde = D + eps * torch.eye(nineq).type_as(Q).repeat(nBatch, 1, 1) # TODO Test batche size > 1 # XXX Shouldn't the sign below be positive? (Since its going to be subtracted later) C_tilde = -eps * torch.eye(neq + nineq).type_as(Q_tilde).repeat(nBatch, 1, 1) if F is not None: # XXX inverted sign for F below C_tilde[:, :nineq, :nineq] -= F F_tilde = C_tilde[:, :nineq, :nineq] dx, ds, dz, dy = solve_kkt_inverse( Q_tilde, D_tilde, G, A, C_tilde, rx, rs, rz, ry, eps) resx, ress, resz, resy = kkt_resid_reg(Q, D, G, A, F_tilde, eps, dx, ds, dz, dy, rx, rs, rz, ry) for k in range(niter): ddx, dds, ddz, ddy = solve_kkt_inverse(Q_tilde, D_tilde, G, A, C_tilde, -resx, -ress, -resz, -resy if resy is not None else None, eps) dx, ds, dz, dy = [v + dv if v is not None else None for v, dv in zip((dx, ds, dz, dy), (ddx, dds, ddz, ddy))] resx, ress, resz, resy = kkt_resid_reg(Q, D, G, A, F_tilde, eps, dx, ds, dz, dy, rx, rs, rz, ry) return dx, ds, dz, dy
Example #24
Source File: test_gcrotmk.py From GraphicDesignPatternByPython with MIT License | 5 votes |
def test_nans(self): A = eye(3, format='lil') A[1,1] = np.nan b = np.ones(3) with suppress_warnings() as sup: sup.filter(DeprecationWarning, ".*called without specifying.*") x, info = gcrotmk(A, b, tol=0, maxiter=10) assert_equal(info, 1)
Example #25
Source File: dev_pdipm.py From lcp-physics with Apache License 2.0 | 5 votes |
def solve_kkt_inverse(Q_tilde, D, G, A, C_tilde, rx, rs, rz, ry, eps): nineq, nz, neq, nBatch = get_sizes(G, A) H_ = torch.zeros(nBatch, nz + nineq, nz + nineq).type_as(Q_tilde) H_[:, :nz, :nz] = Q_tilde H_[:, -nineq:, -nineq:] = D if neq > 0: # H_ = torch.cat([torch.cat([Q, torch.zeros(nz,nineq).type_as(Q)], 1), # torch.cat([torch.zeros(nineq, nz).type_as(Q), D], 1)], 0) A_ = torch.cat([torch.cat([G, torch.eye(nineq).type_as(Q_tilde).repeat(nBatch, 1, 1)], 2), torch.cat([A, torch.zeros(nBatch, neq, nineq).type_as(Q_tilde)], 2)], 1) g_ = torch.cat([rx, rs], 1) h_ = torch.cat([rz, ry], 1) else: A_ = torch.cat( [G, torch.eye(nineq).type_as(Q_tilde).repeat(nBatch, 1, 1)], 2) g_ = torch.cat([rx, rs], 1) h_ = rz full_mat = torch.cat([torch.cat([H_, A_.transpose(1,2)], 2), torch.cat([A_, C_tilde], 2)], 1) full_res = torch.cat([g_, h_], 1) sol = torch.bmm(binverse(full_mat), full_res.unsqueeze(2)).squeeze(2) dx = sol[:, :nz] ds = sol[:, nz:nz+nineq] dz = sol[:, nz+nineq:nz+nineq+nineq] dy = sol[:, nz+nineq+nineq:] if neq > 0 else None return dx, ds, dz, dy
Example #26
Source File: element.py From StructEngPy with MIT License | 5 votes |
def __init__(self,node_i, node_j, E, A, rho, name=None, mass='conc', tol=1e-6): """ params: node_i,node_j: ends of link. E: elastic modulus A: section area rho: mass density mass: 'coor' as coordinate matrix or 'conc' for concentrated matrix tol: tolerance """ super(Link,self).__init__(node_i,node_j,A,rho,6,name,mass) l=self._length K_data=( (E*A/l,(0,0)), (-E*A/l,(0,1)), (-E*A/l,(1,0)), (E*A/l,(1,1)), ) m_data=( (1,(0,0)), (1,(1,1))*rho*A*l/2 ) data=[k[0] for k in K_data] row=[k[1][0] for k in K_data] col=[k[1][1] for k in K_data] self._Ke = spr.csr_matrix((data,(row,col)),shape=(12, 12)) self._Me=spr.eye(2)*rho*A*l/2 #force vector self._re =np.zeros((2,1))
Example #27
Source File: test_gcrotmk.py From GraphicDesignPatternByPython with MIT License | 5 votes |
def test_cornercase(self): np.random.seed(1234) # Rounding error may prevent convergence with tol=0 --- ensure # that the return values in this case are correct, and no # exceptions are raised for n in [3, 5, 10, 100]: A = 2*eye(n) with suppress_warnings() as sup: sup.filter(DeprecationWarning, ".*called without specifying.*") b = np.ones(n) x, info = gcrotmk(A, b, maxiter=10) assert_equal(info, 0) assert_allclose(A.dot(x) - b, 0, atol=1e-14) x, info = gcrotmk(A, b, tol=0, maxiter=10) if info == 0: assert_allclose(A.dot(x) - b, 0, atol=1e-14) b = np.random.rand(n) x, info = gcrotmk(A, b, maxiter=10) assert_equal(info, 0) assert_allclose(A.dot(x) - b, 0, atol=1e-14) x, info = gcrotmk(A, b, tol=0, maxiter=10) if info == 0: assert_allclose(A.dot(x) - b, 0, atol=1e-14)
Example #28
Source File: dev_pdipm.py From lcp-physics with Apache License 2.0 | 5 votes |
def solve_kkt_ir(Q, D, G, A, F, rx, rs, rz, ry, niter=1): """Inefficient iterative refinement.""" nineq, nz, neq, nBatch = get_sizes(G, A) eps = 1e-7 Q_tilde = Q + eps * torch.eye(nz).type_as(Q).repeat(nBatch, 1, 1) D_tilde = D + eps * torch.eye(nineq).type_as(Q).repeat(nBatch, 1, 1) # TODO Test batche size > 1 # XXX Shouldn't the sign below be positive? (Since its going to be subtracted later) C_tilde = -eps * torch.eye(neq + nineq).type_as(Q_tilde).repeat(nBatch, 1, 1) if F is not None: # XXX inverted sign for F below C_tilde[:, :nineq, :nineq] -= F F_tilde = C_tilde[:, :nineq, :nineq] dx, ds, dz, dy = factor_solve_kkt_reg( Q_tilde, D_tilde, G, A, C_tilde, rx, rs, rz, ry, eps) resx, ress, resz, resy = kkt_resid_reg(Q, D, G, A, F_tilde, eps, dx, ds, dz, dy, rx, rs, rz, ry) for k in range(niter): ddx, dds, ddz, ddy = factor_solve_kkt_reg(Q_tilde, D_tilde, G, A, C_tilde, -resx, -ress, -resz, -resy if resy is not None else None, eps) dx, ds, dz, dy = [v + dv if v is not None else None for v, dv in zip((dx, ds, dz, dy), (ddx, dds, ddz, ddy))] resx, ress, resz, resy = kkt_resid_reg(Q, D, G, A, F_tilde, eps, dx, ds, dz, dy, rx, rs, rz, ry) return dx, ds, dz, dy
Example #29
Source File: bench_sparse.py From Computable with MIT License | 5 votes |
def bench_construction(self): """build matrices by inserting single values""" matrices = [] matrices.append(('Empty',csr_matrix((10000,10000)))) matrices.append(('Identity',sparse.eye(10000))) matrices.append(('Poisson5pt', poisson2d(100))) print() print(' Sparse Matrix Construction') print('====================================================================') print(' type | name | shape | nnz | time (sec) ') print('--------------------------------------------------------------------') fmt = ' %3s | %12s | %20s | %8d | %6.4f ' for name,A in matrices: A = A.tocoo() for format in ['lil','dok']: start = time.clock() iter = 0 while time.clock() < start + 0.5: T = eval(format + '_matrix')(A.shape) for i,j,v in zip(A.row,A.col,A.data): T[i,j] = v iter += 1 end = time.clock() del T name = name.center(12) shape = ("%s" % (A.shape,)).center(20) print(fmt % (format,name,shape,A.nnz,(end-start)/float(iter)))
Example #30
Source File: polishing_test.py From osqp-python with Apache License 2.0 | 5 votes |
def test_polish_unconstrained(self): # Unconstrained QP problem sp.random.seed(4) self.n = 30 self.m = 0 P = sparse.diags(np.random.rand(self.n)) + 0.2*sparse.eye(self.n) self.P = P.tocsc() self.q = np.random.randn(self.n) self.A = sparse.csc_matrix((self.m, self.n)) self.l = np.array([]) self.u = np.array([]) self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts) # Solve problem res = self.model.solve() # Assert close nptest.assert_array_almost_equal( res.x, np.array([ -0.61981415, -0.06174194, 0.83824061, -0.0595013, -0.17810828, 2.90550031, -1.8901713, -1.91191741, -3.73603446, 1.7530356, -1.67018181, 3.42221944, 0.61263403, -0.45838347, -0.13194248, 2.95744794, 5.2902277, -1.42836238, -8.55123842, -0.79093815, 0.43418189, -0.69323554, 1.15967924, -0.47821898, 3.6108927, 0.03404309, 0.16322926, -2.17974795, 0.32458796, -1.97553574])) nptest.assert_array_almost_equal(res.y, np.array([])) nptest.assert_array_almost_equal(res.info.obj_val, -35.020288603855825)