48 #include "MoochoPack/src/NLPrSQPTailoredApproach.h"
50 #include "ConstrainedOptPack/src/DenseIdentVertConcatMatrixSubclass.h"
51 #include "AbstractLinAlgPack/src/AbstractLinAlgPack_MatrixOp.hpp"
53 #include "MiWorkspacePack.h"
54 #include "Midynamic_cast_verbose.h"
56 namespace LinAlgOpPack {
60 namespace MoochoPack {
73 NLPrSQPTailoredApproach
74 &nlp =
dynamic_cast<NLPrSQPTailoredApproach&
>(algo->nlp());
76 NLPrSQPTailoredApproach
77 &nlp =
dyn_cast<NLPrSQPTailoredApproach>(algo->nlp());
82 &Z_k = s->Z().get_k(0);
84 const DenseIdentVertConcatMatrixSubclass
85 &cZ_k =
dynamic_cast<const DenseIdentVertConcatMatrixSubclass&
>(Z_k);
87 const DenseIdentVertConcatMatrixSubclass
88 &cZ_k =
dyn_cast<
const DenseIdentVertConcatMatrixSubclass>(Z_k);
95 EvalNewPointTailoredApproach_Step
96 &eval_tailored =
dynamic_cast<EvalNewPointTailoredApproach_Step&
>(
99 EvalNewPointTailoredApproach_Step
100 &eval_tailored =
dyn_cast<EvalNewPointTailoredApproach_Step>(
105 DVector c_xo_tmp = c_xo, vy_tmp;
106 nlp.calc_semi_newton_step(xo,&c_xo_tmp,
false,&vy_tmp);
109 eval_tailored.recalc_py_Ypy(D,&vy_tmp(),v,olevel,out);
116 out << L <<
"*** Compute the approximate range space step by calling on the \"Tailored Approach\" NLP interface:\n"
117 << L <<
"Compute vy s.t. ||Gc_k'*Y_k*vy + c_xo|| << ||c_xo|| (nlp.calc_semi_newton_step(...))\n"
118 << L <<
"update vy and compute v = Yvy from EvalNewPointTailoredApproach_Step::recalc_py_Ypy(...)\n";
bool solve_quasi_range_space_step(std::ostream &out, EJournalOutputLevel olevel, NLPAlgo *algo, NLPAlgoState *s, const DVectorSlice &xo, const DVectorSlice &c_xo, DVectorSlice *v)
Calls the NLPrSQPTailoredApproach iterface to compute the step.
EJournalOutputLevel
enum for journal output.
T_To & dyn_cast(T_From &from)
const std::string EvalNewPoint_name
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)
DenseLinAlgPack::VectorSliceTmpl< value_type > DVectorSlice
void print_step(std::ostream &out, const std::string &leading_str) const
DenseLinAlgPack::DMatrixSlice DMatrixSlice
TEUCHOSCORE_LIB_DLL_EXPORT Teuchos::RCP< WorkspaceStore > get_default_workspace_store()