44 #ifndef ROL_REDUCED_OBJECTIVE_SIMOPT_H
45 #define ROL_REDUCED_OBJECTIVE_SIMOPT_H
65 Teuchos::RCP<Objective_SimOpt<Real> >
obj_;
66 Teuchos::RCP<EqualityConstraint_SimOpt<Real> >
con_;
104 Teuchos::RCP<Vector<Real> > gu =
dualstate_->clone();
126 con_->applyInverseJacobian_1(s,*Bv,*
state_,x,tol);
143 Teuchos::RCP<Vector<Real> > hv11 =
dualstate_->clone();
145 Teuchos::RCP<Vector<Real> > hv12 =
dualstate_->clone();
148 Teuchos::RCP<Vector<Real> > hc11 =
dualstate_->clone();
150 Teuchos::RCP<Vector<Real> > hc21 =
dualstate_->clone();
153 Teuchos::RCP<Vector<Real> > r =
dualstate_->clone();
159 con_->applyInverseAdjointJacobian_1(p,*r,*
state_,x,tol);
177 bool storage =
true,
bool useFDhessVec =
false)
205 bool storage =
true,
bool useFDhessVec =
false)
248 Teuchos::RCP<Vector<Real> > gz = g.
clone();
268 Teuchos::RCP<Vector<Real> > s =
state_->clone();
271 Teuchos::RCP<Vector<Real> > p =
adjoint_->clone();
274 con_->applyAdjointJacobian_2(hv,*p,*
state_,x,tol);
275 Teuchos::RCP<Vector<Real> > tmp = hv.
clone();
Teuchos::RCP< Objective_SimOpt< Real > > obj_
SimOpt objective function.
Provides the interface to evaluate objective functions.
Provides the interface to evaluate simulation-based objective functions.
virtual const Vector & dual() const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
virtual void plus(const Vector &x)=0
Compute , where .
virtual void precond(Vector< Real > &Pv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply a reduced Hessian preconditioner.
bool storage_
Flag whether or not to store computed quantities.
virtual void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply Hessian approximation to vector.
Teuchos::RCP< Vector< Real > > state_
Storage for the state variable.
virtual Teuchos::RCP< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
Reduced_Objective_SimOpt(const Teuchos::RCP< Objective_SimOpt< Real > > &obj, const Teuchos::RCP< EqualityConstraint_SimOpt< Real > > &con, const Teuchos::RCP< Vector< Real > > &state, const Teuchos::RCP< Vector< Real > > &adjoint, bool storage=true, bool useFDhessVec=false)
Primary constructor.
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Given , evaluate the gradient of the objective function where solves .
void solve_adjoint_equation(const ROL::Vector< Real > &x, Real &tol)
Given which solves the state equation, solve the adjoint equation for .
Defines the linear algebra or vector space interface.
Defines the equality constraint operator interface for simulation-based optimization.
Teuchos::RCP< Vector< Real > > adjoint_
Storage for the adjoint variable.
Reduced_Objective_SimOpt(Teuchos::RCP< Objective_SimOpt< Real > > &obj, Teuchos::RCP< EqualityConstraint_SimOpt< Real > > &con, Teuchos::RCP< Vector< Real > > &state, Teuchos::RCP< Vector< Real > > &adjoint, Teuchos::RCP< Vector< Real > > &dualstate, Teuchos::RCP< Vector< Real > > &dualadjoint, bool storage=true, bool useFDhessVec=false)
Secondary, general constructor for use with dual optimization vector spaces where the user does not d...
void solve_state_equation(const ROL::Vector< Real > &x, Real &tol, bool flag=true, int iter=-1)
Given , solve the state equation for .
bool is_state_computed_
Flag whether or not to store the state variable.
Provides the interface to evaluate simulation-based reduced objective functions.
void solve_adjoint_sensitivity(ROL::Vector< Real > &p, const ROL::Vector< Real > &s, const ROL::Vector< Real > &v, const ROL::Vector< Real > &x, Real &tol)
Given , the adjoint variable , and a direction , solve the adjoint sensitvity equation for ...
bool useFDhessVec_
Flag whether or not to use finite difference hessVec.
void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Given , evaluate the Hessian of the objective function in the direction .
Teuchos::RCP< const Vector< Real > > dualstate_
Dual state vector, used for cloning only.
Real value(const Vector< Real > &x, Real &tol)
Given , evaluate the objective function where solves .
Teuchos::RCP< const Vector< Real > > dualadjoint_
Dual adjoint vector, used for cloning only.
void solve_state_sensitivity(ROL::Vector< Real > &s, const ROL::Vector< Real > &v, const ROL::Vector< Real > &x, Real &tol)
Given which solves the state equation and a direction , solve the state senstivity equation for ...
virtual void set(const Vector &x)
Set where .
Teuchos::RCP< EqualityConstraint_SimOpt< Real > > con_
SimOpt equality constraint.
void update(const Vector< Real > &x, bool flag=true, int iter=-1)
Update the SimOpt objective function and equality constraint.
static const double ROL_EPSILON
Platform-dependent machine epsilon.
bool is_adjoint_computed_
Flag whether or not to store the adjoint variable.