def setUp(self):

        self.nbr_elements = 1000
        self.size = 10000
        self.non_contiguity = 10

        self.A_c = LLSparseMatrix(size=self.size,
                                  size_hint=self.nbr_elements,
                                  itype=INT32_T,
                                  dtype=FLOAT64_T)
        self.A_s = lil_matrix((self.size, self.size), dtype=np.float64)

        self.list_of_matrices = []
        self.list_of_matrices.append(self.A_c)
        self.list_of_matrices.append(self.A_s)

        construct_random_matrices(self.list_of_matrices, self.size,
                                  self.nbr_elements)

        self.CSC_c = self.A_c.to_csc()
        self.CSC_s = self.A_s.tocsc()

        self.v = np.arange(0,
                           self.size * self.non_contiguity,
                           dtype=np.float64)
示例#2
0
文件: matvec.py 项目: syarra/cysparse
def construct_cysparse_matrix(n, nbr_elements):
    # int is 32 bits on my machine
    A = LLSparseMatrix(size=n, size_hint=nbr_elements, itype=INT32_T, dtype=FLOAT64_T)

    for i in xrange(nbr_elements):
        A[i % n, (2 * i + 1) % n] = i / 3

    return A
示例#3
0
    def setUp(self):

        self.nbr_elements = 10000
        self.size = 100000

        self.A_c = LLSparseMatrix(size=self.size, size_hint=self.nbr_elements, dtype=FLOAT64_T)
        construct_sparse_matrix(self.A_c, self.size, self.nbr_elements)

        self.A_p = spmatrix.ll_mat(self.size, self.size, self.nbr_elements)
        construct_sparse_matrix(self.A_p, self.size, self.nbr_elements)
示例#4
0
 def jac(self, *args, **kwargs):
     """Evaluate constraints Jacobian at x."""
     vals, rows, cols = super(CySparseNLPModel, self).jac(*args, **kwargs)
     J = LLSparseMatrix(nrow=self.ncon,
                        ncol=self.nvar,
                        size_hint=vals.size,
                        store_symmetric=False,
                        itype=types.INT64_T,
                        dtype=types.FLOAT64_T)
     J.put_triplet(rows, cols, vals)
     return J
    def setUp(self):

        self.nbr_elements = 100000
        self.size = 1000000

        self.A_c = LLSparseMatrix(size=self.size,
                                  size_hint=self.nbr_elements,
                                  dtype=FLOAT64_T)
        self.A_p = spmatrix.ll_mat(self.size, self.size, self.nbr_elements)
        self.A_s = lil_matrix(
            (self.size, self.size),
            dtype=np.float64)  # how do we reserve space in advance?
示例#6
0
    def setUp(self):

        self.nbr_elements = 80000
        self.size = 100000

        self.A_c = LLSparseMatrix(size=self.size,
                                  size_hint=self.nbr_elements,
                                  dtype=FLOAT64_T,
                                  store_symmetric=True)
        construct_sym_sparse_matrix(self.A_c, self.size, self.nbr_elements)

        self.A_p = spmatrix.ll_mat_sym(self.size, self.size, self.nbr_elements)
        construct_sym_sparse_matrix(self.A_p, self.size, self.nbr_elements)
示例#7
0
    def hess(self, *args, **kwargs):
        """Evaluate Lagrangian Hessian at (x, z).

        Note that `rows`, `cols` and `vals` must represent a LOWER triangular
        sparse matrix in the coordinate format (COO).
        """
        vals, rows, cols = super(CySparseNLPModel, self).hess(*args, **kwargs)
        H = LLSparseMatrix(size=self.nvar,
                           size_hint=vals.size,
                           store_symmetric=True,
                           itype=types.INT64_T,
                           dtype=types.FLOAT64_T)
        H.put_triplet(rows, cols, vals)
        return H
示例#8
0
    def setUp(self):

        self.nbr_elements = 1000
        self.size = 10000

        self.A_c = LLSparseMatrix(size=self.size, size_hint=self.nbr_elements, dtype=FLOAT64_T)
        construct_sparse_matrix(self.A_c, self.size, self.nbr_elements)

        self.A_p = spmatrix.ll_mat(self.size, self.size, self.nbr_elements)
        construct_sparse_matrix(self.A_p, self.size, self.nbr_elements)

        self.stride = 10

        self.v = np.arange(0, self.size * self.stride, dtype=np.float64)
示例#9
0
    def _jac(self, x, lp=False):
        """Helper method to assemble the Jacobian matrix.

        See the documentation of :meth:`jac` for more information.

        The positional argument `lp` should be set to `True` only if the
        problem is known to be a linear program. In this case, the evaluation
        of the constraint matrix is cheaper and the argument `x` is ignored.
        """
        m = self.m
        model = self.model
        on = self.original_n

        lowerC = np.array(model.lowerC, dtype=np.int64)
        nlowerC = model.nlowerC
        upperC = np.array(model.upperC, dtype=np.int64)
        nupperC = model.nupperC
        rangeC = np.array(model.rangeC, dtype=np.int64)
        nrangeC = model.nrangeC

        # Initialize sparse Jacobian
        nnzJ = self.model.nnzj + m
        J = LLSparseMatrix(nrow=self.ncon,
                           ncol=self.nvar,
                           size_hint=nnzJ,
                           store_symmetric=False,
                           itype=types.INT64_T,
                           dtype=types.FLOAT64_T)

        # Insert contribution of general constraints
        if lp:
            J[:on, :on] = self.model.A()
        else:
            J[:on, :on] = self.model.jac(x[:on])

        # Create a few index lists
        rlowerC = np.array(range(nlowerC), dtype=np.int64)
        rupperC = np.array(range(nupperC), dtype=np.int64)
        rrangeC = np.array(range(nrangeC), dtype=np.int64)

        # Insert contribution of slacks on general constraints
        J.put_triplet(lowerC, on + rlowerC,
                      -1.0 * np.ones(nlowerC, dtype=np.float64))
        J.put_triplet(upperC, on + nlowerC + rupperC,
                      -1.0 * np.ones(nupperC, dtype=np.float64))
        J.put_triplet(rangeC, on + nlowerC + nupperC + rrangeC,
                      -1.0 * np.ones(nrangeC, dtype=np.float64))

        return J
示例#10
0
 def A(self, *args, **kwargs):
     """
     Evaluate sparse Jacobian of the linear part of the
     constraints. Useful to obtain constraint matrix
     when problem is a linear programming problem.
     """
     vals, rows, cols = super(CySparseAmplModel,
                              self).A(*args, **kwargs)
     A = LLSparseMatrix(nrow=self.ncon,
                        ncol=self.nvar,
                        size_hint=vals.size,
                        store_symmetric=False,
                        type=types.INT64_T,
                        dtype=types.FLOAT64_T)
     A.put_triplet(rows, cols, vals)
     return A
示例#11
0
    def setUp(self):

        self.nbr_elements = 5000
        self.size = 1000000

        self.A_c = LLSparseMatrix(size=self.size, size_hint=self.nbr_elements, itype=INT32_T, dtype=FLOAT64_T)
        self.A_p = spmatrix.ll_mat(self.size, self.size, self.nbr_elements)
        self.A_s = lil_matrix((self.size, self.size), dtype=np.float64)

        self.list_of_matrices = []
        self.list_of_matrices.append(self.A_c)
        self.list_of_matrices.append(self.A_p)
        self.list_of_matrices.append(self.A_s)

        construct_random_matrices(self.list_of_matrices, self.size, self.nbr_elements)

        self.v = np.arange(0, self.size, dtype=np.float64)
示例#12
0
    def hess(self, x, z=None, *args, **kwargs):
        """Evaluate Lagrangian Hessian at (x, z)."""
        model = self.model
        if isinstance(model, QuasiNewtonModel):
            return self.hop(x, z, *args, **kwargs)

        if z is None:
            z = np.zeros(self.m)

        on = model.n

        H = LLSparseMatrix(size=self.nvar,
                           size_hint=self.model.nnzh,
                           store_symmetric=True,
                           itype=types.INT64_T,
                           dtype=types.FLOAT64_T)
        H[:on, :on] = self.model.hess(x[:on], z, *args, **kwargs)
        return H
示例#13
0
    def setUp(self):

        self.nbr_elements = 1000
        self.size = 10000
        self.put_size = 10000

        assert self.put_size <= self.size

        self.A_c = LLSparseMatrix(size=self.size,
                                  size_hint=self.nbr_elements,
                                  itype=INT32_T,
                                  dtype=FLOAT64_T)
        construct_sparse_matrix(self.A_c, self.size, self.nbr_elements)

        self.A_p = spmatrix.ll_mat(self.size, self.size, self.nbr_elements)
        construct_sparse_matrix(self.A_p, self.size, self.nbr_elements)

        self.id1 = np.arange(0, self.put_size, dtype=np.int32)
        self.id2 = np.full(self.put_size, 37, dtype=np.int32)

        self.b = np.arange(0, self.put_size, dtype=np.float64)
示例#14
0
    def setUp(self):

        self.nbr_elements = 1000
        self.size = 10000
        self.nbr_elements_to_add = 1000

        assert self.nbr_elements_to_add < self.size

        self.A_c = LLSparseMatrix(size=self.size,
                                  size_hint=self.nbr_elements,
                                  itype=INT32_T,
                                  dtype=FLOAT64_T)
        construct_sparse_matrix(self.A_c, self.size, self.nbr_elements)

        self.A_p = spmatrix.ll_mat(self.size, self.size, self.nbr_elements)
        construct_sparse_matrix(self.A_p, self.size, self.nbr_elements)

        self.id1 = np.ones(self.nbr_elements_to_add, dtype=np.int32)
        self.id2 = self.v = np.arange(0,
                                      self.nbr_elements_to_add,
                                      dtype=np.int32)

        self.val = np.empty(self.nbr_elements_to_add, dtype=np.float64)