Builder for creating a complete IpoptAlg object. More...
#include <IpAlgBuilder.hpp>
Static Public Member Functions | |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Methods for IpoptTypeInfo. | |
Protected Member Functions | |
SmartPtr< LibraryLoader > | GetHSLLoader (const OptionsList &options, const std::string &prefix) |
Gives Library Loader for HSL library if not all HSL routines are linked in. | |
SmartPtr< LibraryLoader > | GetPardisoLoader (const OptionsList &options, const std::string &prefix) |
Gives Library Loader for Pardiso library from pardiso-project.org. | |
Private Member Functions | |
Default Compiler Generated Methods | |
(Hidden to avoid implicit creation/calling). These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called. | |
AlgorithmBuilder (const AlgorithmBuilder &) | |
Default Constructor. | |
void | operator= (const AlgorithmBuilder &) |
Default Assignment Operator. | |
Private Attributes | |
SmartPtr< AugSystemSolver > | custom_solver_ |
Optional pointer to AugSystemSolver. | |
std::string | custom_solver_name_ |
std::string | linear_solver |
name of linear solver constructed in SymLinearSolverFactory | |
SmartPtr< LibraryLoader > | hslloader |
loader of HSL library (at runtime) | |
SmartPtr< LibraryLoader > | pardisoloader |
loader of Pardiso library (at runtime) | |
IpoptAlgorithm constructor arguments. | |
These components are built in separate Build methods in the order defined by BuildBasicAlgorithm. A single core component may require one or more other core components in its constructor, so the this class holds pointers to each component for use between the separate Build methods. | |
SmartPtr< IterationOutput > | IterOutput_ |
SmartPtr< HessianUpdater > | HessUpdater_ |
SmartPtr< ConvergenceCheck > | ConvCheck_ |
SmartPtr< SearchDirectionCalculator > | SearchDirCalc_ |
SmartPtr< EqMultiplierCalculator > | EqMultCalculator_ |
SmartPtr< IterateInitializer > | IterInitializer_ |
SmartPtr< LineSearch > | LineSearch_ |
SmartPtr< MuUpdate > | MuUpdate_ |
Commonly used solver components | |
for building core algorithm components. Each of these members is paired with a Factory/Getter method. | |
SmartPtr< SymLinearSolver > | SymSolver_ |
SmartPtr< AugSystemSolver > | AugSolver_ |
SmartPtr< PDSystemSolver > | PDSolver_ |
Builder for creating a complete IpoptAlg object.
This object contains all subelements (such as line search objects etc). How the resulting IpoptAlg object is built can be influenced by the options.
More advanced customization can be achieved by subclassing this class and overloading the virtual methods that build the individual parts. The advantage of doing this is that it allows one to reuse the extensive amount of options processing that takes place, for instance, when generating the symmetric linear system solver. Another method for customizing the algorithm is using the optional custom_solver argument, which allows the expert user to provide a specialized linear solver for the augmented system (e.g., type GenAugSystemSolver), possibly for user-defined matrix objects. The optional custom_solver constructor argument is likely obsolete, however, as more control over this this process can be achieved by implementing a subclass of this AlgBuilder (e.g., by overloading the AugSystemSolverFactory method).
Definition at line 49 of file IpAlgBuilder.hpp.
Ipopt::AlgorithmBuilder::AlgorithmBuilder | ( | SmartPtr< AugSystemSolver > | custom_solver = NULL , |
const std::string & | custom_solver_name = std::string() |
||
) |
Constructor.
custom_solver | custom linear solver interface object |
custom_solver_name | name of custom linear solver (since 3.14.12) |
|
inlinevirtual |
Destructor.
Definition at line 61 of file IpAlgBuilder.hpp.
|
private |
Default Constructor.
Copy Constructor
|
static |
Methods for IpoptTypeInfo.
register the options used by the algorithm builder
|
virtual |
Create a solver that can be used to solve a symmetric linear system.
Dependencies: None
SmartPtr< SymLinearSolver > Ipopt::AlgorithmBuilder::GetSymLinearSolver | ( | const Journalist & | jnlst, |
const OptionsList & | options, | ||
const std::string & | prefix | ||
) |
Get the symmetric linear system solver for this algorithm.
This method will call the SymLinearSolverFactory exactly once (the first time it is used), and store its instance on SymSolver_ for use in subsequent calls.
|
virtual |
Create a solver that can be used to solve an augmented system.
Dependencies: -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
SmartPtr< AugSystemSolver > Ipopt::AlgorithmBuilder::GetAugSystemSolver | ( | const Journalist & | jnlst, |
const OptionsList & | options, | ||
const std::string & | prefix | ||
) |
Get the augmented system solver for this algorithm.
This method will call the AugSystemSolverFactory exactly once (the first time it is used), and store its instance on AugSolver_ for use in subsequent calls.
|
virtual |
Create a solver that can be used to solve a primal-dual system.
Dependencies: -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
SmartPtr< PDSystemSolver > Ipopt::AlgorithmBuilder::GetPDSystemSolver | ( | const Journalist & | jnlst, |
const OptionsList & | options, | ||
const std::string & | prefix | ||
) |
Get the primal-dual system solver for this algorithm.
This method will call the PDSystemSolverFactory exactly once (the first time it is used), and store its instance on PDSolver_ for use in subsequent calls.
|
virtual |
Allocates memory for the IpoptNLP, IpoptData, and IpoptCalculatedQuanties arguments.
Dependencies: None
Reimplemented in Ipopt::InexactAlgorithmBuilder.
|
virtual |
Creates an instance of the IpoptAlgorithm class by building each of its required constructor arguments piece-by-piece.
The default algorithm can be customized by overloading this method or by overloading one or more of the Build* methods called in this method's default implementation. Additional control can be achieved by overloading any of the *SolverFactory methods. This method will call (in this order): -> BuildIterationOutput() -> BuildHessianUpdater() -> BuildConvergenceCheck() -> BuildSearchDirectionCalculator() -> BuildEqMultiplierCalculator() -> BuildIterateInitializer() -> BuildLineSearch() -> BuildMuUpdate()
Reimplemented in Ipopt::InexactAlgorithmBuilder.
|
virtual |
Creates an instance of the IterationOutput class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: None
|
virtual |
Creates an instance of the HessianUpdater class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: None
|
virtual |
Creates an instance of the ConvergenceCheck class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: None
|
virtual |
Creates an instance of the SearchDirectionCalculator class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: -> GetPDSystemSolver() -> PDSystemSolverFactory() -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
|
virtual |
Creates an instance of the EqMultiplierCalculator class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
|
virtual |
Creates an instance of the IterateInitializer class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: -> EqMultCalculator_ -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
|
virtual |
Creates an instance of the LineSearch class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: -> EqMultCalculator_ -> ConvCheck_ -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_ -> GetPDSystemSolver() -> PDSystemSolverFactory() -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
|
virtual |
Creates an instance of the MuUpdate class.
This method is called in the default implementation of BuildBasicAlgorithm. It can be overloaded to customize that portion the default algorithm. Dependencies: -> LineSearch_ -> EqMultCalculator_ -> ConvCheck_ -> GetPDSystemSolver() -> PDSystemSolverFactory() -> GetAugSystemSolver() -> AugSystemSolverFactory() -> GetSymLinearSolver() -> SymLinearSolverFactory() -> custom_solver_
|
protected |
Gives Library Loader for HSL library if not all HSL routines are linked in.
Creates new loader if not existing yet.
|
protected |
Gives Library Loader for Pardiso library from pardiso-project.org.
Creates new loader if not existing yet.
|
private |
Default Assignment Operator.
|
private |
Definition at line 383 of file IpAlgBuilder.hpp.
|
private |
Definition at line 384 of file IpAlgBuilder.hpp.
|
private |
Definition at line 385 of file IpAlgBuilder.hpp.
|
private |
Definition at line 386 of file IpAlgBuilder.hpp.
|
private |
Definition at line 387 of file IpAlgBuilder.hpp.
|
private |
Definition at line 388 of file IpAlgBuilder.hpp.
|
private |
Definition at line 389 of file IpAlgBuilder.hpp.
Definition at line 390 of file IpAlgBuilder.hpp.
|
private |
Definition at line 398 of file IpAlgBuilder.hpp.
|
private |
Definition at line 399 of file IpAlgBuilder.hpp.
|
private |
Definition at line 400 of file IpAlgBuilder.hpp.
|
private |
Optional pointer to AugSystemSolver.
If this is set in the constructor, we will use this to solve the linear systems.
Definition at line 405 of file IpAlgBuilder.hpp.
|
private |
Definition at line 406 of file IpAlgBuilder.hpp.
|
private |
name of linear solver constructed in SymLinearSolverFactory
Definition at line 409 of file IpAlgBuilder.hpp.
|
private |
loader of HSL library (at runtime)
Definition at line 412 of file IpAlgBuilder.hpp.
|
private |
loader of Pardiso library (at runtime)
Definition at line 414 of file IpAlgBuilder.hpp.