Recent Releases of uno

uno - v2.0.3

Uno v2.0.3 implements the following changes:

Bugfixes

  • properly count the NNZ of regularized Hessian/augmented system (https://github.com/cvanaret/Uno/pull/289).
  • make sure the symbolic analysis is always performed in the linear solver, regardless of the regularization strategy and the Hessian model (https://github.com/cvanaret/Uno/pull/290).

Minor improvements

  • the Uno object is now created without options. The ingredients are set at the Uno::solve call (https://github.com/cvanaret/Uno/pull/285).
  • only the default options that are overwritten are printed at the beginning (https://github.com/cvanaret/Uno/pull/286, https://github.com/cvanaret/Uno/pull/287).

Continuous Integration

  • run the ipopt preset on the MINLPTests instance nlpexpr005_010 (https://github.com/cvanaret/Uno/pull/288).
  • run the ipopt preset with MUMPS and the identity Hessian (https://github.com/cvanaret/Uno/pull/291).

- C++
Published by github-actions[bot] 9 months ago

uno - v2.0.2

Uno v2.0.2 implements the following changes:

Bug fixes

  • Implement retry-loop for enlarging MA57 workspace (https://github.com/cvanaret/Uno/pull/256)
  • Report the direction as INFEASIBLE if the augmented matrix is singular (https://github.com/cvanaret/Uno/pull/250)
  • Correct Hessian NNZ in restoration phase (https://github.com/cvanaret/Uno/pull/260)
  • Fix primal regularization in the linear solvers (https://github.com/cvanaret/Uno/pull/267)
  • Upon switching to the restoration phase, pick the proximal coefficient of the optimality inequality handling method (https://github.com/cvanaret/Uno/pull/274)
  • A regularized Hessian should be handled as explicit in BQPD (https://github.com/cvanaret/Uno/pull/282)

Minor improvements

  • Made the -AMPL flag optional (https://github.com/cvanaret/Uno/pull/248, https://github.com/cvanaret/Uno/pull/254)
  • Avoid overwriting debug flags for GCC (https://github.com/cvanaret/Uno/pull/259)
  • Split primal and dual tolerances (https://github.com/cvanaret/Uno/pull/258)

Continuous integration

  • Unit tests on Windows (https://github.com/cvanaret/Uno/pull/251)
  • Unit tests on MacOS (https://github.com/cvanaret/Uno/pull/266)
  • Test the filterslp preset with BQPD as the LP solver (https://github.com/cvanaret/Uno/pull/257)
  • Test the filtersqp preset + identity Hessian model (https://github.com/cvanaret/Uno/pull/263)

- C++
Published by github-actions[bot] 9 months ago

uno - v2.0.1

Uno v2.0.1 implements the following changes:

Bugfixes:

  • Fixed the allocation of the integer and floating-point workspaces in BQPD (https://github.com/cvanaret/Uno/pull/222)
  • Fixed the reallocation of the MA27 workspace (https://github.com/cvanaret/Uno/pull/235)
  • Compute the residuals at the trial iterate wrt the problem being currently solved, which depends on the current phase in FeasibilityRestoration (https://github.com/cvanaret/Uno/pull/243)
  • Fixed computation of Lagrangian gradient in l1RelaxedProblem (https://github.com/cvanaret/Uno/pull/246)

Continuous integration:

  • Julia tests for the filtersqp preset with BQPD (https://github.com/cvanaret/Uno/pull/224)
  • The ipopt preset is now tested with the HSL solvers MA27 and MA57 (https://github.com/cvanaret/Uno/pull/234)

Improvements:

  • No Hessian evaluation in BQPD when the subproblem is infeasible (https://github.com/cvanaret/Uno/pull/215)
  • Each Hessian model now declares whether they can be used in Hessian-vector products or as explicit matrices (https://github.com/cvanaret/Uno/pull/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 (https://github.com/cvanaret/Uno/pull/237)

Note that the byrd preset was removed, as it was not maintained and made refactoring difficult (https://github.com/cvanaret/Uno/pull/245).

Thanks to Alexis Montoison for his help.

- C++
Published by github-actions[bot] 10 months ago

uno - 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 (https://github.com/cvanaret/Uno/pull/122, https://github.com/cvanaret/Uno/pull/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 (https://github.com/cvanaret/Uno/pull/177)
  • New constraint relaxation strategy UnconstrainedStrategy automatically set for unconstrained problems (https://github.com/cvanaret/Uno/pull/161)
  • The HessianModel is now a model of the original Hessian (https://github.com/cvanaret/Uno/pull/152)
  • The combination name is generated automatically. Example: TR Fletcher-filter restoration inequality-constrained method with exact Hessian and no regularization (https://github.com/cvanaret/Uno/pull/179)

User friendliness

  • User callbacks can be provided to the Uno::solve() call (https://github.com/cvanaret/Uno/issues/106, https://github.com/cvanaret/Uno/pull/108)
  • The solution status was split into iterate status and optimization status (https://github.com/cvanaret/Uno/pull/110)

Interfaces

  • Added an interface to the symmetric indefinite linear solver MA27 (https://github.com/cvanaret/Uno/pull/115, https://github.com/cvanaret/Uno/pull/116, https://github.com/cvanaret/Uno/pull/119)

Continuous integration:

  • Build Uno with MSVC on Windows (https://github.com/cvanaret/Uno/issues/144, https://github.com/cvanaret/Uno/pull/146)
  • Cross-compile Uno with the indefinite QP solver BQPD. BQPD is now available as pre-compiled binaries (https://github.com/cvanaret/Uno/pull/168, https://github.com/cvanaret/Uno/pull/173)
  • Cross-compile Uno with HiGHS v1.11 (https://github.com/cvanaret/Uno/pull/170)
  • Cross-compile Uno with MUMPS 5.8.0 (https://github.com/cvanaret/Uno/pull/190)

Improvements:

  • Improved the scaling in the MUMPS interface (https://github.com/cvanaret/Uno/pull/104, https://github.com/cvanaret/Uno/pull/120)
  • Uno::solve() now returns a Result object, even when the optimization fails (https://github.com/cvanaret/Uno/issues/105, https://github.com/cvanaret/Uno/pull/111)
  • Compute symbolic analyses only when the Hessian sparsity changes (https://github.com/cvanaret/Uno/pull/104, https://github.com/cvanaret/Uno/pull/129)
  • Improve the memory allocations (https://github.com/cvanaret/Uno/pull/155, https://github.com/cvanaret/Uno/pull/172)
  • The Hessian is not saved in the BQPD workspace any more (https://github.com/cvanaret/Uno/pull/135, https://github.com/cvanaret/Uno/pull/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 (https://github.com/cvanaret/Uno/issues/36)
  • Improved the switch to the feasibility phase in FeasibilityRestoration (https://github.com/cvanaret/Uno/pull/180)
  • Automatically deduce the indices of variables and constraints that should be regularized, respectively for primal and dual regularization (https://github.com/cvanaret/Uno/pull/187)
  • Split the barrier method into the method itself and the nonlinear barrier reformulation (https://github.com/cvanaret/Uno/pull/126, https://github.com/cvanaret/Uno/pull/188)
  • Improve the design of symmetric matrices: SparseSymmetricMatrix<SparseStorage> now inherits SymmetricMatrix. This is in preparation of the Python bindings (https://github.com/cvanaret/Uno/pull/194)

Bugfixes:

  • Fixed the computation of the complementarity residual in l1RelaxedProblem (https://github.com/cvanaret/Uno/pull/149)
  • Fixed warmstart information in TrustRegionStrategy (https://github.com/cvanaret/Uno/pull/174)
  • Fixed memory allocation in Preprocessing::compute_least_square_multipliers() (https://github.com/cvanaret/Uno/pull/176)
  • Fixed the multipliers (that may be larger than expected) in AMPLModel (https://github.com/cvanaret/Uno/pull/184)
  • Fixed cross-compilation on Apple Darwin (https://github.com/cvanaret/Uno/pull/203, https://github.com/cvanaret/Uno/pull/204, https://github.com/cvanaret/Uno/pull/205, https://github.com/cvanaret/Uno/pull/206, https://github.com/cvanaret/Uno/pull/208)

Acknowledgments

Big thanks go to Alexis Montoison (@amontoison) for his help during the last steps of the release.

- C++
Published by github-actions[bot] 11 months ago

uno - v1.3.0

Uno v1.3.0 implements the following changes:

Features

  • interface to the HiGHS LP solver. Available via option LP_solver=HiGHS (https://github.com/cvanaret/Uno/issues/72);
  • filterslp preset: a trust-region restoration filter Sequential Linear Programming (SLP) method. Available via option preset=filterslp (https://github.com/cvanaret/Uno/pull/88).

Bug fixes

  • better handling of warmstart information (https://github.com/cvanaret/Uno/pull/83);
  • feasibility multipliers that correspond to active trust-region constraints are also reset in the trial iterate (https://github.com/cvanaret/Uno/pull/83).

Improvements:

  • clear precedence rules for setting options: option file > preset > individual option (https://github.com/cvanaret/Uno/pull/85);
  • additional unit tests (https://github.com/cvanaret/Uno/pull/90).

- C++
Published by github-actions[bot] over 1 year ago

uno - v1.2.0

Uno v1.2.0 implements the following changes.

Features:

  • support for fixed variables in the model (with identical lower and upper bounds). Uno provides dual variables for theses fixed variables, which should assist the user in performing sensitivity analysis (https://github.com/cvanaret/Uno/issues/45).
  • default options are now hard-coded, therefore Uno can run without an option file (https://github.com/cvanaret/Uno/issues/28).

For AMPL users: - the primal-dual solution (including bound duals) is now written to the .sol file with the same Lagrangian convention as IPOPT (https://github.com/cvanaret/Uno/issues/29, https://github.com/cvanaret/Uno/issues/40, https://github.com/cvanaret/Uno/issues/47).

For Julia users: - Uno can now be installed automatically in Julia via Uno_jll.jl and used via AmplLNLWriter.jl. - Unojll.jl is linked again a dummy HSL library (MA27, MA57). When you get an HSL license and install the proper HSL library, it is automatically linked to Unojll.jl (https://github.com/cvanaret/Uno/issues/44).

Bug fixes:

  • MUMPS settings fixed to detect null pivots (and therefore singular matrices) (https://github.com/cvanaret/Uno/issues/68).
  • default subproblem solvers and preset are set according to the available external libraries (https://github.com/cvanaret/Uno/issues/32, https://github.com/cvanaret/Uno/issues/43).

Uno now supports continuous integrations for unit tests, binary builds and numerical runs.

- C++
Published by github-actions[bot] over 1 year ago

uno - Uno v1.1.0

Uno v1.1.0 implements the following features: - an interface to the open-source linear solver MUMPS. Once installed, it can be selected via the command line option: console linear_solver=MUMPS - a new funnel method as a globalization strategy (= a strategy that accepts or rejects trial iterates). It was developed by David Kiessling (@david0oo) and described in our latest preprint. On the considered test instances, it performed at least better than the filter method, while being easier to implement. It can be selected via the command line option: console globalization_strategy=funnel_method

- C++
Published by cvanaret over 1 year ago

uno - Uno v1.0.0

Uno v1.0.0 allows combinations of the following strategies: - constraint relaxation strategies: l1 relaxation and l1 feasibility restoration. - subproblems: QP, LP and primal-dual barrier. - globalization strategies: l1 merit function and filter method (with standard filter or nonmonotone filter). - globalization mechanisms: line search and trust-region method.

Some combinations are at the moment not fully supported, namely barrier + trust-region (disabled) and l1 merit function + feasibility restoration (Uno issues a warning). This will be improved in later versions of Uno.

The only existing interface is to AMPL (.nl files).

- C++
Published by cvanaret almost 2 years ago