Skip to content

Releases: cvanaret/Uno

v2.3.0

24 Oct 06:11
4764c01

Choose a tag to compare

Uno v2.3.0 implements the following:

Features

  • Added a Fortran interface for Uno (#364, #372)
  • Introduced acceptable primal tolerance (#363)

Improvements

  • Moved computation of progress measures and their local models to OptimizationProblem and Subproblem (#375)
  • Reformulate the problem once and for all instead of on the fly (#370)
  • Determine the problem_type in the MOI extension (#378)
  • Make problem_type a string/const char* instead of a char (#379)
  • Have setters (options, preset, callbacks, stream) return a boolean (#380)

Bugfixes

  • Properly count the number of function evaluations in Model (#362)
  • Use problem_type to determine whether there is curvature in the subproblem (#377)

Minor changes

  • Removed redundant callbacks notify_new_[primals|multipliers] (#361)
  • Renamed RegularizationStrategy into InertiaCorrectionStrategy (#369)
  • Rename Uno.jl into UnoSolver.jl (#373)
  • Improved MOI interface (#376, #382)

Acknowledgments

Big thanks to Alexis Montoison (@amontoison)

v2.2.2

15 Oct 07:54
5a6bbfd

Choose a tag to compare

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_callbacks to C interface
    • added function uno_load_solver_option_file to C interface
    • added solver option getters uno_get_<type>_solver_option

Bugfixes

  • Added missing include in C interface (#348)
  • Set default preset upon creation of Options object 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

08 Oct 09:56
af68e63

Choose a tag to compare

Uno v2.2.1 implements the following:

Improvements

  • Use the same content of MOI_utils.jl in Uno.jl and MadNLP.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 /bindings into /interfaces (#323)

Acknowledgments

Big thanks to Alexis Montoison (@amontoison).

v2.2.0

29 Sep 10:03
94768b8

Choose a tag to compare

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

26 Sep 13:26
76fce34

Choose a tag to compare

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

27 Aug 10:16
b365cac

Choose a tag to compare

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::solve call (#285).
  • only the default options that are overwritten are printed at the beginning (#286, #287).

Continuous Integration

  • run the ipopt preset on the MINLPTests instance nlp_expr_005_010 (#288).
  • run the ipopt preset with MUMPS and the identity Hessian (#291).

v2.0.2

21 Aug 12:36
7094e2d

Choose a tag to compare

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 -AMPL flag optional (#248, #254)
  • Avoid overwriting debug flags for GCC (#259)
  • Split primal and dual tolerances (#258)

Continuous integration

  • Unit tests on Windows (#251)
  • Unit tests on MacOS (#266)
  • Test the filterslp preset with BQPD as the LP solver (#257)
  • Test the filtersqp preset + identity Hessian model (#263)

v2.0.1

02 Aug 08:28
9148111

Choose a tag to compare

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 filtersqp preset with BQPD (#224)
  • The ipopt preset 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_ASL once 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

06 Jul 15:03
216bc6d

Choose a tag to compare

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)

Uno hypergraph

  • 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 UnconstrainedStrategy automatically set for unconstrained problems (#161)
  • The HessianModel is 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

  • Added an interface to the symmetric indefinite linear solver MA27 (#115, #116, #119)

Continuous integration

Improvements

  • Improved the scaling in the MUMPS interface (#104, #120)
  • Uno::solve() now returns a Result object, 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 inherits SymmetricMatrix. 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

17 Nov 15:32

Choose a tag to compare

Uno v1.3.0 implements the following changes:

Features

  • interface to the HiGHS LP solver. Available via option LP_solver=HiGHS (#72);
  • filterslp preset: a trust-region restoration filter Sequential Linear Programming (SLP) method. Available via option preset=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).

Improvements:

  • clear precedence rules for setting options: option file > preset > individual option (#85);
  • additional unit tests (#90).