- Use
MOI.instantiate
to create the optimizer, which allows users to pass anMOI.OptimizerWithAttributes
to configure solver settings #431. Thanks @odow!
- allow
sumlargest(x,k)
,sumsmallest(x,k)
, andsumlargesteigs(x,k)
fork=0
(simply returnsConstant(0)
). (#429).
- fixed a bug where the values of variables were being converted to
Float64
even if the problem was solved in high precision. (#427).
- update compatibility bounds for BenchmarkTools 0.6
- added lasso, ridge, and elastic net regression examples (#420). Thanks to @PaulSoderlind!
- there was a bug causing
conj
to act in-place (reported in #416), which has been fixed (#417). This bug appears to have existed since the introduction ofconj
in Convex.jl v0.5.0.
- Changes to the
sign
of atoms:- The sign of
sumlargesteigs
has been changed fromPositive()
toNoSign()
, to allow non-positive-semidefinite inputs (#409). This has the potential to break code that required that sign to be positive. If you run into this problem, please file an issue so we can figure out a workaround. - The sign of
eigmin
andeigmax
has been changed fromPositive()
toNoSign()
(#413). This is a bugfix because in generaleigmin
andeigmax
do not need to return a positive quantity (for non-positive-semidefinite inputs). Again, this has the potential to break code that required that sign to be positive. If you run into this problem, please file an issue so we can figure out a workaround.
- The sign of
- Removal of deprecations:
lambdamin
andlambdamax
has been deprecated toeigmin
andeigmax
since Convex v0.13.0. This deprecation has been removed, so your code must be updated to calleigmin
oreigmax
instead (#412).norm(x, p)
wherex
is a matrix expression has been deprecated toopnorm(x,p)
since Convex v0.8.0. This deprecation has been removed, so your code must be updated to callopnorm(x, p)
instead (#412). Currently,norm(x,p)
for a matrix expressionx
will error, but in Convex.jl v0.15.0 it will returnnorm(vec(x), p)
.Convex.clearmemory()
has been deprecated and unnecessary since Convex v0.12.5. This deprecation has been removed, so if this function is in your code, just delete it (#412).vecnorm(x, p)
has been deprecated tonorm(vec(x), p)
since Convex v0.8.0. This deprecation has been removed, so your code must be updated to callnorm(vec(x),p)
instead (#412).
- Other changes:
Convex.DCP_WARNINGS
was introduced in Convex v0.13.1 to allow turning off Convex.jl's DCP warnings. This has been removed in favor of the functionConvex.emit_dcp_warnings()
(Commit 481fa02).
- updated
nuclearnorm
andsumlargesteigs
to allow complex variables, and allow the argument ofsumlargesteigs
to be non-positive-semi-definite (#409). Thanks to @dstahlke!
- add unary
+
forSign
andComplexSign
to allow single-argumenthcat
andvcat
to work (#405). Thanks to @dstahlke!
- fix #403 by adding the keyword argument
silent_solver
tosolve!
.
- fix #401 by allowing
diagm(x)
.
- fix #398 by allowing
fix!
'd variables inquadform
.
- You can now create your own variable types by subtyping
AbstractVariable
. See the docs for more information. You can also add constraints directly to a variable usingadd_constraint!
(#358). - Accessors
vexity(x::Variable)
,sign(x::Variable)
, andevaluate(x::Variable)
should now be the preferred way to access properties of a variable; likewise useset_value!
to set the initial value of a variable (#358). - To create integer or binary constraints, use the
VarType
enum (e.g.Variable(BinVar)
). Access or set this viavartype
andvartype!
(#358).
- Make
add_constraint!
actually add the constraint to the problem.
- Add
Convex.MAXDIGITS
. Thanks to @riccardomurri!
- The intermediate layer has changed from MathProgBase.jl to
MathOptInterface.jl
(#330). To solve problems,
one should pass a MathOptInterface optimizer constructor, such as
SCS.Optimizer
, or() -> SCS.Optimizer(verbose=false)
. lambdamin
andlambdamax
have been deprecated in favor ofeigmin
andeigmax
(#357).- Many "internal" functions and types are no longer exported, such as the atoms, types corresponding to constraints and vexities, etc. (#357).
evaluate(x::Variable)
andevaluate(c::Constant)
now return scalars and vectors as appropriate, instead of(1,1)
- and(d,1)
-matrices (#359). This affects functions which used to return(1,1)
-matrices; e.g., nowevaluate(quadform(...))
yields a scalar.