Uno v2.0.0 is out!
Already available in your favorite language: Uno_jll.
The major changes are:
- a more powerful unification framework with ingredients such as Hessian model (exact, identity, zero), regularization strategy (primal, primal-dual, none) and inequality handling method (inequality constrained, interior-point).
- the null space active-set QP solver BQPD is now available as precompiled binaries and a binary package BQPD_jll
This means we can now use the
filtersqp
preset (trust-region filter SQP method) withinUno_jll
:
julia> using JuMP, AmplNLWriter, Uno_jll
julia> options = String["preset=filtersqp", "QP_solver=BQPD"];
julia> model = Model(() -> AmplNLWriter.Optimizer(Uno_jll.amplexe, options));
julia> @variable(model, x <= 0.5, start = -2);
julia> @variable(model, y, start = 1);
julia> @objective(model, Min, 100 * (y - x^2)^2 + (1 - x)^2);
julia> @constraint(model, x*y >= 1);
julia> @constraint(model, x + y^2 >= 0);
julia> optimize!(model)
Original model /tmp/jl_gTmcsU/model.nl
2 variables, 2 constraints (0 equality, 2 inequality)
Reformulated model /tmp/jl_gTmcsU/model.nl
2 variables, 2 constraints (0 equality, 2 inequality)
Used overwritten options:
- QP_solver = BQPD
- TR_min_radius = 1e-8
- TR_radius = 10
- constraint_relaxation_strategy = feasibility_restoration
- filter_type = standard
- globalization_mechanism = TR
- globalization_strategy = fletcher_filter_method
- hessian_model = exact
- inequality_handling_method = inequality_constrained
- l1_constraint_violation_coefficient = 1.
- loose_tolerance = 1e-6
- progress_norm = L1
- protect_actual_reduction_against_roundoff = no
- regularization_strategy = none
- residual_norm = L2
- switch_to_optimality_requires_linearized_feasibility = yes
- tolerance = 1e-6
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
iter TR iter TR radius phase step norm objective primal feas stationarity complementarity status
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
0 - 1.0000e+01 OPT - 9.0900e+02 4.0000e+00 2.4797e+03 0.0000e+00 initial point
1 1 1.0000e+01 OPT 2.0000e+00 2.6000e+01 1.0000e+00 5.5713e+03 2.8887e+03 β (h-type)
2 1 1.0000e+01 OPT - - - - - infeasible subproblem
2 1 1.0000e+01 FEAS 7.5000e-01 2.5250e+01 1.1250e+00 - - β (restoration)
- 2 3.7500e-01 FEAS 3.7500e-01 4.1504e-01 9.5312e-01 3.9528e-01 0.0000e+00 β (restoration)
3 1 7.5000e-01 FEAS 7.5000e-01 3.9312e+01 5.6250e-01 5.0000e-01 0.0000e+00 β (restoration)
4 1 1.5000e+00 FEAS 1.1250e+00 3.0650e+02 0.0000e+00 1.6654e+04 1.4508e+04 β (restoration)
5 1 1.5000e+00 OPT 0.0000e+00 3.0650e+02 0.0000e+00 0.0000e+00 0.0000e+00 0 primal step
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
iter TR iter TR radius phase step norm objective primal feas stationarity complementarity status
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Uno 2.0.0 (TR Fletcher-filter restoration inequality-constrained method with exact Hessian and no regularization)
Mon Jul 7 15:13:07 2025
ββββββββββββββββββββββββββββββββββββββββ
Optimization status: Success
Iterate status: Feasible KKT point
Objective value: 306.5
Primal feasibility: 0
β Stationarity residual: 0
β Complementarity residual: 0
β Feasibility stationarity residual: 0
β Feasibility complementarity residual: 0
β Infeasibility measure: 0
β Objective measure: 306.5
β Auxiliary measure: 0
CPU time: 0.015675s
Iterations: 5
Objective evaluations: 3
Constraints evaluations: 7
Objective gradient evaluations: 6
Jacobian evaluations: 6
Hessian evaluations: 6
Number of subproblems solved: 7
cc @cgeoga
A comprehensive description of the changes from v1.3.0 can be found here.
Iβm actively working on the following features:
- L-BFGS Hessian approximation;
- SLP-EQP method;
- a barrier method that better exploits the structure of the original problem;
- an exponential barrier method, an alternative to IPOPTβs log barrier method;
- Python bindings.
If youβre attending the ICCOPT 2025 conference in two weeks, donβt miss our session on Recent advances in open-source continuous solvers with talks about the HiGHS, acados and Uno solvers.