|
| ReducedNewtonAlgorithmWithInverse (PROBLEM *OP, ReducedProblemInterface< PROBLEM, VECTOR > *S, ParameterReader ¶m_reader, DOpEExceptionHandler< VECTOR > *Except=NULL, DOpEOutputHandler< VECTOR > *Output=NULL, int base_priority=0) |
|
| ~ReducedNewtonAlgorithmWithInverse () |
|
virtual int | Solve (ControlVector< VECTOR > &q, double global_tol=-1.) |
|
| ReducedNewtonAlgorithm (PROBLEM *OP, ReducedProblemInterface< PROBLEM, VECTOR > *S, ParameterReader ¶m_reader, DOpEExceptionHandler< VECTOR > *Except=NULL, DOpEOutputHandler< VECTOR > *Output=NULL, int base_priority=0) |
|
| ~ReducedNewtonAlgorithm () |
|
double | NewtonResidual (const ControlVector< VECTOR > &q) |
|
| ReducedAlgorithm (PROBLEM *OP, ReducedProblemInterface< PROBLEM, VECTOR > *S, ParameterReader ¶m_reader, DOpEExceptionHandler< VECTOR > *Except=NULL, DOpEOutputHandler< VECTOR > *Output=NULL, int base_priority=0) |
|
| ~ReducedAlgorithm () |
|
virtual void | ReInit () |
|
virtual void | SolveForward (ControlVector< VECTOR > &q) |
|
virtual void | CheckGrads (double c, ControlVector< VECTOR > &q, ControlVector< VECTOR > &dq, unsigned int niter=1, double eps=1.) |
|
virtual void | FirstDifferenceQuotient (double exact, double eps, const ControlVector< VECTOR > &q, const ControlVector< VECTOR > &dq) |
|
virtual void | CheckHessian (double c, ControlVector< VECTOR > &q, ControlVector< VECTOR > &dq, unsigned int niter=1, double eps=1.) |
|
virtual void | SecondDifferenceQuotient (double exact, double eps, const ControlVector< VECTOR > &q, const ControlVector< VECTOR > &dq) |
|
DOpEExceptionHandler< VECTOR > * | GetExceptionHandler () |
|
DOpEOutputHandler< VECTOR > * | GetOutputHandler () |
|
template<typename PROBLEM, typename VECTOR>
class DOpE::ReducedNewtonAlgorithmWithInverse< PROBLEM, VECTOR >
This class provides a solver for equality constrained optimization problems in reduced form, i.e., the dependent variable is assumed to be eliminated by solving the equation. I.e., we solve the problem min j(q)
This class implements a linesearch newton algorithm where the linear system is solved exactly. This requires that <PROBLEM> posseses a working method PROBLEM::ComputeReducedHessianInverseVector which is reasonable only if the problem has a very simple structure.
- Template Parameters
-
<PROBLEM> | The problem to deal with. |
<VECTOR> | The type of Vector used in the ControlVectors |
template<typename PROBLEM , typename VECTOR >
Solves the linear system corresponding to the unconstrained quadratic model j(q) + j'(q)p + 1/2 p^TH(q)p
The values for j'(q) need to be provided. Here it is assumed that the hessian can be inverted directly!
- Parameters
-
q | The fixed point where j, j' is evaluated and H needs to be calculated. |
gradient | The l^2 gradient of the costfunctional at q, i.e., the gradient_i = {q_i} j(q) where q_i denotes the i-th DoF for the control. |
gradient_transposed | The transposed of the gradient. This is assumed to be such that if q lives in a Hilbert space Q, then (gradient_transposed,gradient)_{l^2} = |j'(q)|_Q^2 |
dq | The solution of the model minimization, i.e., H(q)dq = - j'(q). |
Reimplemented from DOpE::ReducedNewtonAlgorithm< PROBLEM, VECTOR >.