Exemplo n.º 1
0
    def __init__(self, m, n, structure=None, name=None):
        """
        Class constructor.

        :param name: String.
        :param m: Number of rows.
        :param n: Number of columns.
        :param structure: Keyword (See cvxpy.defs).
        """

        # Set name
        if name == None:
            name = BASE_VAR + str(cvxpy_scalar_var.i)
            cvxpy_scalar_var.i += 1

        # Call parent constructor
        cvxpy_array.__init__(self, m, n)

        # No structure
        if structure == None:
            for i in range(0, m, 1):
                for j in range(0, n, 1):
                    v = cvxpy_scalar_var(name + '[' + str(i) + ',' + str(j) +
                                         ']')
                    self.data[i][j] = v

        # Lower triangular
        elif structure == LOWER_TRIANGULAR:
            if m != n:
                raise ValueError('Invalid dimensions')
            for i in range(0, m, 1):
                for j in range(0, i + 1, 1):
                    v = cvxpy_scalar_var(name + '[' + str(i) + ',' + str(j) +
                                         ']')
                    self.data[i][j] = v

        # Upper triangular
        elif structure == UPPER_TRIANGULAR:
            if m != n:
                raise ValueError('Invalid dimensions')
            for i in range(0, m, 1):
                for j in range(i, n, 1):
                    v = cvxpy_scalar_var(name + '[' + str(i) + ',' + str(j) +
                                         ']')
                    self.data[i][j] = v

        # Symmetric
        elif structure == SYMMETRIC:
            if m != n:
                raise ValueError('Invalid dimensions')
            for i in range(0, m, 1):
                for j in range(0, i + 1, 1):
                    v = cvxpy_scalar_var(name + '[' + str(i) + ',' + str(j) +
                                         ']')
                    self.data[i][j] = v
                    self.data[j][i] = v

        # Error
        else:
            raise ValueError('Invalid structure')
Exemplo n.º 2
0
    def __init__(self,m,n,structure=None,name=None):
        """
        Class constructor.

        :param name: String.
        :param m: Number of rows.
        :param n: Number of columns.
        :param structure: Keyword (See cvxpy.defs).
        """
        
        # Set name
        if name == None:
            name = BASE_VAR+str(cvxpy_scalar_var.i)
            cvxpy_scalar_var.i += 1
            
        # Call parent constructor
        cvxpy_array.__init__(self,m,n)
        
        # No structure
        if structure == None:
            for i in range(0,m,1):
                for j in range(0,n,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self.data[i][j] = v
        
        # Lower triangular
        elif structure == LOWER_TRIANGULAR:
            if m!=n:
                raise ValueError('Invalid dimensions')
            for i in range(0,m,1):
                for j in range(0,i+1,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self.data[i][j] = v

        # Upper triangular
        elif structure == UPPER_TRIANGULAR:
            if m!=n:
                raise ValueError('Invalid dimensions')
            for i in range(0,m,1):
                for j in range(i,n,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self.data[i][j] = v
        
        # Symmetric
        elif structure == SYMMETRIC:
            if m!=n:
                raise ValueError('Invalid dimensions')
            for i in range(0,m,1):
                for j in range(0,i+1,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self.data[i][j] = v
                    self.data[j][i] = v
        
        # Error
        else:
            raise ValueError('Invalid structure')
Exemplo n.º 3
0
    def __init__(self,name,m,n,s):
        self.name = name
        
        # Call parent constructor
        cvxpy_expression.__init__(self,m,n)
        
        # No structure
        if(s == None):
            for i in range(0,m,1):
                for j in range(0,n,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self[i,j] = v
        
        # Lower triangular
        elif(s == 'lower triangular'):
            if(m!=n):
                raise ValueError('Invalid dimensions')
            for i in range(0,m,1):
                for j in range(0,i+1,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self[i,j] = v

        # Upper triangular
        elif(s == 'upper triangular'):
            if(m!=n):
                raise ValueError('Invalid dimensions')
            for i in range(0,m,1):
                for j in range(i,n,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self[i,j] = v
        
        # Symmetric
        elif(s == 'symmetric'):
            if(m!=n):
                raise ValueError('Invalid dimensions')
            for i in range(0,m,1):
                for j in range(0,i+1,1):
                    v = cvxpy_scalar_var(name+'['+str(i)+','+str(j)+']')
                    self[i,j] = v
                    self[j,i] = v
        
        # Error
        else:
            raise ValueError('Invalid structure')
Exemplo n.º 4
0
def var(name=None, m=1, n=1, s=None):
    """ 
    Create an optimization variable.

    :param name: Variable name.
    :type name: String
    :param m: Rows.
    :param n: Columns.
    :param s: Structure of the variable.
    :type s: String
    :rtype: :class:`cvxpy_var` or :class:`cvxpy_scalar_var`.
    """
    if ((m, n) == (1, 1)):
        return cvxpy_scalar_var(name)
    else:
        return cvxpy_var(name, m, n, s)
Exemplo n.º 5
0
def var(name=None,m=1,n=1,s=None):
    """ 
    Create an optimization variable.

    :param name: Variable name.
    :type name: String
    :param m: Rows.
    :param n: Columns.
    :param s: Structure of the variable.
    :type s: String
    :rtype: :class:`cvxpy_var` or :class:`cvxpy_scalar_var`.
    """
    if((m,n) == (1,1)):
        return cvxpy_scalar_var(name)
    else:
        return cvxpy_var(name,m,n,s)