DART
6.10.1
|
NloptSolver is a nonlinear programming solver that provides many unlerlying algorithms through nlopt (an third-party library: https://nlopt.readthedocs.io/). More...
#include <NloptSolver.hpp>
Public Types | |
enum | Algorithm { GN_DIRECT = 0 , GN_DIRECT_L , GN_DIRECT_L_RAND , GN_DIRECT_NOSCAL , GN_DIRECT_L_NOSCAL , GN_DIRECT_L_RAND_NOSCAL , GN_ORIG_DIRECT , GN_ORIG_DIRECT_L , GD_STOGO , GD_STOGO_RAND , LD_LBFGS_NOCEDAL , LD_LBFGS , LN_PRAXIS , LD_VAR1 , LD_VAR2 , LD_TNEWTON , LD_TNEWTON_RESTART , LD_TNEWTON_PRECOND , LD_TNEWTON_PRECOND_RESTART , GN_CRS2_LM , GN_MLSL , GD_MLSL , GN_MLSL_LDS , GD_MLSL_LDS , LD_MMA , LN_COBYLA , LN_NEWUOA , LN_NEWUOA_BOUND , LN_NELDERMEAD , LN_SBPLX , LN_AUGLAG , LD_AUGLAG , LN_AUGLAG_EQ , LD_AUGLAG_EQ , LN_BOBYQA , GN_ISRES , AUGLAG , AUGLAG_EQ , G_MLSL , G_MLSL_LDS , LD_SLSQP , LD_CCSAQ , GN_ESCH , NUM_ALGORITHMS } |
Public Member Functions | |
NloptSolver (const Solver::Properties &properties, nlopt::algorithm alg) | |
Default Constructor. More... | |
NloptSolver (const Solver::Properties &properties=Solver::Properties(), Algorithm alg=LN_COBYLA) | |
Default Constructor. More... | |
NloptSolver (std::shared_ptr< Problem > problem, nlopt::algorithm alg) | |
Alternative Constructor. More... | |
NloptSolver (std::shared_ptr< Problem > problem, Algorithm alg=LN_COBYLA) | |
Alternative Constructor. More... | |
~NloptSolver () override | |
Destructor. More... | |
bool | solve () override |
Solve optimization problem. More... | |
Eigen::VectorXd | getLastConfiguration () const |
std::string | getType () const override |
Get the type (implementation) of this Solver. More... | |
std::shared_ptr< Solver > | clone () const override |
Create an identical clone of this Solver. More... | |
void | copy (const NloptSolver &other) |
Copy the Properties of another NloptSolver. More... | |
NloptSolver & | operator= (const NloptSolver &other) |
Copy the Properties of another NloptSolver. More... | |
void | setAlgorithm (nlopt::algorithm alg) |
Set the algorithm that is to be used by the nlopt solver. More... | |
void | setAlgorithm (Algorithm alg) |
Set the algorithm that is to be used by the nlopt solver. More... | |
nlopt::algorithm | getAlgorithm () const |
Get the algorithm that is to be used by the nlopt solver. More... | |
Algorithm | getAlgorithm2 () const |
Get the algorithm that is to be used by the nlopt solver. More... | |
void | setProperties (const Properties &_properties) |
Set the generic Properties of this Solver. More... | |
const Properties & | getSolverProperties () const |
Get the generic Properties of this Solver. More... | |
void | copy (const Solver &_otherSolver) |
Copy the generic Properties of another Solver. More... | |
virtual void | setProblem (std::shared_ptr< Problem > _newProblem) |
Set the nonlinear optimization problem. More... | |
std::shared_ptr< Problem > | getProblem () const |
Get nonlinear optimization problem. More... | |
virtual void | setTolerance (double _newTolerance) |
Set the maximum step size allowed for the Problem to be considered converged. More... | |
double | getTolerance () const |
Get the maximum step size allowed for the Problem to be considered converged. More... | |
virtual void | setNumMaxIterations (std::size_t _newMax) |
Set the maximum number of iterations that the Solver should use. More... | |
std::size_t | getNumMaxIterations () const |
Get the maximum number of iterations that the Solver should use. More... | |
virtual void | setIterationsPerPrint (std::size_t _newRatio) |
Set the number of iterations that should pass between printing progress to the terminal. More... | |
std::size_t | getIterationsPerPrint () const |
Get the number of iterations that should pass between printing progress to the terminal. More... | |
virtual void | setOutStream (std::ostream *_os) |
Set the output stream that prints the Solver's progress. More... | |
std::ostream * | getOutStream () const |
Get the output stream that prints the Solver's progress. More... | |
virtual void | setPrintFinalResult (bool _print) |
Set to true if the final result should be printed to the terminal. More... | |
bool | getPrintFinalResult () const |
Returns true if the final result should be printed to the terminal. More... | |
virtual void | setResultFileName (const std::string &_resultFile) |
Set the name of the file that results should be printed to. More... | |
const std::string & | getResultFileName () const |
Get the name of the file that results should be printed to. More... | |
Protected Attributes | |
Properties | mProperties |
Static Private Member Functions | |
static nlopt::algorithm | convertAlgorithm (Algorithm algorithm) |
Converts nlopt::algorithm to NloptSolver::Algorithm. More... | |
static Algorithm | convertAlgorithm (nlopt::algorithm algorithm) |
Converts NloptSolver::Algorithm to nlopt::algorithm. More... | |
static double | _nlopt_func (unsigned n, const double *x, double *gradient, void *func_data) |
Wrapping function for nlopt callback function, nlopt_func. More... | |
static void | _nlopt_mfunc (unsigned m, double *result, unsigned n, const double *x, double *gradient, void *func_data) |
Wrapping function for nlopt callback function, nlopt_mfunc. More... | |
Private Attributes | |
std::unique_ptr< nlopt::opt > | mOpt |
NLOPT data structure. More... | |
nlopt::algorithm | mAlg |
Algorithm to be used by the nlopt::opt. More... | |
std::vector< double > | mX |
Optimization parameters. More... | |
double | mMinF |
Optimum value of the objective function. More... | |
NloptSolver is a nonlinear programming solver that provides many unlerlying algorithms through nlopt (an third-party library: https://nlopt.readthedocs.io/).
The algorithms falls into four categories: (1) Global derivative-free (2) Global gradient-based (3) Local derivative-free (4) Local gradient-based, which can be specified by NloptSolver::Algorithm. The element of NloptSolver are mostly of the form NLOPT_{G,L}{N,D}_xxxx, where G/L denotes global/local optimization and N/D denotes derivative-free/gradient-based algorithms, respectively. For the details, please see: https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/
dart::optimizer::NloptSolver::NloptSolver | ( | const Solver::Properties & | properties, |
nlopt::algorithm | alg | ||
) |
Default Constructor.
dart::optimizer::NloptSolver::NloptSolver | ( | const Solver::Properties & | properties = Solver::Properties() , |
NloptSolver::Algorithm | alg = LN_COBYLA |
||
) |
Default Constructor.
dart::optimizer::NloptSolver::NloptSolver | ( | std::shared_ptr< Problem > | problem, |
nlopt::algorithm | alg | ||
) |
Alternative Constructor.
dart::optimizer::NloptSolver::NloptSolver | ( | std::shared_ptr< Problem > | problem, |
NloptSolver::Algorithm | alg = LN_COBYLA |
||
) |
Alternative Constructor.
|
override |
Destructor.
|
staticprivate |
Wrapping function for nlopt callback function, nlopt_func.
|
staticprivate |
Wrapping function for nlopt callback function, nlopt_mfunc.
|
overridevirtual |
Create an identical clone of this Solver.
Implements dart::optimizer::Solver.
|
staticprivate |
Converts nlopt::algorithm to NloptSolver::Algorithm.
|
staticprivate |
Converts NloptSolver::Algorithm to nlopt::algorithm.
void dart::optimizer::NloptSolver::copy | ( | const NloptSolver & | other | ) |
Copy the Properties of another NloptSolver.
|
inherited |
Copy the generic Properties of another Solver.
nlopt::algorithm dart::optimizer::NloptSolver::getAlgorithm | ( | ) | const |
Get the algorithm that is to be used by the nlopt solver.
NloptSolver::Algorithm dart::optimizer::NloptSolver::getAlgorithm2 | ( | ) | const |
Get the algorithm that is to be used by the nlopt solver.
|
inherited |
Get the number of iterations that should pass between printing progress to the terminal.
A value of 0 means there will be no printing.
Eigen::VectorXd dart::optimizer::NloptSolver::getLastConfiguration | ( | ) | const |
|
inherited |
Get the maximum number of iterations that the Solver should use.
|
inherited |
Get the output stream that prints the Solver's progress.
|
inherited |
Returns true if the final result should be printed to the terminal.
|
inherited |
Get nonlinear optimization problem.
|
inherited |
Get the name of the file that results should be printed to.
An empty string indicates that results should not be printed to a file.
|
inherited |
Get the generic Properties of this Solver.
|
inherited |
Get the maximum step size allowed for the Problem to be considered converged.
|
overridevirtual |
Get the type (implementation) of this Solver.
Implements dart::optimizer::Solver.
NloptSolver & dart::optimizer::NloptSolver::operator= | ( | const NloptSolver & | other | ) |
Copy the Properties of another NloptSolver.
void dart::optimizer::NloptSolver::setAlgorithm | ( | NloptSolver::Algorithm | alg | ) |
Set the algorithm that is to be used by the nlopt solver.
void dart::optimizer::NloptSolver::setAlgorithm | ( | nlopt::algorithm | alg | ) |
Set the algorithm that is to be used by the nlopt solver.
|
virtualinherited |
Set the number of iterations that should pass between printing progress to the terminal.
Use 0 for no printing.
|
virtualinherited |
Set the maximum number of iterations that the Solver should use.
|
virtualinherited |
Set the output stream that prints the Solver's progress.
|
virtualinherited |
Set to true if the final result should be printed to the terminal.
|
virtualinherited |
Set the nonlinear optimization problem.
|
inherited |
Set the generic Properties of this Solver.
|
virtualinherited |
Set the name of the file that results should be printed to.
Use an empty string to indicate that results should not be printed to a file.
|
virtualinherited |
Set the maximum step size allowed for the Problem to be considered converged.
|
overridevirtual |
Solve optimization problem.
Implements dart::optimizer::Solver.
|
private |
Algorithm to be used by the nlopt::opt.
|
private |
Optimum value of the objective function.
|
private |
NLOPT data structure.
|
protectedinherited |
|
private |
Optimization parameters.