Release notes
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v1.45.0 (September 20, 2025)
Added
- Added
Bridges.Objective.ToScalarNonlinearBridge(#2834), (#2835) - Added support for querying
ConstraintConflictStatuswhen the constraint was bridged (#2839)
Fixed
- Fixed a type instability in
Utilities.set_dot(#2831) - Rewrote
Base.read!(::IO, ::FileFormats.LP.Model)to use a proper recursive descent parser. This fixed numerous performance issues, and the resulting parser is simpler to maintain and extend. (#2840), (#2841), (#2842), (#2843), (#2844), (#2846), (#2847), (#2848), (#2852), (#2853) - Rewrote the error handling in
read!(::IO, ::FileFormats.MPS.Model)to throw aFileFormats.MPS.ParseError(#2845), (#2849)
Other
v1.44.0 (September 4, 2025)
Added
- Added support for
VariableNamein variable bridges (#2822)
Fixed
- Fixed use of deprecated
IntDisjointSets(#2824), (#2828) - Fixed
Utilities.get_fallbackforDualObjectiveValuewith open intervals (#2823) (#2826)
v1.43.0 (August 21, 2025)
Added
- Added
ConflictCountandconflict_indextoConstraintConflictStatus(#2775), (#2800), (#2801) - Added
Bridges.Constraint.IntervalToHyperRectangleBridge(#2754), (#2806), (#2809)
Fixed
- Fixed the MPS reader to support any whitespace as a field separator (#2798)
- Fixed tests with duplicate names and added a CI test (#2804), (#2805)
- Fixed parsing
x * xasx^2inNonlinear.Model(#2799) - Fixed a bug in
Utilities.operatewith quadratic outputs when aIntegercoefficient differs from the machineInteger(#2807) - Fixed
MOI.supportsofMOI.ObjectiveFunctionin all file formats (#2814) - Fixed free rows in
Bridges.Constraint.SplitHyperRectangleBridge(#2816) - Fixed deleting a variable with constraint bridges (#2818)
- Fixed
Utilities.AbstractModelwith no constraints (#2819)
Other
- Added an OPF benchmark (#2739)
- Updated to DataStructures@0.19 (#2796)
- Filter
identity_bridge.jlout fromruntests(#2812)
v1.42.1 (August 1, 2025)
Fixed
- Fixed reading MPS models with extra ROWS fields (#2793)
Other
- Added more packages to solver-tests.yml (#2785)
- Added a test to MPS reader that duplicate entries are summed (#2787)
- Fixed docstring of
inverse_trimap(#2790) - Removed useless prefix in
set_dot(#2791)
v1.42.0 (July 10, 2025)
Added
- Added an option to disable warnings in
Utilities.PenaltyRelaxation(#2774)
Fixed
- Fixed a bug writing objective constant in
MAX_SENSEwithFileFormats.MPS(#2778) - Fixed a change in how
==(::Expr, ::Expr)works on for Julia nightly (#2780) - Fixed a performance bug in the Hessian computation of
Nonlinear.ReverseAD(#2783)
v1.41.0 (June 9, 2025)
Added
- Added support for different number types in the various file format readers and writers. By default, the files assume
Float64. To change how the values are parsed, use; coefficient_type = T. The supported file formats are LP, MOF, MPS, and SDPA (#2768) (#2769) (#2770) (#2771) (#2772)
v1.40.2 (June 2, 2025)
Fixed
- Fixed bug reading
.nlfiles withuse_nlp_block = false(#2766)
Other
- Improved error thrown in
ToMILPBridgewhen variable is not bounded (#2764)
v1.40.1 (May 20, 2025)
Fixed
- Fixed a missing
dual_setforHermitianPositiveSemidefiniteConeTriangle(#2749) - Fixed
Utilities.get_fallbackofDualObjectiveValuewithHyperRectangle(#2755) - Fixed reading SDPA files with
{}punctuation (#2759)
Other
- Fixed a flakey doctest that depended on the runtime of a function (#2748)
- Changed to use
Base.onlywhen appropriate (#2751) - Removed the experimental warning from Nonlinear module docstring (#2752)
- Changed to use
throw_if_scalar_and_constant_not_zerowhen appropriate (#2753) - Improved the text of
showerrorforNotAllowedError(#2757)
v1.40.0 (May 4, 2025)
Added
- Added
Utilities.distance_to_setforPositiveSemidefiniteConeTriangleandPositiveSemidefiniteConeSquare(#2729) - Added
Bridges.Constraint.HermitianToComplexSymmetricBridge(#2724)
Fixed
- Fixed Bridge tests for non-invertible constraint bridge (#2713)
- Fixed bridge weights for SOS(1|2)ToMILPBridge (#2723)
- Fixed
Bridges.Constraint.SetMapBridgewithComplexnumber types (#2733)
Other
- Clarified comment about binary format in
FileFormats.NL(#2720) - Added more packages to solver-tests.yml (#2721)
- Removed
@showfrom test of MockOptimizer (#2725) - Added
@testsettoBridges.runtests(#2726), (#2734) - Updated JuliaFormatter to v2 (#2731)
- Various improvements to
Nonlinear.ReverseAD(#2730), (#2736), (#2737), (#2738), (#2740), (#2744), (#2745) - Bumped Julia version to v1.10 for documentation (#2735)
- Fixed tests on nightly (#2742)
- Added import MathOptInterface as MOI to DocTestSetup (#2746)
v1.39.0 (April 10, 2025)
Added
- Added
test_modulekeyword toTest.runtests(#2710) - Added support for reading the binary
bformat inFileFormats.Nonlinear(#2718)
Fixed
- Fixed
ListOfVariableIndicesreturned byBridges.LazyBridgeOptimizerwhen there is a chain of variable bridges (#2716)
Other
- Updated
solver-tests.yml(#2715)
v1.38.1 (April 7, 2025)
Fixed
- Fixed a redundant constraint in
Bridges.Constraint.CircuitToMILPBridge(#2694) - Fixed the ordering of
ListOfVariableIndicesreturned byBridges.LazyBridgeOptimizer(#2695) - Fix
Test.test_nonlinear_constraint_logto exclude undefined points (#2704)
Other
- Improve various docstrings (#2698), (#2699), (#2700), (#2701), (#2712)
- Add support for
ForwardDiff@1(#2703), (#2708) - Update
solver-tests.yml(#2697), (#2709) - Add a
@test_brokenfor issue #2696 (#2705)
v1.38.0 (March 13, 2025)
Added
Fixed
- Fixed a bug in
Utilities.operate(vcat, ) -> VectorNonlinearFunctionwhich previously did not ensure that the returned function could be mutated (#2682) - Fixed
getforConstraintFunctionofBridges.Constraint.SplitHyperRectangleBridgeto not add spurious+0and-0(#2681) - Fixed
test_basic_tests to useNonlinear.SymbolicAD.simplifywhen comparing constraint functions. This fixes some tests withVectorNonlinearFunctionthat failed because the bridge reformulations were not recognized as being equivalent (#2686) - Fixed
FileFormats.MOF.Modelto useuse_nlp_block = falseby default if the model containsScalarNonlinearFunction. This change could be regarded as technically breaking because writing and reading a model withScalarNonlinearFunctionused to return aNLPBlock, but now it reads functions as the expectedScalarNonlinearFunction(#2688) - Fixed
Test.version_addedfor a number of tests that were added in recent versions (#2690), (#2691)
Other
- Refactor some tests in
Bridges(#2684)
v1.37.2 (March 4, 2025)
Fixed
- Fixed a bug introduced by (#2661) in which various
ToMILPbridges were broken ifdeletewas called beforeUtilities.final_touch(#2678) - Fixed a bug introduced by (#2665) in which
attribute_value_typewas too strict for existing implementations ofBridges.ListOfNonstandardBridges(#2679)
v1.37.1 (March 3, 2025)
Fixed
- Fixed
modifywithMultirowChangeinBridges.Constraint.SetMapBridge(#2662) - Fixed
attribute_value_typeforBridges.ListOfNonstandardBridges(#2665)
Other
- This release contains a large number of pull requests that increase test coverage (#2657), (#2658), (#2659), (#2660), (#2661), (#2663), (#2670), (#2671), (#2672), (#2675)
- Changed
Bridges.Variable.ParameterToEqualToBridgeto be a subtype ofBridges.Variable.SetMapBridge(#2664) - Improved parallelism in the CI tests (#2674)
v1.37.0 (February 24, 2025)
Added
- Added constructors for
VectorAffineFunctionandVectorQuadraticFunctionthat acceptAbstractVector{MOI.ScalarAffineFunction}andAbstractVector{MOI.ScalarQuadraticFunction}respectively (#2636)
Fixed
- Fixed a bug reading
QCMATRIXinFileFormats.MPS(#2628) - Fixed reading
VariablePrimalStart,ConstraintPrimalStart, andConstraintDualStartfromFileFormats.MOF(#2652) - Fixed writing unsupported variable types in a number of file formats (#2654)
Other
- Removed the "experimental" warning from
Nonlinear(#2625) - This release contains a large number of pull requests that increase test coverage (#2630), (#2631), (#2632), (#2637), (#2638), (#2639), (#2640), (#2641), (#2642), (#2644), (#2645), (#2646), (#2647), (#2648), (#2649), (#2650)
- Fixed link to the coverage badge (#2634)
- Removed the mention of MathProgBase from the README (#2635)
- Removed
precompilestatements. Packages using MOI should address precompilation usingPrecompileTools.jlin their own package (#2643) - Removed unneeded
Unicodedependency (#2656)
v1.36.0 (February 12, 2025)
Added
- Added support for
Indicatorconstraints inUtilities.Model(#2618) (#2619) - Added features to improve performance of evaluating univariate operators in
Nonlinear(#2620):- Added
Nonlinear.eval_univariate_function_and_gradient Nonlinear.eval_univariate_function,Nonlinear.eval_univariate_gradient, andNonlinear.eval_univariate_hessiannow support calls with theIntegerindex of the operator instead of requiring aSymbol
- Added
Other
- Removed
mutablefrom the struct definition ofNonlinear.ReverseAD._FunctionStorageandNonlinear.ReverseAD._SubexpressionStorage(#2621) - Fixed docstrings in the
Coloringsubmodule (#2622)
v1.35.2 (January 29, 2025)
Fixed
- Fixed including non-
.jlfiles inBridges(#2615)
v1.35.1 (January 17, 2025)
Fixed
- Fixed
Base.copy(::MOI.ScalarNonlinearFunction)(#2612)
Other
- Performance improvements to
FileFormats.MOFreading and writing:
v1.35.0 (January 9, 2025)
Added
- Added
Bridges.Constraint.InequalityToComplementsBridge. This bridge is not added by default (#2582) - Added
Bridges.Constraint.ExponentialConeToScalarNonlinearFunctionBridge. This bridge is not added by default (#2587) - Added support for
SetMapbridges to use the value of a bridge inmap_functioninstead of the type (#2198)
Fixed
- Fixed a bug querying result attributes in a bridge with
result_index != 1(#2583) - Fixed various nonlinear tests to add a starting point (#2585)
- Fixed a bug with
variable_startinBridges.runtests(#2592) - Fixed
test_basic_tests forIndicatorsets to make the first variableZeroOne(#2600) - Changed the weights of the
SOCtoPSDandRSOCtoPSDbridges so that they are used only if necessary. Previously, these depended on the order in which they were added to aLazyBridgeOptimizer(#2596) (#2598) (#2599)
Other
- Added more tests for nonlinear programs (#2584)
- Renamed files in
Bridgesto reflect the type of the bridge (#2586) - Added more tests for
DualObjectiveValue(#2588) - Added a test for multiple PSD variables in the same constraint (#2594)
v1.34.0 (November 7, 2024)
Added
- Added
Bridges.Constraint.SetConversionBridge(#2536) - Added a new method to
add_constrained_variableto support passing a tuple ofGreaterThanandLessThan. This is intended to be a fast way of adding scalar variables with both lower and upper bounds (#2574)
Fixed
- Fixed error when adding unsupported constraints to
Utilities.AbstractModel(#2572) - Fixed creating
Interval,SemicontinuousandSemiintegerif the bound values are different types (#2577) - Attributes are now ignored in
ListOfXXXAttributesSetinUtilities.UniversalFallbackif they are set tonothing(#2575)
Other
v1.33.0 (October 28, 2024)
Added
- Added support for specifying the lower and upper bound suffixes for variable duals in
FileFormats.NL.SolFileResults(#2567)
Fixed
- Fixed
MOI.objective_expr(::InvalidEvaluator)(#2569)
v1.32.0 (October 21, 2024)
Added
- Added support for user-defined univariate operators which do not support second derivatives (#2542)
- Added the
NodeLimitattribute (#2552) - Added support for
Utilities.filter_variableswithVectorNonlinearFunction(#2556)
Fixed
- Fixed
Bridges.Constraint.TableToMILPBridgeif there is a constant in the function (#2544) - Fixed
FileFormats.MPSandFileFormats.LPto read separate variable bounds instead of anIntervalset (#2548) - Fixed the variable domains in
Test.test_nonlinear_expression_hs110(#2551) - Fixed the dimension of
VectorNonlinearFunctionin tests (#2555) - Fixed the use of
1:length(x)inNonlinear.Coloring(#2559) - Fixed an index conflict in
Nonlinear.Coloring(#2561)
Other
v1.31.2 (August 30, 2024)
Fixed
- Fixed a bug writing
FileFormats.MPSfiles withMAX_SENSEand quadratic objectives (#2539)
Other
- Improved the docstrings in
src/nlp.jl(#2537)
v1.31.1 (August 7, 2024)
Fixed
- Fixed
NLPBlockwhen used with bridges (#2524)
Other
v1.31.0 (June 26, 2024)
Added
- Added default
show(::IO, ::ModelLike)method (#2505) (#2510) - Set map bridges can now implement the various
map_functionmethods to use the value of the bridge as the first argument, instead of passing the type of the bridge. (#2509) - Added
cannot_unbridgeargument toBridges.runtests
Fixed
- Fixed
supports_constraintforIndicatorSOS1Bridge(#2507) - Fixed getting
ConstraintDualin slack bridges (#2508) (#2514) (#2515) - Fixed
FileFormats.NLto read linear constraints asScalarAffineFunction(#2512) - Changed
default_copy_toto maintain the order of variables duringcopy_to. This change is marked as non-breaking, but it may cause different (but mathematically equivalent) models to be formulated, particularly conic models with bridges. (#2495) (#2520)
Other
v1.30.0 (May 23, 2024)
Added
- Added input and output functions to
Bridges.runtests(#2497)
Fixed
- Improved the heuristic of when to write variable cones in
FileFormats.CBF(#2494) - Fixed
Bridges.runtestswhen model has no variable (#2499) - Fixed getting an attribute of an empty vector (#2501)
Other
- Fixed links in the documentation (#2502)
v1.29.0 (April 19, 2024)
Added
Fixed
- The CBF writer now attempts to write
VectorOfVariablesconstraints in theVARsection, instead of automatically promoting them toVectorAffineFunction. (#2478) (#2482) (#2486) - Fixed a performance issue adding
ScalarAffineFunctionandScalarQuadraticFunctions toNonlinear.Model(@2487) - Fixed a bug reading MPS files with integer variables and an entry in the
BOUNDSsection (#2490) - Fixed the MPS writer to use
LIandUIinstead ofLOandUPfor integer variables (#2492)
Other
v1.28.1 (April 13, 2024)
Fixed
- Fixed a bug reading MPS files with integer variables and no corresponding entry in the
BOUNDSsection (#2480)
v1.28.0 (April 11, 2024)
Added
Fixed
- Fixed a correctness bug getting the set of a constraint that used both variable and constraint bridges (#2464) (#2472)
- Fixed
MethodErrorin some bridges when called withComplex-valued functions (#2468) (#2475) - Fixed reading MPS files that use
*as the start of a name and not as a comment (#2470)
Other
- Updated
solver-tests.yml(#2465) - Removed two unused methods from
MOI.Bridges(#2466) - Documentation updates (#2467), (#2473), (#2474)
- Simplify reading CBF files (#2476)
v1.27.1 (March 27, 2024)
Fixed
- Fixed passing non-
IndexMapinUtilities.pass_attributes(#2458) - Fixed getting
MOI.ListOfConstraintAttributesSetforVectorOfConstraints(#2459)
Other
v1.27.0 (February 27, 2024)
Added
- Added support for
sign(x)inNonlinear(#2444)
Fixed
v1.26.0 (February 22, 2024)
Added
- Added
.initialize_timertoNonlinear.Evaluator(#2438)
Fixed
- Fixed writing binary variables with bounds in
FileFormats.MPS(#2431) - Fixed parsing suffixes in
FileFormats.NL(#2436) - Fixed writing free constraints in
FileFormats.NL(#2437) - Fixed potential for unsafe out-of-bounds write in Hessian evaluation (#2441)
Other
- Fixed formatting of
BasisStatusCodedocstring (#2430) - Refactor
test/Fileformats/MPS/MPS.jl(#2433)
v1.25.3 (February 14, 2024)
Fixed
- Fixed number type in
get_fallback(#2414) - Fixed error type thrown when a variable bridge cannot un-bridge the function. It used to throw
ErrorException. It now throwsMOI.GetAttributeNotAllowed{MOI.ConstraintFunction}. This enablesUtilities.CachingOptimizerto more uniformly implement fallbacks for common bridges likeBridges.Variable.ZerosBridge. (#2415) - Fixed tests on upcoming Julia v1.11 (#2428)
Other
- Improved performance of
Bridges.Constraint.CountDistinctToMILPBridge(#2416) - Improved performance of
FileFormats.MPSwriter (#2421) (#2424) (#2426) - Updated
solver-tests.yml(#2423) - Fixed typos in
src/attributes.jl(#2429)
v1.25.2 (January 29, 2024)
Fixed
- Fixed getting
ConstraintPrimalif variable bridges are present (#2396) - Fixed
modify_function!forScalarQuadraticCoefficientChange(#2408) - Fixed writing
FileFormats.MOFfiles ifScalarNonlinearFunctioncontainsScalarAffineFunctionorScalarQuadraticFunction(#2409)
Other
- Clarified ordering of nonlinear tape in documentation (#2401)
- Updated vale.sh (#2403) (#2404)
- Tidied `src/Utilities/results.jl (#2411)
v1.25.1 (January 11, 2024)
Fixed
- Fixed
map_indicesforAbstractAutomaticDifferentiation(#2394) - Fixed deleting a variable in
Bridges.Variable.VectorizeBridge(#2393) - Fixed super type of
LowerBoundAlreadySetandUpperBoundAlreadySet(#2397)
Other
- Removed a duplicated test (#2395)
v1.25.0 (January 5, 2024)
Added
- Added the
AutomaticDifferentiationBackendattribute (#2386)
Fixed
- Fixed
initializeforNonlinear.ExprGraphOnly(#2387) - Fixed converting 0-valued
ScalarAffineFunctionandScalarQuadraticFunctiontoScalarNonlinearFunction(#2388) - Fixed reading
.nlfiles with non-empty variable and constraint names (#2390) - Fixed reading
.nlfiles with no objective (#2391) - Fixed reading
.nlfiles with free ranged constraints (#2392)
v1.24.0 (January 2, 2024)
Added
- Added
get_fallbackforConstraintDualof variable bounds (#2373)
Fixed
- Fixed
RSOCtoPSDBridgefor dimension 2 (#2359) - Fixed getting
ConstraintFunctionin conversion bridge (#2360) - Fixed
map_indices(#2367) - Fixed
SlackBridgePrimalDualStartfor non-slack bridges (#2365) - Fixed
test_attribute_TimeLimitSec(#2370) - Fixed order of model attributes during
copy_to(#2372) - Fixed
ConstraintIndexconflicts between variable and constraint bridges (#2362) - Fixed corner-case deletion in bridges (#2377)
- Fixed
ListOfVariablesWithAttributeSetfor variable bridges (#2380) - Fixed
SlackBridgeif scalar constant is not zero (#2382) - Fixed setting multiple bounds on a bridged variable (#2383)
Other
- Minor documentation improvements (#2355), (#2374)
- Improved
side_dimension_for_vectorized_dimension(#2356) - Added DiffOpt and ParametricOptInterface to
solver-tests.yml(#2368) - Refactored
SDPAModelinto a separate test file and test more widely (#2364), (#2357)
v1.23.0 (November 29, 2023)
Added
- Added
ConstraintPrimalStartforBridges.Constraint.GeoMeanBridge(#2348) - Added
verbosekeyword argument toTest.runtests(#2347) - Added
Bridges.FirstBridgeattribute (#2211)
Fixed
- Fixed
Test.test_model_Name_VariableName_ConstraintName(#2349) - Fixed errors thrown when querying an attribute is not supported, like when
Utilities.CachingOptimizeris not attached to an optimizer (#2350)
v1.22.0 (November 6, 2023)
Added
- Added new bridges (#2318)
- Added starting values for bridges (#2330) (#2337) (#2338) (#2339)
- Added
ListOfVariablesWithAttributeSetandListOfConstraintsWithAttributeSet(#2331) (#2342) - Added support for printing
ConstraintNamewhen models are printed (#2336)
Fixed
ScalarFunctionConstantNotZeroerrors are now skipped inTest.runtests(#2325)- Fixed
VectorNonlinearFunctionsupport inBridges.Constraint.NormOneBridgeandBridges.Constraint.NormInfinityBridge(#2324) - Fixed various
getforConstraintFunctionto return a copy, and added tests (#2328) - Fixed
supportsofConstraintPrimalStartandVariablePrimalStartfor some bridges (#2340)
Other
- Fixed typo in docstring of
ScalarAffineFunction(#2326) - Added Gurobi to
solver-tests.yml(#2332) - Improved the error message when a bridge does not support an attribute (#2329)
- Improved documentation for implementing a bridge (#2334)
- Updated
[compat]bounds inProject.toml(#2344)
v1.21.0 (October 25, 2023)
Added
- Added
SolutionLimitattribute (#2291) - Added support for MathOptFormat v1.6 and v1.7 (#2293) (#2298) (#2299) (#2321)
- Added
ScalarQuadraticCoefficientChange(#2296) (#2320) (#2322) - Added
Utilities.modify_constants(#2300) - Added support for
is_emptyandempty!ofNonlinear.Model(#2305) - Added
Bridges.Objective.FunctionConversionBridge(#2303) - Added
Bridges.ModifyBridgeNotAllowed(#2307) - Added more sets for
Utilities.distance_to_set(#2314)
Fixed
Other
- Fixed flakey link checking in documentation (#2297)
- Minor documentation fixes (#2304) (#2313)
- Fixed
[compat]section ofProject.toml(#2310) - Added MultiObjectiveAlgorithms to
solver-tests.yml(#2312)
v1.20.1 (September 24, 2023)
Fixed
- Removed incorrect
kwargsin somecopy_tomethods (#2272) - Fixed
ConstraintDualStartforBridges.Constraint.SplitIntervalBridge(#2275) - Fixed
MethodErrorwhen trying to modify a variable objective (#2278) - Fixed stack-overflow in
Utilities.operate(+,...)with many arguments (#2285) (#2290)
Other
- Added MathOptSetDistances to
solver-tests.yml(#2265) - Updated Documenter (#2266)
- Fixed various JET errors (#2267) (#2269) (#2270) (#2271) (#2276) (#2277) (#2289)
- Various style improvements
- Refactored
src/Utilities/model.jl(#2287)
v1.20.0 (September 7, 2023)
Added
Other
- Updated dependencies (#2258)
- Improved performance of
ScalarNonlinearFunctionutilities (#2259) - Fixed docstrings (#2261)
v1.19.0 (August 15, 2023)
Added
- Added
VectorNonlinearFunction(#2201) - Added new bridges
- Added
Bridges.bridging_costfor setting a bridge-specific cost in the bridging graph (#2235) - Added
Utilities.eval_variablessupport forScalarNonlinearFunction(#2218) (#2219) - Added support for
ScalarNonlinearFunctioninFileFormats.NL(#2228) (#2231) - Added support for writing non-
Float64functions inFileFormats.MOF - Added
Utilities.lazy_map(#2254)
Fixed
- Fixed method ambiguities in
operate(#2224) - Fixed reading LP file with a
-infinity <= x <= +infinityvariable (#2225) - Fixed missing
requireinTest.test_nonlinear_duals(#2230) - Fixed bug in
ConstraintPrimalofBridges.Constraint.QuadtoSOCBridge(#2240)
Other
- Added extensions to
solver-tests.yml(#2229) - Refactored
test/Benchmarks(#2234) - Fixed warnings in tests (#2241) (#2243)
- Small refactoring of bridges for upcoming
VectorNonlinearFunction(#2244) (#2245) - Fixed various typos (#2251) (#2255)
- Partitioned how we run the tests on GitHub actions (#2252) (#2253)
v1.18.0 (June 23, 2023)
Added
- Added
Bridges.Objective.SlackBridgePrimalDualStart(#2194) - Added
constraint_gradient_structureandeval_constraint_gradient(#2200)
Fixed
- Fixed a missing
@requireinMOI.Test(#2195) (#2196) - Fixed incorrect usage of
Utilities.operate!in bridges (#2207) (#2216) - Fixed splatting nonlinear expression with univariate operator (#2221)
Other
- Removed unused argument names (#2199)
- Reduced memory requirement for tests (#2204)
- Refactored
Utilities.promote_operation(#2206) - Improved code style in
Utilities/mutable_arithmetics.jl(#2209) - Refactored various methods in
Utilities/functions.jl(#2208) (#2212) (#2213) (#2214) (#2215)
v1.17.1 (June 6, 2023)
Fixed
- Fixed comparison of
ScalarFunctionConstantNotZero(#2190)
Other
- Added documentation for enum instances (#2186)
- Updated chatroom links in documentation (#2188)
- Changed the documentation to build on Julia v1.9 (#2191)
v1.17.0 (June 1, 2023)
Added
- Added
ScalarNonlinearFunction(#2059) - Added a variety of tests for
NormSpectralCone,NormNuclearCone, andHermitianPositiveSemidefiniteConeTriangle(#2174) - Added
Utilities.value_typefor computing the value type of a function (#2176)
Fixed
- Fixed support for external sets in
Utilities.loadfromstring!(#2177) - Fixed
promote_operationforScalarNonlinearFunction(#2179) - Fixed two issues in
FileFormats.LPwhen reading files with quadratic functions (#2182) (#2184)
v1.16.0 (May 16, 2023)
Added
- Added support for MathOptFormat v1.3 and v1.4 (#2158) (#2169)
- Added new method to the nonlinear API (#2162) (#2164)
- Added new sets
Fixed
- Fixed support for Julia v1.9 to work around a bug in the upstream Julia compiler (#2161) (#2163)
- Fixed a correctness bug in
Bridges.Constraint.HermitianToSymmetricPSDBridge(#2171) - Fixed
convert(::VariableIndex, ::ScalarAffineFunction)when the function has terms with0coefficients (#2173)
Other
- Fixed
solver-tests.yml(#2157) - Updated documentation links to developer chatroom (#2160)
- Added various tests for bridges (#2156)
- Added checklists to the developer documentation (#2167) (#2168)
v1.15.1 (April 25, 2023)
Fixed
- Fixed deleting a variable in a bridged objective (#2150)
v1.15.0 (April 19, 2023)
Added
Fixed
- Fixed support for
RationalinBridges.Constraint.SplitIntervalBridge(#2137) - Fixed printing of LaTeX models (#2141)
- Fixed
modifyinBridges.Objective.VectorSlackBridge(#2144) - Fixed NAME record with spaces in
FileFormats.MPS(#2146) - Fixed deleting a variable in a bridged objective (#2147)
Other
- Add a test for variables in one-sided open
Intervalsets (#2133) - Minor style fixes in the source code (#2148)
v1.14.1 (April 6, 2023)
Fixed
- Fixed a bug in
Bridges.print_active_bridges(#2135)
Other
- Added a warning when an ambiguous string is passed to
excludeinTest.runtests(#2136)
v1.14.0 (April 4, 2023)
Added
- Added support for starting values in
Bridges.Constraint.QuadtoSOCBridge(#2115) - Added support for
Regexin theincludeandexcludearguments toTest.runtests(#2129) - Added
Bridges.print_active_bridgesmethods for individual objectives and constraints (#2128)
Fixed
- Fixed
ResultCountwhen parsing.solfiles inFileFormats.NL(#2130)
v1.13.2 (March 21, 2023)
Fixed
- Fixed splatting of containers in
MOI.Nonlinear(#2120) - Fixed a bug reading LP files with default bounds (#2121)
- Fixed a bug in which
Bridges.Constraint.HermitianToSymmetricPSDBridgewas not enabled by default (#2123)
Other
- Fixed typos in the documentation (#2114)
- Functions now print to the REPL in algebraic form. This is potentially breaking if you have tests which rely on a specific
Stringform of MOI functions. (#2112) (#2126)
v1.13.1 (March 3, 2023)
Other
- Added the Google style guide to the documentation linter Vale, and fixed the resulting warnings (#2110)
- Improved the docstrings in
src/functions.jl(#2108)
v1.13.0 (February 28, 2023)
Added
- Added
Bridges.Constraint.NumberConversionBridge(#2091) - Added
Parameterset (#2095) (#2105) (#2106) (#2109) - Added
with_cache_typeargument toinstantiate(#2097) - Added support for
HermitianPositiveSemidefiniteConeTriangleinUtilities.Model(#2100)
Fixed
- Fixed bug when
Utilities.@product_of_setsis empty (#2101) - Fixed
Bridges.print_active_bridgeswhen variable bridge is anAbstractScalarSet(#2107)
Other
- Added tests for vector-valued objective functions in
FileFormats.MOF(#2093) - Used and documented preference for
import MathOptInterface as MOI(#2096) - Fix and test links in the documentation with
linkcheck = true(#2098) - Improved docstrings of sets in
src/sets.jl(#2099) - Skip checking flakey links in documentation with
linkcheck_ignore(#2103)
v1.12.0 (February 10, 2023)
Added
- Added support for vector-valued objective functions (#2070)
- Added a
Utilities.distance_to_setmethod forSecondOrderCone(#2060)
Fixed
- Fixed a number of constraint bridges so that
Bridges.final_touchcan be called multiple times without forcing a rebuild of the reformulation (#2089)
Other
- Added new tests that a set
ObjectiveFunctionappears inListOfModelAttributesSet(#2085) - Improved the docstrings of a number of constraint-programming related sets (#2087)
v1.11.5 (January 24, 2023)
Fixed
- Fixed a bug writing
.lpfiles with an off-diagonal quadratic objective (#2082)
Other
- Added
SnoopPrecompiledirectives for reduced time-to-first-X in Julia v1.9 (#2080)
v1.11.4 (January 12, 2023)
Fixed
- Fixed a bug reading
.lpfiles with anIntegersection (#2078)
v1.11.3 (January 12, 2023)
Fixed
- Fixed a performance bug when deleting a vector of constraints (#2072)
- Fixed a bug reading
.lpfiles with terms likex -1 y(#2076)
Other
v1.11.2 (January 2, 2023)
Fixed
- Fixed a bug reading
.mof.jsonfiles withConstraintNameset forVariableIndexconstraints (#2066) - Fixed a bug reading
.mof.jsonfiles with nonlinear objectives and no constraints (#2068)
v1.11.1 (December 22, 2022)
Fixed
- Fixed a bug reading
.mof.jsonfiles with integer coefficients for affine and quadratic functions (#2063)
v1.11.0 (December 2, 2022)
Added
- Added
Utilities.PenaltyRelaxationandUtilities.ScalarPenaltyRelaxation(#1995) - Added
Utilities.distance_to_set(#2048) - Added support for
ConstraintPrimalStartandConstraintDualStartinFileFormats.MOF(#2056)
Other
- Tidied these release notes (#2055)
v1.10.0 (November 22, 2022)
Added
- Added new methods
set(::OptimizerWithAttributes, ::RawOptimizerAttribute, value)andget(::OptimizerWithAttributes, ::RawOptimizerAttribute)(#2049) - Added new methods
Utilities.DoubleDicts.outer_keysandUtilities.DoubleDicts.nonempty_outer_keys(#2052)
Fixed
- Fixed
Bridges.Objective.SlackBridgewhen the objective function is complex-valued (#2036) (#2038) - Fixed docstring of
Test.runteststo clarify thewarn_unsupportedargument (#2037) - Fixed reading of free variables in
FileFormats.LP(#2044) - Fixed numerous edge cases reading files from QPLIB using
FileFormats.LP(#2042) (#2044) - Fixed situations in which
x^yreturns a complex value inNonlinear(#2050)
Other
- Improved the error message thrown when a user-defined nonlinear function does not accept splatted input (#2032)
- Removed specialized iterators for
keysandvaluesinUtilities.CleverDicts(#2051)
v1.9.0 (October 29, 2022)
Added
- Added default fallback for getting
ListOfConstraintIndicesandNumberOfConstraintswhen the constraint type is unsupported by the model (#2021) - Added support for
minandmaxin nonlinear expressions (#2023) - Added support for
Indicator{EqualTo{T}}constraints inFileFormats.MPS(#2022) - Added default fallback for
write_to_fileandread_from_file(#2029)
Fixed
- Fixed
Constraint.ZeroOneBridgeby adding new bounds as affine constraints instead of variable bounds (#1879) - Fixed reading free rows in
FileFormats.MPSfiles (#2009) - Fixed parsing of
OBJSENSEblocks inFileFormats.MPSfiles (#2016) (#2019) - Fixed the parsing of deeply nested nonlinear expressions by removing the use of recursion (#2020)
- Fixed the requirements check in
Test.test_constraint_get_ConstraintIndex(#2024)
v1.8.2 (September 20, 2022)
Documentation
- Added vale as a documentation linter (#2002)
- Improved styling of code blocks in the PDF (#1999) (#2000)
- Fixed a number of typos in the documentation (#2001) (#2003)
v1.8.1 (September 12, 2022)
Fixed
v1.8.0 (September 1, 2022)
Added
Fixed
- Lazily construct expressions in
Nonlinearso that expressions are updated whenNonlinear.Parametervalues are updated (#1984) - Allow
NORM_LIMITas aTerminationStatusfor unbounded problems inTest(#1990)
v1.7.0 (August 16, 2022)
Added
- Added new sets
- Added new optimizer-independent options
- Added new bridges
Bridges.Constraint.GeoMeanToPowerBridgeBridges.Constraint.HermitianToSymmetricPSDBridgeBridges.Constraint.IndicatorGreaterToLessThanBridgeBridges.Constraint.IndicatorLessToGreaterThanBridgeBridges.Constraint.SplitComplexZerosBridgeBridges.Constraint.SplitComplexEqualToBridgeBridges.Objective.QuadratizeBridge
- Added support for generic number types in
Utilities.loadfromstring! - Updated
FileFormats.MOFto MathOptFormat v1.1, enabling support for constraint programming sets in theMOFfile format - Added support in various
FileFormatsfor- indicator constraints in
FileFormats.MPS - quadratic constraints and an objective in
FileFormats.LP - quadratic constraints and an objective in
FileFormats.MPS
- indicator constraints in
Fixed
- Fixed some missing promotion rules
Other
- Improved the performance of Jacobian products in
Nonlinear - Removed an un-needed
copyinUtilities.modify_function - Various clean-ups in
Bridges/bridge_optimizer.jl
v1.6.1 (July 23, 2022)
Fixed
- Added support for
ExponentialConeinMatrixOfConstraints - Fix
PSDSquare_3test to reflect a previously fixed bug getting theConstraintDualof aPositiveSemidefiniteConeSquareconstraint
v1.6.0 (July 2, 2022)
Added
- Added
Bridges.needs_final_touchandBridges.final_touch - Added new bridges from constraint programming sets to mixed-integer linear programs:
AllDifferentToCountDistinctBridgeCountAtLeastToCountBelongsBridgeCountBelongsToMILPBridgeCountDistinctToMILPBridgeCountGreaterThanToMILPBridgeCircuitToMILPBridge
Fixed
- Relax an instance of
::Vectorto::AbstractVectorinMOI.Nonlinear - Fix
BinPackingToMILPBridgeto respect variable bounds - Fix
SemiToBinaryBridgeto throw error if other bounds are set
v1.5.0 (June 27, 2022)
Added
- Added
GetAttributeNotAllowedfor solvers to indicate when getting an attribute encounters an error - Added
Utilities.get_fallbacksupport forObjectiveValueandDualObjectiveValue - Added new bridges:
RootDetConeSquaretoRootDetConeTriangleLogDetConeSquaretoLogDetConeTriangleBinPackingto a mixed-integer linear programTableto a mixed-integer linear program
- Added
Bridges.print_active_bridgesto display the current optimal hyper-path in aBridges.LazyBridgeOptimizer
Fixed
- Fixed
ZeroOnetests with lower and upper bounds - Fixed error in
FileFormats.LPwhen reading a malformed file - Fixed reading of nonlinear programs in
FileFormats.MOF - Fixed bug in
ConstraintDualwhen usingSquareBridge
Other
- Improved documentation of nonlinear API
- Documented duality convention for
PositiveSemidefiniteConeSquaresets - Fixed typo in
Bridges.Constraint.QuadToSOCBridgedocstring
v1.4.0 (June 9, 2022)
Added
- Added a number of sets for constraint programming:
AllDifferentBinPackingCircuitCountAtLeastCountBelongsCountDistinctCountGreaterThanCumulativePathTable
- Added support for user-defined hessians in
Nonlinear - Added
Bridges.runteststo simplify the testing of bridge implementations
Fixed
- Fixed a bug in
FileFormats.NLwhen writing univariate*
Other
- Began a large refactoring of the
Bridgessubmodule, with greatly improved documentation.
v1.3.0 (May 27, 2022)
Added
- Add
MOI.Nonlinearsubmodule. This is a large new submodule that has been refactored from code that was in JuMP. For now, it should be considered experimental. - Add
FileFormats.NL.SolFileResults(::IO, ::Model) - Add
FileFormats.NL.read!(::IO, ::Model) - Add
MOI.modifythat accepts a vector of modifications
Fixed
- Fixed a bug in
Testwhich attempted to include non-.jlfiles - Fixed a bug in
FileFormatsfor models with open interval constraints
Other
- Fixed a performance issue in
Utilities.DoubleDict - Various minor improvements to the documentation
v1.2.0 (April 25, 2022)
Added
- Add support for the
FORMAT_REW/.rewfile format inFileFormats.
Fixed
- Fix bug handling of default variable bounds in
FileFormats.LP - Fix
FileFormats.MPSto not writeOBJSENSEby default since this is only supported by some readers.
v1.1.2 (March 31, 2022)
Fixed
- Fix a range of bugs in
FileFormats.LP - Fix reading of problem dimensions in
FileFormats.SDPA
v1.1.1 (March 23, 2022)
Fixed
- Fix bug in
test_model_UpperBoundAlreadySet - Fix bug in
test_infeasible_tests - Fix bug in
test_objective_ObjectiveFunction_blank - Relax restriction of
MOI.AbstractOptimizertoMOI.ModelLikeinUtilities.CachingOptimizerandinstantiate.
New tests
- Add
test_conic_empty_matrixthat checks conic solvers support problems with no variables.
v1.1.0 (March 2, 2022)
Added
- Added
MOI.Utilities.throw_unsupported(::UniversalFallback)for simplifying solver wrappers which copy from aUniversalFallback.
v1.0.2 (March 1, 2022)
Fixed
- Fixed a bug in the
test_model_ScalarFunctionConstantNotZerotest - Fixed the error type when an
AbstractFunctionConversionBridgecannot get or set an attribute - Identified a correctness bug in
RSOCtoPSDBridge. We now thrown an error instead of returning an incorrect result.
v1.0.1 (February 25, 2022)
Fixed
- Fixed a bug in which OptimizerAttributes were not copied in CachingOptimizer
- Fixed a bug in which
shift_constantdid not promote mixed types of coefficients - Fixed a bug in which deleting a constraint of a bridged variable threw
ErrorExceptioninstead ofMOI.DeleteNotAllowed - Fixed a bug in which
add_constraintinMatrixOfConstraintsdid not canonicalize the function - Fixed a bug when modifying scalar constants of a function containing a bridged variable
- Fixed a bug in which
final_touchwas not always called with aCachingOptimizer
v1.0.0 (February 17, 2022)
Although tagged as a breaking release, v1.0.0 is v0.10.9 with deprecations removed, similar to how Julia 1.0 was Julia 0.7 with deprecations removed.
Breaking
- Julia 1.6 is now the minimum supported version
- All deprecations have been removed
Troubleshooting problems when updating
If you experience problems when updating, you are likely using previously deprecated features. (By default, Julia does not warn when you use deprecated features.)
To find the deprecated features you are using, start Julia with --depwarn=yes:
$ julia --depwarn=yesThen install MathOptInterface v0.10.9:
julia> using Pkg
julia> pkg"add MathOptInterface@0.10"And then run your code. Apply any suggestions, or search the release notes below for advice on updating a specific deprecated feature.
v0.10.9 (February 16, 2022)
Added
- Added
MOI.Utilities.FreeVariablesas a newVariablesConstrainerfor conic solvers - Added
MOI.default_cachefor specifying the model used inCachingOptimizer
Fixed
- Fixed LaTeX printing of
MOI.Intervalsets
Other
- Added Aqua.jl as a CI check, and fixed suggested issues
- The constructors of GeoMeanBridge, StructOfConstraints, and CachingOptimizer were changed from outer to inner constructors. This change is technically breaking, but does not impact users who followed the documented API.
v0.10.8 (February 3, 2022)
Added
- Added a
Base.read!forFileFormats.LP.
Fixed
- Fixed a bug in
MutableSparseMatrix - Fixed a bug when calling
operate!(vcat, ...)withNumberarguments - Removed unintended export of deprecated symbols
- Fixed a bug with
PowerConeandDualPowerConeinMatrixOfConstraints.
v0.10.7 (January 5, 2022)
Added
- Added test for modifying the constant vector in a
VectorAffineFunction-in-Zerosconstraint.
Fixed
- Fixed the order in which sets are added to a
LazyBridgeOptimizer. Compared to v0.10.6, this may result in bridged models being created with a different number (and order) of variables and constraints. However, it was necessary to fix cases which were previously rejected as unsupported, even though there was a valid bridge transformation. - Fixed an error message in
FileFormats.CBF - Fixed comparison in
test_linear_integration_Interval - Fixed errors for
ConstraintPrimalin aCachingOptimizer - Fixed printing of models with non-
Float64coefficients.
Other
- Various improvements to reduce time-to-first-solve latency
- Improved error message when an optimizer does not support
compute_conflict!
v0.10.6 (November 30, 2021)
Added
- Added new documentation and tests for infeasibility certificates
- Added a version control system for the tests in
MOI.Test.runtests. Passexclude_tests_after = v"0.10.5"to run tests added in v0.10.5 and earlier. MOI.Test.runtestsnow supports generic number types. To specify the number typeT, passMOI.Test.Config(T).- Added
infeasible_statustoMOI.Test.Configfor solvers which returnLOCALLY_INFEASIBLE - CachingOptimizers now use a fallback for
ConstraintPrimal. This should enable solvers using a CachingOptimizer to pass tests requiringConstraintPrimal.
Fixed
- Fixed a StackOverflow bug in
copy_to - Fixed error thrown when nonconvex quadratic constraints cannot be bridged
- Fixed a bug in
copy_toforFileFormats.NL.Model - Fixed a bug in
FileFormats.NLwhen printing large integers - Remove a common test failure for
LowerBoundAlreadySettests Utilities.num_rowsis now exported- Remove parts of failing
test_model_copy_to_xxxtests due to bridges
v0.10.5 (November 7, 2021)
Fixed
- Fixed getter in
UniversalFallback - Fixed
test_solve_conflict_zeroone_ii
Other
- Make
normalize_and_add_constraintmore flexible - Update paper BibTeX
v0.10.4 (October 26, 2021)
Added
- Add
SolverVersionattribute - Add new tests:
test_solve_conflict_zeroone_iitest_nonlinear_objective
Utilities.VariablesContainernow supportsConstraintFunctionandConstraintSet- The documentation is now available as a PDF
Other
- Update to MutableArithmetics 0.3
- Various improvements to the documentation
v0.10.3 (September 18, 2021)
Fixed
- Fixed bug which prevented callbacks from working through a CachingOptimizer
- Fixed bug in
Testsubmodule
v0.10.2 (September 16, 2021)
- Updated MathOptFormat to v1.0
- Updated JSONSchema to v1.0
- Added
Utilities.set_with_dimension - Added two-argument
optimize!(::AbstractOptimizer, ::ModelLike) - The experimental feature
copy_to_and_optimize!has been removed Detbridges now support gettingConstraintFunctionandConstraintSet- Various minor bug fixes identified by improved testing
v0.10.1 (September 8, 2021)
- Various fixes to
MOI.Test
v0.10.0 (September 6, 2021)
MOI v0.10 is a significant breaking release. There are a large number of user-visible breaking changes and code refactors, as well as a substantial number of new features.
Breaking in MOI
SingleVariablehas been removed; useVariableIndexinsteadSingleVariableConstraintNameErrorhas been renamed toVariableIndexConstraintNameErrorSettingSingleVariableFunctionNotAllowedhas been renamed toSettingVariableIndexFunctionNotAllowedVariableIndexconstraints should not supportConstraintNameVariableIndexconstraints should not supportConstraintBasisStatus; implementVariableBasisStatusinsteadListOfConstraintshas been renamed toListOfConstraintTypesPresentListOfConstraintTypesPresentshould now returnTuple{Type,Type}instead ofTuple{DataType,DataType}SolveTimehas been renamed toSolveTimeSecIndicatorSethas been renamed toIndicatorRawParameterhas been renamed toRawOptimizerAttributeand now takesStringinstead ofAnyas the only argument- The
.Nfield in result attributes has been renamed to.result_index - The
.variable_indexfield inScalarAffineTermhas been renamed to.variable - The
.variable_index_1field inScalarQuadraticTermhas been renamed to.variable_1 - The
.variable_index_2field inScalarQuadraticTermhas been renamed to.variable_2 - The order of
affine_termsandquadratic_termsinScalarQuadraticFunctionandVectorQuadraticFunctionhave been reversed. Both functions now accept quadratic, affine, and constant terms in that order. - The
index_valuefunction has been removed. Use.valueinstead. isapproxhas been removed forSOS1andSOS2.- The
dimensionargument toComplements(dimension::Int)should now be the length of the corresponding function, instead of half the length. AnArgumentErroris thrown ifdimensionis not even. copy_tono longer takes keyword arguments:copy_names: now copy names if they are supported by the destination solverfilter_constraints: useUtilities.ModelFilterinsteadwarn_attributes: never warn about optimizer attributes
Breaking in Bridges
Constraint.RSOCBridgehas been renamed toConstraint.RSOCtoSOCBridgeConstraint.SOCRBridgehas been renamed toConstraint.SOCtoRSOCBridge- Bridges now return vectors that can be modified by the user. Previously, some bridges returned views instead of copies.
Bridges.IndexInVectorhas been unified into a single type. Previously, there was a different type for each submodule withinBridges- The signature of indicator bridges has been fixed. Use
MOI.Bridges.Constraint.IndicatortoSOS1{Float64}(model).
Breaking in FileFormats
FileFormats.MOF.Modelno longer acceptsvalidateargument. Use the JSONSchema package to validate the MOF file. See the documentation for more information.
Breaking in Utilities
- The datastructure of
Utilities.Model(and models created withUtilities.@model) has been significantly refactored in a breaking way. This includes the way that objective functions and variable-related information is stored. Utilities.supports_default_copyhas been renamed tosupports_incremental_interfaceUtilities.automatic_copy_tohas been renamed toUtilities.default_copy_to- The allocate-load API has been removed
CachingOptimizers are now initialized asEMPTY_OPTIMIZERinstead ofATTACHED_OPTIMIZER. If your code relies on the optimizer being attached, callMOIU.attach_optimizer(model)after creation.- The field names of
Utilities.IndexMaphave been renamed tovar_mapandcon_map. Accessing these fields directly is considered a private detail that may change. Use the publicgetindexandsetindex!API instead. - The size argument to
Utilities.CleverDicts.CleverDict(::Integer)has been removed. - The size argument to
Utilities.IndexMap(::Integer)has been removed. Utilities.DoubleDictshave been significantly refactored. Consult the source code for details.Utilities.test_models_equalhas been moved toMOI.Test
Breaking in Test
MOI.Testhas been renamed toMOI.DeprecatedTest- An entirely new
MOI.Testsubmodule has been written. See the documentation for details. The newMOI.Testsubmodule may find many bugs in the implementations of existing solvers that were previously untested.
Other changes:
attribute_value_typehas been addedcopy_to_and_optimize!has been addedVariableBasisStatushas been addedprint(model)now prints a human-readable description of the model- Various improvements to the
FileFormatssubmoduleFileFormats.CBFwas refactored and received bugfixes- Support for MathOptFormat v0.6 was added in
FileFormats.MOF FileFormats.MPShas had bugfixes and support for more features such asOBJSENSEand objective constants.FileFormats.NLhas been added to support nonlinear files
- Improved type inference throughout to reduce latency
Updating
A helpful script when updating is:
for (root, dirs, files) in walkdir(".")
for file in files
if !endswith(file, ".jl")
continue
end
path = joinpath(root, file)
s = read(path, String)
for pair in [
".variable_index" => ".variable",
"RawParameter" => "RawOptimizerAttribute",
"ListOfConstraints" => "ListOfConstraintTypesPresent",
"TestConfig" => "Config",
"attr.N" => "attr.result_index",
"SolveTime" => "SolveTimeSec",
"DataType" => "Type",
"Utilities.supports_default_copy_to" =>
"supports_incremental_interface",
"SingleVariableConstraintNameError" =>
"VariableIndexConstraintNameError",
"SettingSingleVariableFunctionNotAllowed" =>
"SettingVariableIndexFunctionNotAllowed",
"automatic_copy_to" => "default_copy_to",
]
s = replace(s, pair)
end
write(path, s)
end
endv0.9.22 (May 22, 2021)
This release contains backports from the ongoing development of the v0.10 release.
- Improved type inference in
Utilities,BridgesandFileFormatssubmodules to reduce latency. - Improved performance of
Utilities.is_canonical. - Fixed
Utilities.pass_nonvariable_constraintswith bridged variables. - Fixed performance regression of
Utilities.Model. - Fixed ordering of objective setting in parser.
v0.9.21 (April 23, 2021)
- Added
supports_shift_constant. - Improve performance of bridging quadratic constraints.
- Add precompilation statements.
- Large improvements to the documentation.
- Fix a variety of inference issues, benefiting precompilation and reducing initial latency.
RawParameters are now ignored when resetting aCachingOptimizer. Previously, changing the underlying optimizer afterRawParameters were set would throw an error.Utilities.AbstractModelis being refactored. This may break users interacting with private fields of a model generated using@model.
v0.9.20 (February 20, 2021)
- Improved performance of
Utilities.ScalarFunctionIterator - Added support for
compute_conflictto MOI layers - Added test with zero off-diagonal quadratic term in objective
- Fixed double deletion of nested bridged
SingleVariable/VectorOfVariablesconstraints - Fixed modification of un-set objective
- Fixed function modification with duplicate terms
- Made unit tests abort without failing if the problem class is not supported
- Formatted code with JuliaFormatter
- Clarified
BasisStatusCode's docstring
v0.9.19 (December 1, 2020)
- 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
v0.9.18 (November 3, 2020)
- Various improvements for working with complex numbers
- Added
GeoMeantoRelEntrBridgeto bridge aGeometricMeanConeconstraint to a relative entropy constraint
v0.9.17 (September 21, 2020)
- Fixed
CleverDictwith variable of negative index value - Implement
supports_add_constrained_variableforMockOptimizer
v0.9.16 (September 17, 2020)
- Various fixes:
- 32-bit support
CleverDictwith abstract value type- Checks in test suite
v0.9.15 (September 14, 2020)
- 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
v0.9.14 (May 30, 2020)
- 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:
- FileFormats improvements:
v0.9.13 (March 24, 2020)
- Added tests for
SemicontinuousandSemiintegervariables (#1033). - Added tests for using
ExprGraphs from NLP evaluators (#1043). - Update version compatibilities of dependencies (#1034, #1051, #1052).
- Fixed typos in documentation (#1044).
v0.9.12 (February 28, 2020)
- Fixed writing
NLPBlockin MathOptFormat (#1037). - Fixed
MockOptimizerfor result attributes with non-one result index (#1039). - Updated test template with
instantiate(#1032).
v0.9.11 (February 21, 2020)
- 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).
v0.9.10 (January 31, 2020)
- 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).
v0.9.9 (December 29, 2019)
- 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).
v0.9.8 (December 19, 2019)
- 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
GeoMeanBridge(#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
v0.9.7 (October 30, 2019)
- 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
v0.9.6 (October 25, 2019)
- Added complementarity constraints (#913).
- Allowed
ModelLikeobjects as value of attributes (#928). - Testing improvements:
- Bridges improvements:
v0.9.5 (October 9, 2019)
- 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:
v0.9.4 (October 2, 2019)
- 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:
v0.9.3 (September 20, 2019)
- 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:
- Improvements for arbitrary coefficient type:
v0.9.2 (September 5, 2019)
- Implemented model printing for
MOI.ModelLikeand specialized it for models defined in MOI (864). - Generalized
contlineartests for arbitrary coefficient type (#855). - Fixed
supports_constraintforSemiintegerandSemicontinuousandsupportsforObjectiveFunction(#859). - Fixed Allocate-Load copy for single variable constraints (#856).
- Bridges improvements:
v0.9.1 (August 22, 2019)
- Fix support for Julia v1.2 (#834).
- L1 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).
v0.9.0 (August 13, 2019)
- 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 instance 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:
- 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 bridged, 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 bridged, the bridges now have to implement
v0.8.4 (March 13, 2019)
- Performance improvement in
default_copy_toand bridge optimizer (#696). - Add
Silentand implement setting optimizer attributes in caching and mock optimizers (#695). - Add
Functionizebridges (SingleVariable and VectorOfVariables) (#659). - Minor typo fixes (#694).
v0.8.3 (March 6, 2019)
- 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:
- Fix inference of
NumberOfVariablesandNumberOfConstraints(#677). - Implement division between a quadratic function and a number (#675).
v0.8.2 (February 7, 2019)
- 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:
- Improve support for starting values:
- 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).
v0.8.1 (January 7, 2019)
- 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).
v0.8.0 (December 18, 2018)
- Rename all enum values to follow the JuMP naming guidelines for constants, for example,
OptimalbecomesOPTIMAL, andDualInfeasiblebecomesDUAL_INFEASIBLE. - Rename CachingOptimizer methods for style compliance.
- Add an
MOI.TerminationStatusCodecalledALMOST_DUAL_INFEASIBLE.
v0.7.0 (December 13, 2018)
- 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).
v0.6.4 (November 27, 2018)
- 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).
v0.6.3 (November 16, 2018)
- 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.
v0.6.2 (October 26, 2018)
- 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).
v0.6.1 (September 22, 2018)
- 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).
v0.6.0 (August 30, 2018)
- 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 (for example, 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 performed in the current state of the model, or 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).
v0.5.0 (August 5, 2018)
- 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.
v0.4.1 (June 28, 2018)
- Fixes vector function modification on 32 bits.
- Fixes Bellman-Ford algorithm for bridges.
- Added an NLP test with
FeasibilitySense. - Update modification documentation.
v0.4.0 (June 23, 2018)
- 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.
v0.3.0 (May 25, 2018)
- 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.
v0.2.0 (April 24, 2018)
- 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.
v0.1.0 (February 28, 2018)
- 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.