- Fixed writing
NLPBlock
in MathOptFormat (#1037). - Fixed
MockOptimizer
for result attributes with non-one result index (#1039). - Updated test template with
instantiate
(#1032).
- Add an option for the model created by
Utilities.@model
to be a subtype ofAbstractOptimizer
(#1031). - Described dual cone in docstrings of
GeoMeanCone
andRelativeEntropyCone
(#1018, #1028). - Fixed typos in documentation (#1022, #1024).
- Fixed warning of unsupported attribute (#1027).
- Added more rootdet/logdet conic tests (#1026).
- Implemented
ConstraintDual
forConstraint.GeoMeanBridge
,Constraint.RootDetBridge
andConstraint.LogDetBridge
and test duals in tests withGeoMeanCone
andRootDetConeTriangle
andLogDetConeTriangle
cones (#1025, #1026).
- Added
OptimizerWithAttributes
grouping an optimizer constructor and a list of optimizer attributes (#1008). - Added
RelativeEntropyCone
with corresponding bridge into exponential cone constraints (#993). - Added
NormSpectralCone
andNormNuclearCone
with corresponding bridges into positive semidefinite constraints (#976). - Added
supports_constrained_variable(s)
(#1004). - Added
dual_set_type
(#1002). - Added tests for vector specialized version of
delete
(#989, #1011). - Added PSD3 test (#1007).
- Clarifed dual solution of
Tests.pow1v
andTests.pow1f
(#1013). - Added support for
EqualTo
andZero
inBridges.Constraint.SplitIntervalBridge
(#1005). - Fixed
Utilities.vectorize
for empty vector (#1003). - Fixed free variables in LP writer (#1006).
- Incorporated MathOptFormat.jl as the FileFormats submodule. FileFormats provides readers and writers for a number of standard file formats and MOF, a file format specialized for MOI (#969).
- Improved performance of deletion of vector of variables in
MOI.Utilities.Model
(#983). - Updated to MutableArithmetics v0.2 (#981).
- Added
MutableArithmetics.promote_operation
allocation tests (#975). - Fixed inference issue on Julia v1.1 (#982).
- Implemented MutableArithmetics API (#924).
- Fixed callbacks with
CachingOptimizer
(#959). - Fixed
MOI.dimension
forMOI.Complements
(#948). - Added fallback for
add_variables
(#972). - Added
is_diagonal_vectorized_index
utility (#965). - Improved linear constraints display in manual (#963, #964).
- Bridges improvements:
- Added
IndicatorSet
toSOS1
bridge (#877). - Added support for starting values for
Variable.VectorizeBridge
(#944). - Fixed
MOI.add_constraints
with non-bridged variable constraint on bridged variable (#951). - Fixed corner cases and docstring of geomean bridge (#961, #962, #966).
- Fixed choice between variable or constraint bridges for constrained variables (#973).
- Improve performance of bridge shortest path (#945, #946, #956).
- Added docstring for
test_delete_bridge
(#954). - Added Variable bridge tests (#952).
- Added
- Implemented
_result_index_field
forNLPBlockDual
(#934). - Fixed copy of model with starting values for vector constraints (#941).
- Bridges improvements:
- Improved performance of
add_bridge
and addedhas_bridge
(#935). - Added
AbstractSetMapBridge
for bridges between setsS1
,S2
such that there is a linear mapA
such thatA*S1 = S2
(#933). - Added support for starting values for
FlipSignBridge
,VectorizeBridge
,ScalarizeBridge
,SlackBridge
,SplitIntervalBridge
,RSOCBridge
,SOCRBridge
NormInfinityBridge
,SOCtoPSDBridge
andRSOCtoPSDBridge
(#933, #936, #937, #938, #939).
- Improved performance of
- Added complementarity constraints (#913).
- Allowed
ModelLike
objects as value of attributes (#928). - Testing improvements:
- Added
dual_objective_value
option toMOI.Test.TestConfig
(#922). - Added
InvalidIndex
tests inbasic_constraint_tests
(#921). - Added tests for the constant term in indicator constraint (#929).
- Added
- Bridges improvements:
- Added support for starting values for functionize bridges (#923).
- Added variable indices context to variable bridges (#920).
- Fixed a typo in printing o
debug_supports
(#927).
- Clarified
PrimalStatus
/DualStatus
to beNO_SOLUTION
ifresult_index
is out of bounds (#912). - Added tolerance for checks and use
ResultCount
+ 1 for theresult_index
inMOI.Test.solve_result_status
(#910, #917). - Use
0.5
instead of2.0
for power in PowerCone inbasic_constraint_test
(#916). - Bridges improvements:
- Added debug utilities for unsupported variable/constraint/objective (#861).
- Fixed deletion of variables in bridged
VectorOfVariables
constraints (#909). - Fixed
result_index
with objective bridges (#911).
- Added solver-independent MIP callbacks (#782).
- Implements submit for
Utilities.CachingOptimizer
andBridges.AbstractBridgeOptimizer
(#906). - Added tests for result count of solution attributes (#901, #904).
- Added
NumberOfThreads
attribute (#892). - Added
Utilities.get_bounds
to get the bounds on a variable (#890). - Added a note on duplicate coefficients in documentation (#581).
- Added result index in
ConstraintBasisStatus
(#898). - Added extension dictionary to
Utilities.Model
(#884, #895). - Fixed deletion of constrained variables for CachingOptimizer (#905).
- Implemented
Utilities.shift_constraint
forTest.UnknownScalarSet
(#896). - Bridges improvements:
- Added Variable.RSOCtoSOCBridge (#907).
- Implemented
MOI.get
forConstraintFunction
/ConstraintSet
forBridges.Constraint.SquareBridge
(#899).
- Fixed ambiguity detected in Julia v1.3 (#891, #893).
- Fixed missing sets from
ListOfSupportedConstraints
(#880). - Fixed copy of
VectorOfVariables
constraints with duplicate indices (#886). - Added extension dictionary to MOIU.Model (#884).
- Implemented
MOI.get
for function and set forGeoMeanBridge
(#888). - Updated documentation for SingleVariable indices and bridges (#885).
- Testing improvements:
- Added more comprehensive tests for names (#882).
- Added tests for
SingleVariable
duals (#883). - Added tests for
DualExponentialCone
andDualPowerCone
(#873).
- Improvements for arbitary coefficient type:
- Fixed
==
for sets with mutable fields (#887). - Removed some
Float64
assumptions in bridges (#878). - Automatic selection of
Constraint.[Scalar|Vector]FunctionizeBridge
(#889).
- Fixed
- Implemented model printing for
MOI.ModelLike
and specialized it for models defined in MOI (864). - Generalized
contlinear
tests for arbitary coefficient type (#855). - Fixed
supports_constraint
forSemiinteger
andSemicontinuous
andsupports
forObjectiveFunction
(#859). - Fixed Allocate-Load copy for single variable constraints (#856).
- Bridges improvements:
- Add objective bridges (#789).
- Fixed
Variable.RSOCtoPSDBridge
for dimension 2 (#869). - Added
Variable.SOCtoRSOCBridge
(#865). - Added
Constraint.SOCRBridge
and disableMOI.Bridges.Constraint.SOCtoPSDBridge
(#751). - Fixed
added_constraint_types
forContraint.LogDetBridge
andConstraint.RootDetBridge
(#870).
- Fix support for Julia v1.2 (#834).
- L_1 and L_∞ norm epigraph cones and corresponding bridges to LP were added (#818).
- Added tests to
MOI.Test.nametest
(#833). - Fix
MOI.Test.soc3test
for solvers not supporting infeasibility certificates (#839). - Implements
operate
for operators*
and/
between vector function and constant (#837). - Implements
show
forMOI.Utilities.IndexMap
(#847). - Fix corner cases for mapping of variables in
MOI.Utilities.CachingOptimizer
and substitution of variables inMOI.Bridges.AbstractBridgeOptimizer
(#848). - Fix transformation of constant terms for
MOI.Bridges.Constraint.SOCtoPSDBridge
andMOI.Bridges.Constraint.RSOCtoPSDBridge
(#840).
- Support for Julia v0.6 and v0.7 was dropped (#714, #717).
- A
MOI.Utilities.Model
implementation ofModelLike
, this should replace most use cases ofMOI.Utilities.@model
(#781). add_constrained_variable
andadd_constrained_variables
were added (#759).- Support for indicator constraints was added (#709, #712).
DualObjectiveValue
attribute was added (#473).RawParameter
attribute was added (#733).- A
dual_set
function was added (#804). - A
Benchmarks
submodule was added to facilitate solver benchmarking (#769). - A
submit
function was added, this may for intance allow the user to submit solutions or cuts to the solver from a callback (#775). - The field of
ObjectiveValue
was renamed toresult_index
(#729). - The
_constant
andUtilities.getconstant
function were renamed toconstant
REDUCTION_CERTIFICATE
result status was added (#734).- Abstract matrix sets were added (#731).
- Testing improvements:
- The testing guideline was updated (#728).
- Quadratic tests were added (#697).
- Unit tests for
RawStatusString
,SolveTime
,Silent
andSolverName
were added (#726, #741). - A rotated second-order cone test was added (#759).
- A power cone test was added (#768).
- Tests for
ZeroOne
variables with variable bounds were added (#772). - An unbounded test was added (#773).
- Existing tests had a few updates (#702, #703, #763).
- Documentation improvements:
- Added a section on
CachingOptimizer
(#777). - Added a section on
UniversalFallback
,Model
and@model
(#762). - Transition the knapsack example to a doctest with MockOptimizer (#786).
- Added a section on
- Utilities improvements:
- A
CleverDict
utility was added for a vector that automatically transform into a dictionary once a first index is removed (#767). - The
Utilities.constant
function was renamed toUtilities.constant_vector
(#740). - Implement optimizer attributes for CachingOptimizer (#745).
- Rename
Utilities.add_scalar_constraint
toUtilities.normalize_and_add_constraint
(#801). operate
withvcat
,SingleVariable
andVectorOfVariables
now returns aVectorOfVariables
(#616).- Fix a type piracy of
operate
(#784). - The
load_constraint
fallback signature was fixed (#760). - The
set_dot
function was extended to work with sparse arrays (#805).
- A
- Bridges improvements:
- The bridges no longer store the constraint function and set before it is
briged, the bridges now have to implement
ConstraintFunction
andConstraintSet
if the user wants to recover them. As a consequence, the@bridge
macro was removed (#722). - Bridge are now instantiated with a
bridge_constraint
function instead of using a constructor (#730). - Fix constraint attributes for bridges (#699).
- Constraint bridges were moved to the
Bridges/Constraint
submodule so they should now inherit fromMOI.Bridges.Constraint.Abstract
and should implementMOI.Bridges.Constraint.concrete_bridge_type
instead ofMOI.Bridges.concrete_bridge_type
(#756). - Variable bridges were added in (#759).
- Various improvements (#746, #747).
- The bridges no longer store the constraint function and set before it is
briged, the bridges now have to implement
- Performance improvement in
default_copy_to
and bridge optimizer (#696). - Add
Silent
and implement setting optimizer attributes in caching and mock optimizers (#695). - Add functionize bridges (SingleVariable and VectorOfVariables) (#659).
- Minor typo fixes (#694).
- 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.