- Use zero constant in scalar constraint function of
MOI.Test.copytest
(#691). - Fix variable deletion with
SingleVariable
objective function (#690). - Fix
LazyBridgeOptimizer
with bridges that add no constraints (#689). - Error message improvements (#673, #685, #686, #688).
- Documentation improvements (#682, #683, #687).
- Basis status:
- Remove
VariableBasisStatus
(#679). - Test
ConstraintBasisStatus
and implement it in bridges (#678).
- Remove
- Fix inference of
NumberOfVariables
andNumberOfConstraints
(#677). - Implement division between a quadratic function and a number (#675).
- Add
RawStatusString
attribute (#629). - Do not set names to the optimizer but only to the cache in
CachingOptimizer
(#638). - Make scalar MOI functions act as scalars in broadcast (#646).
- Add function utilities:
- Implement
Base.zero
(#634),Base.iszero
(#643), add missing arithmetic operations (#644, #645) and fix division (#648). - Add a
vectorize
function that turns a vector ofScalarAffineFunction
into aVectorAffineFunction
(#642).
- Implement
- Improve support for starting values:
- Show a warning in copy when starting values are not supported instead of throwing an error (#630).
- Fix
UniversalFallback
for getting an variable or constraint attribute set to no indices (#623). - Add a test in
contlineartest
with partially setVariablePrimalStart
.
- Bridges improvements:
- Fix
StackOverFlow
inLazyBridgeOptimizer
when there is a cycle in the graph of bridges. - Add
Slack
bridges (#610, #650). - Add
FlipSign
bridges (#658).
- Fix
- Add tests with duplicate coefficients in
ScalarAffineFunction
andVectorAffineFunction
(#639). - Use tolerance to compare
VariablePrimal
inrotatedsoc1
test (#632). - Use a zero constant in
ScalarAffineFunction
of constraints inpsdt2
(#622).
- Adding an NLP objective now overrides any objective set using the
ObjectiveFunction
attribute (#619). - Rename
fullbridgeoptimizer
intofull_bridge_optimizer
(#621). - Allow custom constraint types with
full_bridge_optimizer
(#617). - Add
Vectorize
bridge which transforms scalar linear constraints into vector linear constraints (#615).
- Rename all enum values to follow the JuMP naming guidelines for constants,
e.g.,
Optimal
becomesOPTIMAL
, andDualInfeasible
becomesDUAL_INFEASIBLE
. - Rename CachingOptimizer methods for style compliance.
- Add an
MOI.TerminationStatusCode
calledALMOST_DUAL_INFEASIBLE
.
- Test that
MOI.TerminationStatus
isMOI.OptimizeNotCalled
beforeMOI.optimize!
is called. - Check
supports_default_copy_to
in tests (#594). - Key pieces of information like optimality, infeasibility, etc., are now reported
through
TerminationStatusCode
. It is typically no longer necessary to check the result statuses in addition to the termination status. - Add perspective dimension to log-det cone (#593).
- Add
OptimizeNotCalled
termination status (#577) and improve documentation of other statuses (#575). - Add a solver naming guideline (#578).
- Make
FeasibilitySense
the defaultObjectiveSense
(#579). - Fix
Utilities.@model
andBridges.@bridge
macros for functions and sets defined outside MOI (#582). - Document solver-specific attributes (#580) and implement them in
Utilities.CachingOptimizer
(#565).
- Variables and constraints are now allowed to have duplicate names. An error is thrown only on lookup. This change breaks some existing tests. (#549)
- Attributes may now be partially set (some values could be
nothing
). (#563) - Performance improvements in Utilities.Model (#549, #567, #568)
- Fix bug in QuadtoSOC (#558).
- New
supports_default_copy_to
method that optimizers should implement to control caching behavior. - Documentation improvements.
- Improve hygiene of
@model
macro (#544). - Fix bug in copy tests (#543).
- Fix bug in UniversalFallback attribute getter (#540).
- Allow all correct solutions for
solve_blank_obj
unit test (#537). - Add errors for Allocate-Load and bad constraints (#534).
- [performance] Add specialized implementation of
hash
forVariableIndex
(#533). - [performance] Construct the name to object dictionaries lazily in model (#535).
- Add the
QuadtoSOC
bridge which transformsScalarQuadraticFunction
constraints intoRotatedSecondOrderCone
(#483).
- Enable
PositiveSemidefiniteConeSquare
set and quadratic functions inMOIB.fullbridgeoptimizer
(#524). - Add warning in the bridge between
PositiveSemidefiniteConeSquare
andPositiveSemidefiniteConeTriangle
when the matrix is almost symmetric (#522). - Modify
MOIT.copytest
to not add multiples constraints on the same variable (#521). - Add missing keyword argument in one of
MOIU.add_scalar_constraint
methods (#520).
- The
MOIU.@model
andMOIB.@bridge
macros now support functions and sets defined in external modules. As a consequence, function and set names in the macro arguments need to be prefixed by module name. - Rename functions according to the JuMP style guide:
copy!
with keyword argumentscopynames
andwarnattributes
->copy_to
with keyword argumentscopy_names
andwarn_attributes
;set!
->set
;addvariable[s]!
->add_variable[s]
;supportsconstraint
->supports_constraint
;addconstraint[s]!
->add_constraint[s]
;isvalid
->is_valid
;isempty
->is_empty
;Base.delete!
->delete
;modify!
->modify
;transform!
->transform
;initialize!
->initialize
;write
->write_to_file
; andread!
->read_from_file
.
- Remove
free!
(useBase.finalize
instead). - Add the
SquarePSD
bridge which transformsPositiveSemidefiniteConeTriangle
constraints intoPositiveSemidefiniteConeTriangle
. - Add result fallback for
ConstraintDual
of variable-wise constraint,ConstraintPrimal
andObjectiveValue
. - Add tests for
ObjectiveBound
. - Add test for empty rows in vector linear constraint.
- Rework errors:
CannotError
has been renamedNotAllowedError
and the distinction betweenUnsupportedError
andNotAllowedError
is now about whether the element is not supported (i.e. it cannot be copied a model containing this element) or the operation is not allowed (either because it is not implemented, because it cannot be performemd in the current state of the model, because it cannot be performed for a specific index, ...) canget
is removed.NoSolution
is added as a result status to indicate that the solver does not have either a primal or dual solution available (See #479).
- Fix names with CachingOptimizer.
- Cleanup thanks to @mohamed82008.
- Added a universal fallback for constraints.
- Fast utilities for function canonicalization thanks to @rdeits.
- Renamed
dimension
field toside_dimension
in the context of matrix-like sets. - New and improved tests for cases like duplicate terms and
ObjectiveBound
. - Removed
cantransform
,canaddconstraint
,canaddvariable
,canset
,canmodify
, andcandelete
functions from the API. They are replaced by a new set of errors that are thrown: Subtypes ofUnsupportedError
indicate unsupported operations, while subtypes ofCannotError
indicate operations that cannot be performed in the current state. - The API for
copy!
is updated to remove the CopyResult type. - Updates for the new JuMP style guide.
- Fixes vector function modification on 32 bits.
- Fixes Bellman-Ford algorithm for bridges.
- Added an NLP test with
FeasibilitySense
. - Update modification documentation.
- Helper constructors for
VectorAffineTerm
andVectorQuadraticTerm
. - Added
modify_lhs
toTestConfig
. - Additional unit tests for optimizers.
- Added a type parameter to
CachingOptimizer
for theoptimizer
field. - New API for problem modification (#388)
- Tests pass without deprecation warnings on Julia 0.7.
- Small fixes and documentation updates.
- Functions have been redefined to use arrays-of-structs instead of structs-of-arrays.
- Improvements to
MockOptimizer
. - Significant changes to
Bridges
. - New and improved unit tests.
- Fixes for Julia 0.7.
- Improvements to and better coverage of
Tests
. - Documentation fixes.
SolverName
attribute.- Changes to the NLP interface (new definition of variable order and arrays of structs for bound pairs and sparsity patterns).
- Addition of NLP tests.
- Introduction of
UniversalFallback
. copynames
keyword argument toMOI.copy!
.- Add Bridges submodule.
- Initial public release.
- The framework for MOI was developed at the JuMP-dev workshop at MIT in June 2017 as a sorely needed replacement for MathProgBase.