- TODO change *args to lists.
- TODO change size to size[0]*size[1] and shape to size.
- TODO return 2D arrays instead of matrices.
- TODO add sets and domains for Parameters/Variables that affect DCP properties.
- TODO PSD parameters?
- TODO warmstart based on variable values.
- TODO change diag for matrices to diagm so can choose which diagonal to access.
- TODO make sure Bool.value = ? etc satisfy constraints.
- TODO make upper_tri_to_full atom?
- TODO parameterize upper_tri (so takes elems above kth diagonal).
- TODO replace norm with vecnorm and norm (for matrices) (see how numpy does it).
- TODO separate constant and linear components of expressions so potentially can cache matrix factorizations.
- TODO add informative errors for single constraint in problem instead of list, etc.
- TODO sort out norms. i.e. norm(X, 1) is wrong.
- TODO support more axis operations (norm, log_sum_exp, sum_squares).
- TODO add Lambert W function W(z) = max x, exp(-entr(x)) <= z.
- TODO change reshape to take size tuple argument.
- TODO make identical to numpy in every behavior (ndarrays instead of matrices etc.)
- TODO make @ work when imported from future.
- TODO make division work elementwise (and with division of scalar by variable)
- TODO test and fix updating constraints.
- TODO improve error message when solving with missing parameter values.
- TODO add domains for special variables like Semidef and NonNegative (var with domain). Canonicalize then add in domains separately.
- TODO force variable value assignments to satisfy variable properties.
- TODO make quad_form(pos cvx, pos def pos) work.
- TODO add cummax/cummin.
- TODO canonicalize to QP hack (split objective into quad + PWL + constant)
- Fixed test with nonzero called in Python 3.
- Fixed bug with power of negative values outside domain.
- Fixed bug with nonzero being removed on Python 3 by conda build.
- Made cumsum definition implicit and O(n).
- Error for parameter P to quad_form.
- Fix for Gurobi interface and Python 3.
- Fixed bug with grad of sparse*var.
- Added .is_pwl() # Piece-wise linear.
- Add residual to constraints (vector/matrix), use for violation.
- Added cumsum.
- Dropped LS as default solver.
- Dropped dependency on CVXOPT.
- Fixed bug with gradient of expressions where a variable only appears in a constant term.
- Added special solver for linearly constrained least-squares problems.
- Made error message for chaining constraints clearer.
- Switched from toolz.memoize to fastcache.cru_cache to fix memory leak in Python 3.
- Added support for matmul and rmatmul.
- Added domains and gradients.
- Made curvature, sign recursive and affine == convex + concave || constant. Eliminated old DCPAttr system. Memoized important info.
- Fixed bug in diag with row vectors.
- Fixed kl_div to be elementwise.
- Fixed bug with cvxopt solver on windows (conversion from scipy to cvxopt sparse matrix failed).
- Fixed bug where partial optimize didn't work with maximize objective.
- log_sum_exp axis now works for rectangular matrices.
- Fixed bug with DCP attributes of partial optimize.
- Made to work on Windows.
- Added indexing with boolean ndarrays and lists of indices.
- Converted indices and slices to ints always.
- Adding axis argument to *_entries atoms.
- Requires CVXcanon 0.0.21
- Fixed Gurobi interface.
- Removed failing test that expected CVXOPT solver failure.
- Added logistic function.
- Added CVXcanon integration.
- Fixed bug with partial_optimize not working for nonlinear constraints.
- Put partial_optimize in cvxpy namespace.
- Fixed bug with printing slices.
- Added MOSEK SOCP interface thanks to Enzo.
- Fixed bug with mul_elemwise by scalar.
- Fixed compatibility issue with power atom and new NumPy.
- Fixed Windows compatibility issue.
- Added NonNegative variables.
- Added partial_optimize as first transform.
- Require ECOS 2.0.
- Added Elemental interface.
- Can add problems and objectives.
- Basic remove redundant rows for CVXOPT chol. Made 'chol' default kktsolver.
- Added symmetric variables and positive definite inequalities (<<, >>).
- Added bmat atom for making block matrices.
- Added kron.
- Made to work with SCS 1.1.3.
- Fixed issue where using "is" instead of "==".
- Required SCS version 1.0.7 so 1.1.0 can be updated on pip.
- Made operator overloading work with scipy sparse matrices (with scipy 0.15).
- Removed Expression shape function.
- Removed Expression array function.
- Caught c.T*x where c is a NumPy 1D array.
- Added power.
- sum no longer crashes on scalar expressions, though you shouldn't use it.
- Added mixed integer and SOCP support to Gurobi.
- Added geo_mean
- Fixed Python 3 runtime error where modifying the cvxopt.solvers.options dictionary while reading it.
- Requires ECOS 1.1.1.
- Removed norm_largest.
- Added GLPK interface.
- Updated ECOS BB exit codes.
- Factored out ability to get parameterized entries of matrix.
- Added GLPK_MIP interface.
- Optimizes rmul to mul.
- Added warmstart.
- Disabled MIP tests until nondeterminism is resolved.
- Added sum_largest, sum_smallest, norm_largest, lambda_sum_largest, lambda_sum_largest, and lambda_sum_smallest.
- Added log1p.
- Added scalene penalty.
- Made LinOp for multiplication on the right.
- TODO break up DCPAttr so only use atom DCP function.
- Added boolean and integer variables.
- Made geo_mean elementwise.
- Python 3 support!!!
- Error checking for x**p.
- Added upper_tri.
- Changed BoolVar, IntVar to Bool, Int.
- Simplified Huber loss graph_implementation.
- Made it so you can assign a value to a variable for an initial value.
- Overloaded power operator.
- Added unpack_results function to update problem state given results from a solver.
- Fixed bug where parameters were cached.
- Got rid of NumPy 1D array warning.
- Made vstack and hstack not create new variables.
- Replaced memoize with lazyprop in constraints.
- Refactored code for caching problem parsing.
- Changed cvxpy to use new SCS interface.
- Renamed semidefinite to Semidef.
- Switched solver_specific_opts to **kwargs.
- Added vec and documentation for reshape and vec.
- Changed repr to print names in line with class names.
- Changed str for Problem.
- Made < and > map to <= and >=.
- Added warning for NumPy 1D arrays.
- CVXPY throws an error when a solver error is encountered.
- Presolver removes constraints with no variables.
- Conversion from non-linear constraints to linear constraints is cached. This fixes issue #120.2.
- Fixed bug with sign multiplication.
- Added check that objective is Minimize/Maximize.
- Fixed bug with key error when solving exponential cone problem with CVXOPT.
- Removed a stray println.
- CVXPY import can succeed even if SCS import fails.
- The sign of vector and matrix constant is positive (negative) if all the entries are positive (negative), instead of always being unknown.
- Can now use negative indices.
- Added *_INACCURATE return codes.
- Made all lin_to_matrix functions return SciPy sparse matrix or NumPy matrix (instead of ndarray).