ROL
Objective_TimeSimOpt Class Reference

Defines the time-dependent objective function interface for simulation-based optimization. Computes time-local contributions of value, gradient, Hessian-vector product etc to a larger composite objective defined over the simulation time. In contrast to other objective classes Objective_TimeSimOpt has a default implementation of value which returns zero, as time-dependent simulation based optimization problems may have an objective value which depends only on the final state of the system. More...

#include <ROL_Objective_TimeSimOpt.hpp>

Detailed Description

Defines the time-dependent objective function interface for simulation-based optimization. Computes time-local contributions of value, gradient, Hessian-vector product etc to a larger composite objective defined over the simulation time. In contrast to other objective classes Objective_TimeSimOpt has a default implementation of value which returns zero, as time-dependent simulation based optimization problems may have an objective value which depends only on the final state of the system.

This objective interface inherits from ROL_Objective_SimOpt. Though the interface takes two simulation space vectors from spaces \(\mathcal{U_o}\times\mathcal{U_n}\). The space \(\mathcal{U_o}\) is ``old'' information that accounts for the initial condition on the time interval.

Comments: It may be worthwhile to provide an implementation of OptimizationProblem for TimeSimOpt which recognizes this common use case and avoids unnecessary objective calls.

NOTE: As written, this interface is step agnostic, which needs to be changed if a final-time cost is desire or if the time-distributed cost is to be weighted non-uniformly


*/

namespace ROL {

template<typename Real> class Objective_TimeSimOpt : public Objective_SimOpt<Real> { private:

Get the end point of the time intervals vector template<int I> Vector<Real> & getVector(Vector<Real> & x) const { return *(static_cast<PartitionedVector<Real>&>(x).get(I)); }

template<int I> const Vector<Real> & getVector(const Vector<Real> & x) const { return *(static_cast<const PartitionedVector<Real>&>(x).get(I)); }

mutable VectorWorkspace<Real> workspace_;

protected:

VectorWorkspace<Real>& getVectorWorkspace() const { return workspace_; }

public:

using Objective_SimOpt<Real>::Objective_SimOpt;

Interface functions (to be overloaded)

/** Update constraint functions.
u_old Is the state from the end of the previous time step. u_new Is the state from the end of this time step. z Is the control variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.


The documentation for this class was generated from the following file: