For a detailed list of the closed issues and pull requests from this release, see the tag notes.
- Added
CallbackNodeStatusattribute - Added bridge from
GreaterThanorLessThantoInterval - Added tests for infeasibility certificates and double optimize
- Fixed support for Julia v1.6
- Re-organized MOI docs and added documentation for adding a test
For a detailed list of the closed issues and pull requests from this release, see the tag notes.
- Various improvements for working with complex numbers
- Added
GeoMeantoRelEntrBridgeto bridge a geomean constraint to a relative entropy constraint
For a detailed list of the closed issues and pull requests from this release, see the tag notes.
- Fixed
CleverDictwith variable of negative index value - Implement
supports_add_constrained_variableforMockOptimizer
For a detailed list of the closed issues and pull requests from this release, see the tag notes.
- Various fixes:
- 32-bit support
CleverDictwith abstract value type- Checks in test suite
For a detailed list of the closed issues and pull requests from this release, see the tag notes.
A summary of changes are as follows:
- Bridges improvements:
- (R)SOCtoNonConvexQuad bridge
- ZeroOne bridge
- Use
supports_add_constrained_variableinLazyBridgeOptimizer - Exposed
VariableBridgeCostandConstraintBridgeCostattributes - Prioritize constraining variables on creation according to these costs
- Refactor bridge debugging
- Large performance improvements across all submodules
- Lots of documentation improvements
- FileFormats improvements:
- Update MathOptFormat to v0.5
- Fix supported objectives in
FileFormats
- Testing improvements:
- Add name option for
basic_constraint_test
- Add name option for
- Bug fixes and missing methods
- Add
lengthfor iterators - Fix bug with duplicate terms
- Fix order of
LinearOfConstraintIndices
- Add
- Add a solver-independent interface for accessing the set of conflicting constraints an Irreducible Inconsistent Subsystem (#1056).
- Bump JSONSchema dependency from v0.2 to v0.3 (#1090).
- Documentation improvements:
- Fix typos (#1054, #1060, #1061, #1064, #1069, #1070).
- Remove the outdated recommendation for a package implementing MOI for a
solver
XXXto be calledMathOptInterfaceXXX(#1087).
- Utilities improvements:
- Fix
is_canonicalfor quadratic functions (#1081, #1089). - Implement
add_constrained_variable[s]forCachingOptimizerso that it is added as constrained variables to the underlying optimizer (#1084). - Add support for custom objective functions for
UniversalFallback(#1086). - Deterministic ordering of constraints in
UniversalFallback(#1088).
- Fix
- Testing improvements:
- Add
NormOneCone/NormInfinityConetests (#1045).
- Add
- Bridges improvements:
- Add bridges from
SemiintegerandSemicontinuous(#1059). - Implement getting
ConstraintSetforVariable.FlipSignBridge(#1066). - Fix setting
ConstraintFunctionforConstraint.ScalarizeBridge(#1093). - Fix
NormOne/NormInfbridges with nonzero constants (#1045). - Fix StackOverflow in
debug(#1063).
- Add bridges from
- FileFormats improvements:
- [SDPA] Implement the extension for integer variables (#1079).
- [SDPA] Ignore comments aftere
mandnblocksand detectdat-sextension (#1077). - [SDPA] No scaling of off-diagonal coefficient (#1076).
- [SDPA] Add missing negation of constant (#1075).
- Added tests for
SemicontinuousandSemiintegervariables (#1033). - Added tests for using
ExprGraphs from NLP evaluators (#1043). - Update version compatibilities of depedencies (#1034, #1051, #1052).
- Fixed typos in documentation (#1044).
- Fixed writing
NLPBlockin MathOptFormat (#1037). - Fixed
MockOptimizerfor result attributes with non-one result index (#1039). - Updated test template with
instantiate(#1032).
- Add an option for the model created by
Utilities.@modelto be a subtype ofAbstractOptimizer(#1031). - Described dual cone in docstrings of
GeoMeanConeandRelativeEntropyCone(#1018, #1028). - Fixed typos in documentation (#1022, #1024).
- Fixed warning of unsupported attribute (#1027).
- Added more rootdet/logdet conic tests (#1026).
- Implemented
ConstraintDualforConstraint.GeoMeanBridge,Constraint.RootDetBridgeandConstraint.LogDetBridgeand test duals in tests withGeoMeanConeandRootDetConeTriangleandLogDetConeTrianglecones (#1025, #1026).
- Added
OptimizerWithAttributesgrouping an optimizer constructor and a list of optimizer attributes (#1008). - Added
RelativeEntropyConewith corresponding bridge into exponential cone constraints (#993). - Added
NormSpectralConeandNormNuclearConewith 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).
- Clarified dual solution of
Tests.pow1vandTests.pow1f(#1013). - Added support for
EqualToandZeroinBridges.Constraint.SplitIntervalBridge(#1005). - Fixed
Utilities.vectorizefor 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_operationallocation tests (#975). - Fixed inference issue on Julia v1.1 (#982).
- Implemented MutableArithmetics API (#924).
- Fixed callbacks with
CachingOptimizer(#959). - Fixed
MOI.dimensionforMOI.Complements(#948). - Added fallback for
add_variables(#972). - Added
is_diagonal_vectorized_indexutility (#965). - Improved linear constraints display in manual (#963, #964).
- Bridges improvements:
- Added
IndicatorSettoSOS1bridge (#877). - Added support for starting values for
Variable.VectorizeBridge(#944). - Fixed
MOI.add_constraintswith 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_fieldforNLPBlockDual(#934). - Fixed copy of model with starting values for vector constraints (#941).
- Bridges improvements:
- Improved performance of
add_bridgeand addedhas_bridge(#935). - Added
AbstractSetMapBridgefor bridges between setsS1,S2such that there is a linear mapAsuch thatA*S1 = S2(#933). - Added support for starting values for
FlipSignBridge,VectorizeBridge,ScalarizeBridge,SlackBridge,SplitIntervalBridge,RSOCBridge,SOCRBridgeNormInfinityBridge,SOCtoPSDBridgeandRSOCtoPSDBridge(#933, #936, #937, #938, #939).
- Improved performance of
- Added complementarity constraints (#913).
- Allowed
ModelLikeobjects as value of attributes (#928). - Testing improvements:
- Added
dual_objective_valueoption toMOI.Test.TestConfig(#922). - Added
InvalidIndextests 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/DualStatusto beNO_SOLUTIONifresult_indexis out of bounds (#912). - Added tolerance for checks and use
ResultCount+ 1 for theresult_indexinMOI.Test.solve_result_status(#910, #917). - Use
0.5instead of2.0for power in PowerCone inbasic_constraint_test(#916). - Bridges improvements:
- Added debug utilities for unsupported variable/constraint/objective (#861).
- Fixed deletion of variables in bridged
VectorOfVariablesconstraints (#909). - Fixed
result_indexwith objective bridges (#911).
- Added solver-independent MIP callbacks (#782).
- Implements submit for
Utilities.CachingOptimizerandBridges.AbstractBridgeOptimizer(#906). - Added tests for result count of solution attributes (#901, #904).
- Added
NumberOfThreadsattribute (#892). - Added
Utilities.get_boundsto 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_constraintforTest.UnknownScalarSet(#896). - Bridges improvements:
- Added Variable.RSOCtoSOCBridge (#907).
- Implemented
MOI.getforConstraintFunction/ConstraintSetforBridges.Constraint.SquareBridge(#899).
- Fixed ambiguity detected in Julia v1.3 (#891, #893).
- Fixed missing sets from
ListOfSupportedConstraints(#880). - Fixed copy of
VectorOfVariablesconstraints with duplicate indices (#886). - Added extension dictionary to MOIU.Model (#884).
- Implemented
MOI.getfor 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
SingleVariableduals (#883). - Added tests for
DualExponentialConeandDualPowerCone(#873).
- Improvements for arbitary coefficient type:
- Fixed
==for sets with mutable fields (#887). - Removed some
Float64assumptions in bridges (#878). - Automatic selection of
Constraint.[Scalar|Vector]FunctionizeBridge(#889).
- Fixed
- Implemented model printing for
MOI.ModelLikeand specialized it for models defined in MOI (864). - Generalized
contlineartests for arbitary coefficient type (#855). - Fixed
supports_constraintforSemiintegerandSemicontinuousandsupportsforObjectiveFunction(#859). - Fixed Allocate-Load copy for single variable constraints (#856).
- Bridges improvements:
- Add objective bridges (#789).
- Fixed
Variable.RSOCtoPSDBridgefor dimension 2 (#869). - Added
Variable.SOCtoRSOCBridge(#865). - Added
Constraint.SOCRBridgeand disableMOI.Bridges.Constraint.SOCtoPSDBridge(#751). - Fixed
added_constraint_typesforContraint.LogDetBridgeandConstraint.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.soc3testfor solvers not supporting infeasibility certificates (#839). - Implements
operatefor operators*and/between vector function and constant (#837). - Implements
showforMOI.Utilities.IndexMap(#847). - Fix corner cases for mapping of variables in
MOI.Utilities.CachingOptimizerand substitution of variables inMOI.Bridges.AbstractBridgeOptimizer(#848). - Fix transformation of constant terms for
MOI.Bridges.Constraint.SOCtoPSDBridgeandMOI.Bridges.Constraint.RSOCtoPSDBridge(#840).
- Support for Julia v0.6 and v0.7 was dropped (#714, #717).
- A
MOI.Utilities.Modelimplementation ofModelLike, this should replace most use cases ofMOI.Utilities.@model(#781). add_constrained_variableandadd_constrained_variableswere added (#759).- Support for indicator constraints was added (#709, #712).
DualObjectiveValueattribute was added (#473).RawParameterattribute was added (#733).- A
dual_setfunction was added (#804). - A
Benchmarkssubmodule was added to facilitate solver benchmarking (#769). - A
submitfunction was added, this may for intance allow the user to submit solutions or cuts to the solver from a callback (#775). - The field of
ObjectiveValuewas renamed toresult_index(#729). - The
_constantandUtilities.getconstantfunction were renamed toconstant REDUCTION_CERTIFICATEresult 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,SilentandSolverNamewere added (#726, #741). - A rotated second-order cone test was added (#759).
- A power cone test was added (#768).
- Tests for
ZeroOnevariables 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,Modeland@model(#762). - Transition the knapsack example to a doctest with MockOptimizer (#786).
- Added a section on
- Utilities improvements:
- A
CleverDictutility was added for a vector that automatically transform into a dictionary once a first index is removed (#767). - The
Utilities.constantfunction was renamed toUtilities.constant_vector(#740). - Implement optimizer attributes for CachingOptimizer (#745).
- Rename
Utilities.add_scalar_constrainttoUtilities.normalize_and_add_constraint(#801). operatewithvcat,SingleVariableandVectorOfVariablesnow returns aVectorOfVariables(#616).- Fix a type piracy of
operate(#784). - The
load_constraintfallback signature was fixed (#760). - The
set_dotfunction 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
ConstraintFunctionandConstraintSetif the user wants to recover them. As a consequence, the@bridgemacro was removed (#722). - Bridge are now instantiated with a
bridge_constraintfunction instead of using a constructor (#730). - Fix constraint attributes for bridges (#699).
- Constraint bridges were moved to the
Bridges/Constraintsubmodule so they should now inherit fromMOI.Bridges.Constraint.Abstractand should implementMOI.Bridges.Constraint.concrete_bridge_typeinstead 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_toand bridge optimizer (#696). - Add
Silentand 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
SingleVariableobjective function (#690). - Fix
LazyBridgeOptimizerwith bridges that add no constraints (#689). - Error message improvements (#673, #685, #686, #688).
- Documentation improvements (#682, #683, #687).
- Basis status:
- Remove
VariableBasisStatus(#679). - Test
ConstraintBasisStatusand implement it in bridges (#678).
- Remove
- Fix inference of
NumberOfVariablesandNumberOfConstraints(#677). - Implement division between a quadratic function and a number (#675).
- Add
RawStatusStringattribute (#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
vectorizefunction that turns a vector ofScalarAffineFunctioninto 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
UniversalFallbackfor getting an variable or constraint attribute set to no indices (#623). - Add a test in
contlineartestwith partially setVariablePrimalStart.
- Bridges improvements:
- Fix
StackOverFlowinLazyBridgeOptimizerwhen there is a cycle in the graph of bridges. - Add
Slackbridges (#610, #650). - Add
FlipSignbridges (#658).
- Fix
- Add tests with duplicate coefficients in
ScalarAffineFunctionandVectorAffineFunction(#639). - Use tolerance to compare
VariablePrimalinrotatedsoc1test (#632). - Use a zero constant in
ScalarAffineFunctionof constraints inpsdt2(#622).
- Adding an NLP objective now overrides any objective set using the
ObjectiveFunctionattribute (#619). - Rename
fullbridgeoptimizerintofull_bridge_optimizer(#621). - Allow custom constraint types with
full_bridge_optimizer(#617). - Add
Vectorizebridge which transforms scalar linear constraints into vector linear constraints (#615).
- Rename all enum values to follow the JuMP naming guidelines for constants,
e.g.,
OptimalbecomesOPTIMAL, andDualInfeasiblebecomesDUAL_INFEASIBLE. - Rename CachingOptimizer methods for style compliance.
- Add an
MOI.TerminationStatusCodecalledALMOST_DUAL_INFEASIBLE.
- Test that
MOI.TerminationStatusisMOI.OptimizeNotCalledbeforeMOI.optimize!is called. - Check
supports_default_copy_toin 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
OptimizeNotCalledtermination status (#577) and improve documentation of other statuses (#575). - Add a solver naming guideline (#578).
- Make
FeasibilitySensethe defaultObjectiveSense(#579). - Fix
Utilities.@modelandBridges.@bridgemacros 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_tomethod that optimizers should implement to control caching behavior. - Documentation improvements.
- Improve hygiene of
@modelmacro (#544). - Fix bug in copy tests (#543).
- Fix bug in UniversalFallback attribute getter (#540).
- Allow all correct solutions for
solve_blank_objunit test (#537). - Add errors for Allocate-Load and bad constraints (#534).
- [performance] Add specialized implementation of
hashforVariableIndex(#533). - [performance] Construct the name to object dictionaries lazily in model (#535).
- Add the
QuadtoSOCbridge which transformsScalarQuadraticFunctionconstraints intoRotatedSecondOrderCone(#483).
- Enable
PositiveSemidefiniteConeSquareset and quadratic functions inMOIB.fullbridgeoptimizer(#524). - Add warning in the bridge between
PositiveSemidefiniteConeSquareandPositiveSemidefiniteConeTrianglewhen the matrix is almost symmetric (#522). - Modify
MOIT.copytestto not add multiples constraints on the same variable (#521). - Add missing keyword argument in one of
MOIU.add_scalar_constraintmethods (#520).
- The
MOIU.@modelandMOIB.@bridgemacros 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 argumentscopynamesandwarnattributes->copy_towith keyword argumentscopy_namesandwarn_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.finalizeinstead). - Add the
SquarePSDbridge which transformsPositiveSemidefiniteConeTriangleconstraints intoPositiveSemidefiniteConeTriangle. - Add result fallback for
ConstraintDualof variable-wise constraint,ConstraintPrimalandObjectiveValue. - Add tests for
ObjectiveBound. - Add test for empty rows in vector linear constraint.
- Rework errors:
CannotErrorhas been renamedNotAllowedErrorand the distinction betweenUnsupportedErrorandNotAllowedErroris 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, ...) cangetis removed.NoSolutionis 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
dimensionfield toside_dimensionin the context of matrix-like sets. - New and improved tests for cases like duplicate terms and
ObjectiveBound. - Removed
cantransform,canaddconstraint,canaddvariable,canset,canmodify, andcandeletefunctions from the API. They are replaced by a new set of errors that are thrown: Subtypes ofUnsupportedErrorindicate unsupported operations, while subtypes ofCannotErrorindicate 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
VectorAffineTermandVectorQuadraticTerm. - Added
modify_lhstoTestConfig. - Additional unit tests for optimizers.
- Added a type parameter to
CachingOptimizerfor theoptimizerfield. - 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.
SolverNameattribute.- 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. copynameskeyword 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.