Description
An iterative solver based on modified Krylov iteration of spectral projected gradients with Barzilai-Borwein.
The Barzilai-Borwein solver can use diagonal preconditioning (enabled by default).
See ChSystemDescriptor for more information about the problem formulation and the data structures passed to the solver.
#include <ChSolverBB.h>


Public Member Functions | |
| virtual Type | GetType () const override |
| Return type of the solver. | |
| virtual double | Solve (ChSystemDescriptor &sysd) override |
| Performs the solution of the problem. More... | |
| void | SetNarmijo (int mf) |
| Number of max tolerated steps in non-monotone Armijo line search; usually good values are in 1..10 range. | |
| double | GetNarmijo () |
| void | SetMaxArmijoBacktrace (int mm) |
| int | GetMaxArmijoBacktrace () |
| virtual double | GetError () const override |
| Return the tolerance error reached during the last solve. More... | |
| virtual void | ArchiveOUT (ChArchiveOut &marchive) override |
| Method to allow serialization of transient data to archives. | |
| virtual void | ArchiveIN (ChArchiveIn &marchive) override |
| Method to allow de serialization of transient data from archives. | |
Public Member Functions inherited from chrono::ChIterativeSolverVI | |
| void | SetOmega (double mval) |
| Set the overrelaxation factor (default: 1.0). More... | |
| void | SetSharpnessLambda (double mval) |
| Set the sharpness factor (default: 1.0). More... | |
| void | SetRecordViolation (bool mval) |
| Enable/disable recording of the constraint violation history. More... | |
| double | GetOmega () const |
| Return the current value of the overrelaxation factor. | |
| double | GetSharpnessLambda () const |
| Return the current value of the sharpness factor. | |
| virtual int | GetIterations () const override |
| Return the number of iterations performed during the last solve. | |
| const std::vector< double > & | GetViolationHistory () const |
| Access the vector of constraint violation history. More... | |
| const std::vector< double > & | GetDeltalambdaHistory () const |
| Access the vector with history of maximum change in Lagrange multipliers Note that collection of constraint violations must be enabled through SetRecordViolation. | |
Public Member Functions inherited from chrono::ChSolver | |
| virtual bool | Setup (ChSystemDescriptor &sysd) |
| This function does the setup operations for the solver. More... | |
| void | SetVerbose (bool mv) |
| Set verbose output from solver. | |
Public Member Functions inherited from chrono::ChIterativeSolver | |
| void | SetMaxIterations (int max_iterations) |
| Set the maximum number of iterations. | |
| void | SetTolerance (double tolerance) |
| Set the tolerance threshold used by the stopping criteria. | |
| void | EnableDiagonalPreconditioner (bool val) |
| Enable/disable use of a simple diagonal preconditioner (default: true). More... | |
| void | EnableWarmStart (bool val) |
| Enable/disable warm starting by providing an initial guess (default: false). More... | |
| int | GetMaxIterations () const |
| Get the current maximum number of iterations. | |
| double | GetTolerance () const |
| Get the current tolerance value. | |
Additional Inherited Members | |
Public Types inherited from chrono::ChSolver | |
| enum | Type { Type::PSOR = 0, Type::PSSOR, Type::PJACOBI, Type::PMINRES, Type::BARZILAIBORWEIN, Type::APGD, Type::SPARSE_LU, Type::SPARSE_QR, Type::PARDISO, Type::MUMPS, Type::GMRES, Type::MINRES, Type::BICGSTAB, CUSTOM } |
| Available types of solvers. More... | |
Protected Member Functions inherited from chrono::ChIterativeSolverVI | |
| void | AtIterationEnd (double mmaxviolation, double mdeltalambda, unsigned int iternum) |
| This method MUST be called by all iterative methods INSIDE their iteration loops (at the end). More... | |
| virtual bool | SolveRequiresMatrix () const override |
| Indicate whether ot not the Solve() phase requires an up-to-date problem matrix. More... | |
Protected Member Functions inherited from chrono::ChIterativeSolver | |
| ChIterativeSolver (int max_iterations, double tolerance, bool use_precond, bool warm_start) | |
| void | SaveMatrix (ChSystemDescriptor &sysd) |
| double | CheckSolution (ChSystemDescriptor &sysd, const ChVectorDynamic<> &x) |
Protected Attributes inherited from chrono::ChIterativeSolverVI | |
| int | m_iterations |
| total number of iterations performed by the solver | |
| double | m_omega |
| over-relaxation factor | |
| double | m_shlambda |
| sharpness factor | |
| bool | record_violation_history |
| std::vector< double > | violation_history |
| std::vector< double > | dlambda_history |
Protected Attributes inherited from chrono::ChSolver | |
| bool | verbose |
Protected Attributes inherited from chrono::ChIterativeSolver | |
| bool | m_use_precond |
| use diagonal preconditioning? | |
| bool | m_warm_start |
| use initial guesss? | |
| int | m_max_iterations |
| maximum number of iterations | |
| double | m_tolerance |
| tolerance threshold in stopping criteria | |
Member Function Documentation
◆ GetError()
|
inlineoverridevirtual |
Return the tolerance error reached during the last solve.
For the Barzilai-Borwein solver, this is the norm of the projected gradient.
Implements chrono::ChIterativeSolver.
◆ Solve()
|
overridevirtual |
Performs the solution of the problem.
- Returns
- the maximum constraint violation after termination.
- Parameters
-
sysd system description with constraints and variables
Implements chrono::ChSolver.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/solver/ChSolverBB.h
- /builds/uwsbel/chrono/src/chrono/solver/ChSolverBB.cpp
Public Member Functions inherited from