Releases: cvanaret/Uno
v2.3.0
Uno v2.3.0 implements the following:
Features
Improvements
- Moved computation of progress measures and their local models to
OptimizationProblemandSubproblem(#375) - Reformulate the problem once and for all instead of on the fly (#370)
- Determine the
problem_typein the MOI extension (#378) - Make
problem_typeastring/const char*instead of achar(#379) - Have setters (options, preset, callbacks, stream) return a boolean (#380)
Bugfixes
- Properly count the number of function evaluations in
Model(#362) - Use
problem_typeto determine whether there is curvature in the subproblem (#377)
Minor changes
- Removed redundant callbacks
notify_new_[primals|multipliers](#361) - Renamed
RegularizationStrategyintoInertiaCorrectionStrategy(#369) - Rename
Uno.jlintoUnoSolver.jl(#373) - Improved MOI interface (#376, #382)
Acknowledgments
Big thanks to Alexis Montoison (@amontoison)
v2.2.2
Uno v2.2.2 implements the following:
Improvements
- Typed functions to set solver options:
double,int,bool,string(#341) - Optimized calls in the MOI extension (#346)
- Support the silent mode in the MOI extension (#353)
- Improved the C and C++ interfaces (#342, #347)
- added optimality measures to
UserCallbacks::notify_acceptable_iterate - added function
uno_set_solver_callbacksto C interface - added function
uno_load_solver_option_fileto C interface - added solver option getters
uno_get_<type>_solver_option
- added optimality measures to
Bugfixes
- Added missing include in C interface (#348)
- Set default preset upon creation of
Optionsobject in C interface (#354)
Minor changes
- Added a license to Julia package (#345)
Acknowledgments
Big thanks to Alexis Montoison (@amontoison) and Stefano Lovato (@stefphd).
v2.2.1
Uno v2.2.1 implements the following:
Improvements
- Use the same content of
MOI_utils.jlinUno.jlandMadNLP.jl(#325) - Improve the extension for
MathOptInterface.jl(#326, #327, #333) - Enrich the C interface (#335, #336, #337, #339)
- Improve the Julia interface (#338)
Bugfixes
- Fix the unit tests (#329, #330, #334)
- Copy internally the vectors passed by the user in the C interface (#331)
Minor changes
- Renamed
/bindingsinto/interfaces(#323)
Acknowledgments
Big thanks to Alexis Montoison (@amontoison).
v2.2.0
Uno v2.2.0 implements the following:
Features
Uno now features Python bindings (#195).
pybind11 is required for compiling the Python module unopy.
Bugfixes
BQPD complains when no Hessian is available AND the subproblem has curvature (#313).
Acknowledgments
Big thanks go to Jaroslav Fowkes (@jfowkes) for his advice on the Python bindings.
v2.1.0
Uno v2.1.0 implements the following features:
Features
Uno now features C and Julia interfaces (#269).
The CUTEst instance hs015 is provided as an example for the C interface.
The package Uno.jl has three components:
- a thin wrapper around the complete C API;
- an interface to NLPModels.jl for solving any optimization problem following the API, such as CUTEst problems;
- an interface to MathOptInterface.jl for handling JuMP models (currently under development).
Improvements
- A solver for box LP was added; this avoids the use of an actual LP solver when the problem is unconstrained (#301).
Bugfixes
- If only the Hessian operator is available (but no Hessian matrix can be built), an error is thrown in HiGHS and in the direct linear solvers (#304).
Acknowledgments
Big thanks go to Alexis Montoison (@amontoison) for his work on the C and Julia interfaces.
v2.0.3
Uno v2.0.3 implements the following changes:
Bugfixes
- properly count the NNZ of regularized Hessian/augmented system (#289).
- make sure the symbolic analysis is always performed in the linear solver, regardless of the regularization strategy and the Hessian model (#290).
Minor improvements
- the Uno object is now created without options. The ingredients are set at the
Uno::solvecall (#285). - only the default options that are overwritten are printed at the beginning (#286, #287).
Continuous Integration
v2.0.2
Uno v2.0.2 implements the following changes:
Bug fixes
- Implement retry-loop for enlarging MA57 workspace (#256)
- Report the direction as INFEASIBLE if the augmented matrix is singular (#250)
- Correct Hessian NNZ in restoration phase (#260)
- Fix primal regularization in the linear solvers (#267)
- Upon switching to the restoration phase, pick the proximal coefficient of the optimality inequality handling method (#274)
- A regularized Hessian should be handled as explicit in BQPD (#282)
Minor improvements
- Made the
-AMPLflag optional (#248, #254) - Avoid overwriting debug flags for GCC (#259)
- Split primal and dual tolerances (#258)
Continuous integration
v2.0.1
Uno v2.0.1 implements the following changes:
Bugfixes:
- Fixed the allocation of the integer and floating-point workspaces in BQPD (#222)
- Fixed the reallocation of the MA27 workspace (#235)
- Compute the residuals at the trial iterate wrt the problem being currently solved, which depends on the current phase in
FeasibilityRestoration(#243) - Fixed computation of Lagrangian gradient in
l1RelaxedProblem(#246)
Continuous integration:
- Julia tests for the
filtersqppreset with BQPD (#224) - The
ipoptpreset is now tested with the HSL solvers MA27 and MA57 (#234)
Improvements:
- No Hessian evaluation in BQPD when the subproblem is infeasible (#215)
- Each Hessian model now declares whether they can be used in Hessian-vector products or as explicit matrices (#216)
- Use
lagscale_ASLonce and for all in AMPLModel to comply with Uno's sign convention of the Lagrangian, instead of flipping the signs of the duals at each Hessian evaluation (#237)
Note that the byrd preset was removed, as it was not maintained and made refactoring difficult (#245).
Thanks to Alexis Montoison for his help.
v2.0.0
Uno v2.0.0 implements the following changes:
Features
Abstract framework
- The underlying abstract framework was refined and is now more powerful. Uno now implements 8 ingredients: constraint relaxation strategy, inequality handling method, Lagrange-Newton subproblem, Hessian model, subproblem solver, regularization strategy, globalization strategy and globalization mechanism (#122, #183)
- Replaced LP/QP subproblem with generic inequality-constrained method. The subproblem solver (LP or QP) is automatically allocated, depending whether the subproblem has some curvature (#177)
- New constraint relaxation strategy
UnconstrainedStrategyautomatically set for unconstrained problems (#161) - The
HessianModelis now a model of the original Hessian (#152) - The combination name is generated automatically. Example: TR Fletcher-filter restoration inequality-constrained method with exact Hessian and no regularization (#179)
User friendliness
- User callbacks can be provided to the
Uno::solve()call (#106, #108) - The solution status was split into iterate status and optimization status (#110)
Interfaces
Continuous integration
- Build Uno with MSVC on Windows (#144, #146)
- Cross-compile Uno with the indefinite QP solver BQPD. BQPD is now available as pre-compiled binaries (#168, #173)
- Cross-compile Uno with HiGHS v1.11 (#170)
- Cross-compile Uno with MUMPS 5.8.0 (#190)
Improvements
- Improved the scaling in the MUMPS interface (#104, #120)
Uno::solve()now returns aResultobject, even when the optimization fails (#105, #111)- Compute symbolic analyses only when the Hessian sparsity changes (#104, #129)
- Improve the memory allocations (#155, #172)
- The Hessian is not saved in the BQPD workspace any more (#135, #191)
- The Uno class is now instantiated with an Options object and the number of constraints. The actual memory allocation and possible choices of strategies are performed when
Uno::solve()is called (#36) - Improved the switch to the feasibility phase in
FeasibilityRestoration(#180) - Automatically deduce the indices of variables and constraints that should be regularized, respectively for primal and dual regularization (#187)
- Split the barrier method into the method itself and the nonlinear barrier reformulation (#126, #188)
- Improve the design of symmetric matrices:
SparseSymmetricMatrix<SparseStorage>now inheritsSymmetricMatrix. This is in preparation of the Python bindings (#194)
Bugfixes
- Fixed the computation of the complementarity residual in
l1RelaxedProblem(#149) - Fixed warmstart information in
TrustRegionStrategy(#174) - Fixed memory allocation in
Preprocessing::compute_least_square_multipliers()(#176) - Fixed the multipliers (that may be larger than expected) in AMPLModel (#184)
- Fixed cross-compilation on Apple Darwin (#203, #204, #205, #206, #208)
Acknowledgments
Big thanks go to Alexis Montoison (@amontoison) for his help during the last steps of the release.
v1.3.0
Uno v1.3.0 implements the following changes:
Features
- interface to the HiGHS LP solver. Available via option
LP_solver=HiGHS(#72); filterslppreset: a trust-region restoration filter Sequential Linear Programming (SLP) method. Available via optionpreset=filterslp(#88).
Bug fixes
- better handling of warmstart information (#83);
- feasibility multipliers that correspond to active trust-region constraints are also reset in the trial iterate (#83).