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')
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')
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')
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)
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)