Janus 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
OptiOptions.hpp
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <casadi/casadi.hpp>
9#include <string>
10
11namespace janus {
12
21enum class Solver {
25};
26
30inline bool solver_available(Solver solver);
31
38inline const char *solver_name(Solver solver) {
39 switch (solver) {
40 case Solver::Snopt:
41 return "snopt";
42 case Solver::QpOases:
43 return "qpoases";
44 case Solver::Ipopt:
45 default:
46 return "ipopt";
47 }
48}
49
58inline bool solver_available(Solver solver) { return casadi::has_nlpsol(solver_name(solver)); }
59
71 int print_level = 0;
72
78 return *this;
79 }
80
85 return *this;
86 }
87
94
101
105 print_level = v;
106 return *this;
107 }
108};
109
127 // Solver selection
130
131 // General solver options (used by all solvers where applicable)
132 int max_iter = 1000;
133 double max_cpu_time = 1e20;
134 double tol = 1e-8;
135 bool verbose = true;
136 bool jit = false;
137 bool detect_simple_bounds = false;
138 std::string mu_strategy = "adaptive";
139
144 max_iter = v;
145 return *this;
146 }
147
151 max_cpu_time = v;
152 return *this;
153 }
154
157 OptiOptions &set_tol(double v) {
158 tol = v;
159 return *this;
160 }
161
165 verbose = v;
166 return *this;
167 }
168
172 jit = v;
173 return *this;
174 }
175
180 return *this;
181 }
182
185 OptiOptions &set_mu_strategy(const std::string &v) {
186 mu_strategy = v;
187 return *this;
188 }
189
193 solver = v;
194 return *this;
195 }
196
200 snopt_opts = v;
201 return *this;
202 }
203};
204
205} // namespace janus
Definition Diagnostics.hpp:19
Solver
Available NLP solvers.
Definition OptiOptions.hpp:21
@ Ipopt
Interior Point OPTimizer (default, always available).
Definition OptiOptions.hpp:22
@ Snopt
Sparse Nonlinear OPTimizer (requires license).
Definition OptiOptions.hpp:23
@ QpOases
QP solver for QP subproblems.
Definition OptiOptions.hpp:24
bool solver_available(Solver solver)
Check if a solver is available in the current CasADi build.
Definition OptiOptions.hpp:58
const char * solver_name(Solver solver)
Get the CasADi solver name string.
Definition OptiOptions.hpp:38
Options for solving optimization problems.
Definition OptiOptions.hpp:126
bool jit
JIT compile expressions (experimental).
Definition OptiOptions.hpp:136
double max_cpu_time
Maximum solve time [seconds].
Definition OptiOptions.hpp:133
OptiOptions & set_tol(double v)
Set convergence tolerance.
Definition OptiOptions.hpp:157
std::string mu_strategy
Barrier parameter strategy (IPOPT).
Definition OptiOptions.hpp:138
int max_iter
Maximum iterations.
Definition OptiOptions.hpp:132
bool detect_simple_bounds
Detect simple variable bounds.
Definition OptiOptions.hpp:137
OptiOptions & set_max_cpu_time(double v)
Set maximum CPU time.
Definition OptiOptions.hpp:150
SNOPTOptions snopt_opts
SNOPT-specific options (if solver=SNOPT).
Definition OptiOptions.hpp:129
OptiOptions & set_detect_simple_bounds(bool v)
Enable simple bound detection.
Definition OptiOptions.hpp:178
OptiOptions & set_snopt_opts(const SNOPTOptions &v)
Set SNOPT-specific options.
Definition OptiOptions.hpp:199
Solver solver
NLP solver to use.
Definition OptiOptions.hpp:128
bool verbose
Print solver progress.
Definition OptiOptions.hpp:135
OptiOptions & set_max_iter(int v)
Set maximum iterations.
Definition OptiOptions.hpp:143
OptiOptions & set_mu_strategy(const std::string &v)
Set IPOPT barrier parameter strategy.
Definition OptiOptions.hpp:185
OptiOptions & set_solver(Solver v)
Set the NLP solver.
Definition OptiOptions.hpp:192
OptiOptions & set_verbose(bool v)
Set verbosity.
Definition OptiOptions.hpp:164
double tol
Convergence tolerance.
Definition OptiOptions.hpp:134
OptiOptions & set_jit(bool v)
Enable or disable JIT compilation.
Definition OptiOptions.hpp:171
SNOPT-specific solver options.
Definition OptiOptions.hpp:66
int major_iterations_limit
Max major (outer) iterations.
Definition OptiOptions.hpp:67
int minor_iterations_limit
Max minor (QP) iterations per major.
Definition OptiOptions.hpp:68
SNOPTOptions & set_major_feasibility_tolerance(double v)
Set major feasibility tolerance.
Definition OptiOptions.hpp:97
double major_optimality_tolerance
Optimality tolerance.
Definition OptiOptions.hpp:69
SNOPTOptions & set_major_optimality_tolerance(double v)
Set major optimality tolerance.
Definition OptiOptions.hpp:90
double major_feasibility_tolerance
Constraint feasibility tolerance.
Definition OptiOptions.hpp:70
SNOPTOptions & set_major_iterations_limit(int v)
Set maximum major iterations.
Definition OptiOptions.hpp:76
SNOPTOptions & set_print_level(int v)
Set print verbosity level.
Definition OptiOptions.hpp:104
int print_level
0=silent, 1=summary, 2+=detailed
Definition OptiOptions.hpp:71
SNOPTOptions & set_minor_iterations_limit(int v)
Set maximum minor iterations per major.
Definition OptiOptions.hpp:83