Skip to content

Commit d92b4a3

Browse files
committed
Interface to the Uno package now provided
1 parent d22887d commit d92b4a3

7 files changed

Lines changed: 276 additions & 268 deletions

File tree

packages/defaults/uno

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ export PACKLIBS="-L/usr/local/lib -luno"
2525
# Define the name of the package specification file if any. This possibly
2626
# precision-dependent file must either lie in the current directory or in
2727
# ${CUTEST}/src/${PACKDIR}
28-
export SPECS=""
28+
export SPECS="uno.opt"

src/makemaster

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ all_single: tools_single
105105
tron $(S32) PWD=$(PWD)/tron )
106106
( cd uncmin ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
107107
uncmin $(S32) PWD=$(PWD)/uncmin )
108+
# ( cd uno ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
109+
# uno $(S32) PWD=$(PWD)/uno )
108110
( cd vf13 ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
109111
vf13 $(S32) PWD=$(PWD)/vf13 )
110112
# ( cd worhp ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
@@ -194,6 +196,8 @@ all_double: tools_double
194196
tron $(D32) PWD=$(PWD)/tron )
195197
( cd uncmin ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
196198
uncmin $(D32) PWD=$(PWD)/uncmin )
199+
( cd uno ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
200+
uno $(D32) PWD=$(PWD)/uno )
197201
( cd vf13 ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
198202
vf13 $(D32) PWD=$(PWD)/vf13 )
199203
( cd worhp ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
@@ -497,6 +501,8 @@ run_test_single: tools_single test_single
497501
run_test $(S32) PWD=$(PWD)/tron )
498502
( cd uncmin ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
499503
run_test $(S32) PWD=$(PWD)/uncmin )
504+
# ( cd uno ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
505+
# run_test $(S32) PWD=$(PWD)/uno )
500506
( cd vf13 ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
501507
run_test $(S32) PWD=$(PWD)/vf13 )
502508
# ( cd worhp ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
@@ -579,6 +585,8 @@ run_test_double: tools_double test_double
579585
run_test $(D32) PWD=$(PWD)/tron )
580586
( cd uncmin ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
581587
run_test $(D32) PWD=$(PWD)/uncmin )
588+
( cd uno ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
589+
run_test $(D32) PWD=$(PWD)/uno )
582590
( cd vf13 ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
583591
run_test $(D32) PWD=$(PWD)/vf13 )
584592
# ( cd worhp ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \

src/uno/README.uno

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,13 @@ where
6969
keyword_list = keyword value
7070
{keyword_list}
7171

72-
Each keyword must be on a new line. keyword is
73-
one of the following, default values are also given
72+
Each keyword must be on a new line. keyword are described in
7473

75-
keyword default meaning
76-
-----------------------------------------------------
77-
iprint 1 controls printing
74+
https://github.com/cvanaret/Uno/blob/main/docs/options.md
7875

79-
(to be finished)
76+
Any line starting with a # is a comment, and any data after a #
77+
on a particular line is ignored (and can be used to comment that
78+
definition).
8079

8180
A default file is provided in the file uno.opt in $CUTEST/src/Uno
8281

src/uno/uno.opt

Lines changed: 85 additions & 221 deletions
Original file line numberDiff line numberDiff line change
@@ -1,221 +1,85 @@
1-
primal_tolerance
2-
dual_tolerance
3-
loose_primal_tolerance
4-
loose_dual_tolerance
5-
loose_tolerance_iteration_threshold
6-
max_iterations
7-
time_limit
8-
print_solution
9-
unbounded_objective_threshold
10-
logger
11-
constraint_relaxation_strategy
12-
inequality_handling_method
13-
globalization_mechanism
14-
globalization_strategy
15-
hessian_model
16-
inertia_correction_strategy
17-
progress_norm
18-
residual_norm
19-
residual_scaling_threshold
20-
protect_actual_reduction_against_roundoff
21-
protected_actual_reduction_macheps_coefficient
22-
print_subproblem
23-
armijo_decrease_fraction
24-
armijo_tolerance
25-
switching_delta
26-
switching_infeasibility_exponent
27-
sufficient_infeasibility_decrease_ratio
28-
filter_type
29-
filter_beta
30-
filter_gamma
31-
filter_ubd
32-
filter_fact
33-
filter_capacity
34-
filter_sufficient_infeasibility_decrease_factor
35-
funnel_kappa
36-
funnel_beta
37-
funnel_gamma
38-
funnel_ubd
39-
funnel_fact
40-
funnel_update_strategy
41-
funnel_require_acceptance_wrt_current_iterate
42-
LS_backtracking_ratio
43-
LS_min_step_length
44-
LS_scale_duals_with_step_length
45-
quasi_newton_memory_size
46-
LBFGS_delta_upper_bound
47-
LSR1_pivot_max_magnitude
48-
regularization_failure_threshold
49-
regularization_increase_factor
50-
primal_regularization_initial_factor
51-
dual_regularization_fraction
52-
primal_regularization_lb
53-
primal_regularization_decrease_factor
54-
primal_regularization_fast_increase_factor
55-
primal_regularization_slow_increase_factor
56-
threshold_unsuccessful_attempts
57-
TR_radius
58-
TR_increase_factor
59-
TR_decrease_factor
60-
TR_aggressive_decrease_factor
61-
TR_activity_tolerance
62-
TR_min_radius
63-
TR_radius_reset_threshold
64-
switch_to_optimality_requires_linearized_feasibility
65-
l1_constraint_violation_coefficient
66-
barrier_initial_parameter
67-
barrier_default_multiplier
68-
barrier_tau_min
69-
barrier_k_sigma
70-
barrier_k_mu
71-
barrier_theta_mu
72-
barrier_k_epsilon
73-
barrier_update_fraction
74-
barrier_regularization_exponent
75-
barrier_small_direction_factor
76-
barrier_push_variable_to_interior_k1
77-
barrier_push_variable_to_interior_k2
78-
barrier_damping_factor
79-
barrier_small_infeasibility_factor
80-
least_square_multiplier_max_norm
81-
BQPD_kmax_heuristic
82-
QP_solver
83-
LP_solver
84-
linear_solver
85-
preset "filtersqp"
86-
87-
/** termination **/
88-
// primal tolerance (constraint violation)
89-
options.set_double("primal_tolerance", 1e-8);
90-
// dual tolerance (stationarity and complementarity)
91-
options.set_double("dual_tolerance", 1e-8);
92-
// loose tolerance used if primal tolerance cannot be reached
93-
options.set_double("loose_primal_tolerance", 1e-6);
94-
// loose tolerance used if dual tolerance cannot be reached
95-
options.set_double("loose_dual_tolerance", 1e-6);
96-
// number of iterations during which the loose tolerance is monitored
97-
options.set_integer("loose_tolerance_iteration_threshold", 15);
98-
// maximum outer iterations
99-
options.set_integer("max_iterations", 2000);
100-
// CPU time limit (in seconds)
101-
options.set_double("time_limit", INF<double>);
102-
// print optimal solution (yes|no)
103-
options.set_bool("print_solution", false);
104-
// threshold on objective to declare unbounded NLP
105-
options.set_double("unbounded_objective_threshold", -1e20);
106-
107-
/** main options **/
108-
// logging level (SILENT|DISCRETE|WARNING|INFO|DEBUG|DEBUG2|DEBUG3)
109-
options.set_string("logger", "INFO");
110-
// Hessian model (exact|LBFGS|identity|zero)
111-
options.set_string("hessian_model", "exact");
112-
options.set_string("inertia_correction_strategy", "primal");
113-
// norm of the progress measures (L1|L2|INF)
114-
options.set_string("progress_norm", "L1");
115-
// norm of the primal-dual residuals (L1|L2|INF)
116-
options.set_string("residual_norm", "INF");
117-
options.set_double("residual_scaling_threshold", 100.);
118-
options.set_bool("protect_actual_reduction_against_roundoff", false);
119-
options.set_double("protected_actual_reduction_macheps_coefficient", 10.);
120-
options.set_bool("print_subproblem", false);
121-
122-
/** globalization strategy options **/
123-
options.set_double("armijo_decrease_fraction", 1e-4);
124-
options.set_double("armijo_tolerance", 1e-9);
125-
126-
/** switching method options **/
127-
options.set_double("switching_delta", 0.999);
128-
options.set_double("switching_infeasibility_exponent", 2);
129-
130-
/** merit function options **/
131-
options.set_double("sufficient_infeasibility_decrease_ratio", 0.9);
132-
133-
/** filter method options **/
134-
// filter type (standard)
135-
options.set_string("filter_type", "standard");
136-
options.set_double("filter_beta", 0.999);
137-
options.set_double("filter_gamma", 0.001);
138-
options.set_double("filter_ubd", 1e2);
139-
options.set_double("filter_fact", 1.25);
140-
options.set_integer("filter_capacity", 50);
141-
// used by Waechter filter method
142-
options.set_double("filter_sufficient_infeasibility_decrease_factor", 0.9);
143-
144-
/** funnel options **/
145-
options.set_double("funnel_kappa", 0.5);
146-
options.set_double("funnel_beta", 0.9999);
147-
options.set_double("funnel_gamma", 0.001);
148-
options.set_double("funnel_ubd", 1.0);
149-
options.set_double("funnel_fact", 1.5);
150-
options.set_integer("funnel_update_strategy", 1);
151-
options.set_bool("funnel_require_acceptance_wrt_current_iterate", false);
152-
153-
/** line search options */
154-
// backtracking ratio
155-
options.set_double("LS_backtracking_ratio", 0.5);
156-
// minimum step length
157-
options.set_double("LS_min_step_length", 1e-12);
158-
// use the primal-dual and dual step lengths to scale the dual directions when assembling the trial iterate
159-
options.set_bool("LS_scale_duals_with_step_length", true);
160-
161-
/* quasi-Newton options */
162-
options.set_integer("quasi_newton_memory_size", 6);
163-
options.set_double("LBFGS_delta_upper_bound", 10.);
164-
options.set_double("LSR1_pivot_max_magnitude", 1e-7);
165-
166-
/** regularization options **/
167-
// regularization failure threshold
168-
options.set_double("regularization_failure_threshold", 1e40);
169-
// Hessian regularization: initial value
170-
options.set_double("primal_regularization_initial_factor", 1e-4);
171-
options.set_double("regularization_increase_factor", 2);
172-
// regularization of augmented system
173-
options.set_double("dual_regularization_fraction", 1e-8);
174-
options.set_double("primal_regularization_lb", 1e-20);
175-
options.set_double("primal_regularization_decrease_factor", 3.);
176-
options.set_double("primal_regularization_fast_increase_factor", 100.);
177-
options.set_double("primal_regularization_slow_increase_factor", 8.);
178-
options.set_integer("threshold_unsuccessful_attempts", 8);
179-
180-
/** trust region options **/
181-
// initial trust region radius
182-
options.set_double("TR_radius", 10.);
183-
// TR radius increase factor
184-
options.set_double("TR_increase_factor", 2);
185-
// TR radius decrease factor
186-
options.set_double("TR_decrease_factor", 2);
187-
// TR aggressive radius decrease factor
188-
options.set_double("TR_aggressive_decrease_factor", 4);
189-
// tolerance in TR constraint activity
190-
options.set_double("TR_activity_tolerance", 1e-6);
191-
// minimum TR radius
192-
options.set_double("TR_min_radius", 1e-12);
193-
// threshold below which the TR radius is reset
194-
options.set_double("TR_radius_reset_threshold", 1e-4);
195-
196-
/** feasibility restoration options **/
197-
// test linearized feasibility when switching back to the optimality phase
198-
options.set_bool("switch_to_optimality_requires_linearized_feasibility", true);
199-
options.set_double("l1_constraint_violation_coefficient", 1);
200-
201-
/** barrier subproblem options **/
202-
options.set_string("barrier_function", "log");
203-
options.set_double("barrier_initial_parameter", 0.1);
204-
options.set_double("barrier_default_multiplier", 1);
205-
// Ipopt parameters
206-
options.set_double("barrier_tau_min", 0.99);
207-
options.set_double("barrier_k_sigma", 1e10);
208-
options.set_double("barrier_k_mu", 0.2);
209-
options.set_double("barrier_theta_mu", 1.5);
210-
options.set_double("barrier_k_epsilon", 10);
211-
options.set_double("barrier_update_fraction", 10);
212-
options.set_double("barrier_regularization_exponent", 0.25);
213-
options.set_double("barrier_small_direction_factor", 10.);
214-
options.set_double("barrier_push_variable_to_interior_k1", 1e-2);
215-
options.set_double("barrier_push_variable_to_interior_k2", 1e-2);
216-
options.set_double("barrier_damping_factor", 1e-5);
217-
options.set_double("barrier_small_infeasibility_factor", 1e-4);
218-
options.set_double("least_square_multiplier_max_norm", 1e3);
219-
220-
/** BQPD options **/
221-
options.set_string("BQPD_kmax_heuristic", "filtersqp");
1+
# these are the Uno default options
2+
BQPD_kmax_heuristic filtersqp
3+
LBFGS_delta_upper_bound 10
4+
LP_solver BQPD
5+
LSR1_pivot_max_magnitude 1e-07
6+
LS_backtracking_ratio 0.5
7+
LS_min_step_length 1e-12
8+
LS_scale_duals_with_step_length true
9+
QP_solver BQPD
10+
TR_activity_tolerance 1e-06
11+
TR_aggressive_decrease_factor 4
12+
TR_decrease_factor 2
13+
TR_increase_factor 2
14+
TR_min_radius 1e-12
15+
TR_radius 10
16+
TR_radius_reset_threshold 0.0001
17+
armijo_decrease_fraction 0.0001
18+
armijo_tolerance 1e-09
19+
barrier_damping_factor 1e-05
20+
barrier_default_multiplier 1
21+
barrier_initial_parameter 0.1
22+
barrier_k_epsilon 10
23+
barrier_k_mu 0.2
24+
barrier_k_sigma 1e+10
25+
barrier_push_variable_to_interior_k1 0.01
26+
barrier_push_variable_to_interior_k2 0.01
27+
barrier_regularization_exponent 0.25
28+
barrier_small_direction_factor 10
29+
barrier_small_infeasibility_factor 0.0001
30+
barrier_tau_min 0.99
31+
barrier_theta_mu 1.5
32+
barrier_update_fraction 10
33+
constraint_relaxation_strategy feasibility_restoration
34+
dual_regularization_fraction 1e-08
35+
dual_tolerance 1e-06
36+
filter_beta 0.999
37+
filter_capacity 50
38+
filter_fact 1.25
39+
filter_gamma 0.001
40+
filter_sufficient_infeasibility_decrease_factor 0.9
41+
filter_type standard
42+
filter_ubd 100
43+
funnel_beta 0.9999
44+
funnel_fact 1.5
45+
funnel_gamma 0.001
46+
funnel_kappa 0.5
47+
funnel_require_acceptance_wrt_current_iterate false
48+
funnel_ubd 1
49+
funnel_update_strategy 1
50+
globalization_mechanism TR
51+
globalization_strategy fletcher_filter_method
52+
hessian_model exact
53+
inequality_handling_method inequality_constrained
54+
inertia_correction_strategy none
55+
l1_constraint_violation_coefficient 1
56+
least_square_multiplier_max_norm 1000
57+
linear_solver MA57
58+
logger INFO
59+
loose_dual_tolerance 1e-06
60+
loose_primal_tolerance 1e-06
61+
loose_tolerance_iteration_threshold 15
62+
max_iterations 2000
63+
primal_regularization_decrease_factor 3
64+
primal_regularization_fast_increase_factor 100
65+
primal_regularization_initial_factor 0.0001
66+
primal_regularization_lb 1e-20
67+
primal_regularization_slow_increase_factor 8
68+
primal_tolerance 1e-06
69+
print_solution true
70+
print_subproblem false
71+
progress_norm L1
72+
protect_actual_reduction_against_roundoff false
73+
protected_actual_reduction_macheps_coefficient 10
74+
quasi_newton_memory_size 6
75+
regularization_failure_threshold 1e+20
76+
regularization_increase_factor 2
77+
residual_norm L2
78+
residual_scaling_threshold 100
79+
sufficient_infeasibility_decrease_ratio 0.9
80+
switch_to_optimality_requires_linearized_feasibility true
81+
switching_delta 0.999
82+
switching_infeasibility_exponent 2
83+
threshold_unsuccessful_attempts 8
84+
time_limit inf
85+
unbounded_objective_threshold -1e+20

src/uno/uno_c.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ function uno_termination_callback(number_variables, number_constraints, primals,
274274
primal_feasibility_residual, stationarity_residual, &
275275
complementarity_residual, user_data) &
276276
bind(C)
277-
import :: uno_int, c_double, c_ptr, c_bool
277+
import :: uno_int, c_double, c_ptr
278278
integer(uno_int), value :: number_variables
279279
integer(uno_int), value :: number_constraints
280280
real(c_double), intent(in) :: primals(*)
@@ -286,7 +286,7 @@ function uno_termination_callback(number_variables, number_constraints, primals,
286286
real(c_double), value :: stationarity_residual
287287
real(c_double), value :: complementarity_residual
288288
type(c_ptr), value :: user_data
289-
logical(c_bool) :: uno_termination_callback
289+
integer(uno_int) :: uno_termination_callback
290290
end function
291291
end interface
292292

0 commit comments

Comments
 (0)