Public Member Functions | Protected Member Functions | Protected Attributes | Friends

Implements the projection operator within the symbolic operators family. More...

#include <projection.hpp>

Inheritance diagram for Projection:
Inheritance graph
[legend]

List of all members.

Public Member Functions

virtual returnValue AD_backward (int dim, VariableType *varType, int *component, Operator *seed, Operator **df, int &nNewIS, TreeProjection ***newIS)
virtual returnValue AD_backward (int number, double seed, double *df)
virtual returnValue AD_backward2 (int number, double seed1, double seed2, double *df, double *ddf)
virtual OperatorAD_forward (int dim, VariableType *varType, int *component, Operator **seed, int &nNewIS, TreeProjection ***newIS)
virtual returnValue AD_forward (int number, double *seed, double *df)
virtual returnValue AD_forward (int number, double *x, double *seed, double *f, double *df)
virtual returnValue AD_forward2 (int number, double *seed1, double *seed2, double *df, double *ddf)
virtual returnValue AD_symmetric (int dim, VariableType *varType, int *component, Operator *l, Operator **S, int dimS, Operator **dfS, Operator **ldf, Operator **H, int &nNewLIS, TreeProjection ***newLIS, int &nNewSIS, TreeProjection ***newSIS, int &nNewHIS, TreeProjection ***newHIS)
virtual returnValue clearBuffer ()
virtual Operatorclone () const
virtual Operatordifferentiate (int index)
virtual returnValue enumerateVariables (SymbolicIndexList *indexList)
virtual returnValue evaluate (int number, double *x, double *result)
virtual returnValue evaluate (EvaluationBase *x)
virtual CurvatureType getCurvature ()
virtual int getGlobalIndex () const
virtual MonotonicityType getMonotonicity ()
virtual OperatorName getName ()
virtual double getScale () const
VariableType getType () const
virtual int getVariableIndex () const
virtual BooleanType isDependingOn (VariableType var) const
virtual BooleanType isDependingOn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep)
virtual BooleanType isLinearIn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep)
virtual NeutralElement isOneOrZero () const
virtual BooleanType isPolynomialIn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep)
virtual BooleanType isRationalIn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep)
virtual BooleanType isSymbolic () const
virtual BooleanType isTrivial () const
virtual BooleanType isVariable (VariableType &varType, int &component) const
virtual returnValue loadIndices (SymbolicIndexList *indexList)
virtual std::ostream & print (std::ostream &stream) const
 Projection ()
 Projection (const std::string &name_)
 Projection (VariableType variableType_, int vIndex_, const std::string &name_)
 Projection (const Projection &arg)
virtual returnValue setCurvature (CurvatureType curvature_)
virtual returnValue setMonotonicity (MonotonicityType monotonicity_)
virtual returnValue setScale (const double &scale_)
virtual returnValue setVariableExportName (const VariableType &_type, const std::vector< std::string > &_name)
virtual Operatorsubstitute (int index, const Operator *sub)
virtual ~Projection ()

Protected Member Functions

virtual returnValue ADbackwardProtected (int dim, VariableType *varType, int *component, Operator *seed, Operator **df, int &nNewIS, TreeProjection ***newIS)
virtual OperatorADforwardProtected (int dim, VariableType *varType, int *component, Operator **seed, int &nNewIS, TreeProjection ***newIS)
virtual returnValue ADsymmetricProtected (int dim, VariableType *varType, int *component, Operator *l, Operator **S, int dimS, Operator **dfS, Operator **ldf, Operator **H, int &nNewLIS, TreeProjection ***newLIS, int &nNewSIS, TreeProjection ***newSIS, int &nNewHIS, TreeProjection ***newHIS)
virtual void copy (const Projection &arg)

Protected Attributes

CurvatureType curvature
MonotonicityType monotonicity
std::string name
OperatorName operatorName
double scale
int variableIndex
VariableType variableType
int vIndex

Friends

class FunctionEvaluationTree

Detailed Description

Implements the projection operator within the symbolic operators family.

The class Projection implements the scalar-valued projection operator within the symbolic operators family.

Author:
Boris Houska, Hans Joachim Ferreau

Definition at line 55 of file projection.hpp.


Constructor & Destructor Documentation

Default constructor

Definition at line 43 of file projection.cpp.

Projection::Projection ( const std::string &  name_)

Default constructor

Definition at line 55 of file projection.cpp.

Projection::Projection ( VariableType  variableType_,
int  vIndex_,
const std::string &  name_ 
)

Default constructor

Definition at line 68 of file projection.cpp.

Default constructor

Definition at line 136 of file projection.cpp.

Projection::~Projection ( ) [virtual]

Default destructor.

Definition at line 133 of file projection.cpp.


Member Function Documentation

returnValue Projection::AD_backward ( int  dim,
VariableType varType,
int *  component,
Operator seed,
Operator **  df,
int &  nNewIS,
TreeProjection ***  newIS 
) [virtual]

Automatic Differentiation in backward mode on the symbolic
level. This function generates an expression for a
backward derivative

Returns:
SUCCESSFUL_RETURN
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
seedthe backward seed
dfthe result
nNewISthe number of new IS
newISthe new IS-pointer

Implements SmoothOperator.

Definition at line 203 of file projection.cpp.

returnValue Projection::AD_backward ( int  number,
double  seed,
double *  df 
) [virtual]

Automatic Differentiation in backward mode based on
buffered values

Returns:
SUCCESSFUL_RETURN
RET_NAN
Parameters:
numberthe buffer position
seedthe seed
dfthe derivative of the expression

Implements SmoothOperator.

Definition at line 353 of file projection.cpp.

returnValue Projection::AD_backward2 ( int  number,
double  seed1,
double  seed2,
double *  df,
double *  ddf 
) [virtual]

Automatic Differentiation in backward mode for 2nd order
derivatives based on buffered values.

Returns:
SUCCESFUL_RETURN
RET_NAN
Parameters:
numberthe buffer position
seed1the seed1
seed2the seed2
dfthe 1st derivative of the expression
ddfthe 2nd derivative of the expression

Implements SmoothOperator.

Definition at line 368 of file projection.cpp.

Operator * Projection::AD_forward ( int  dim,
VariableType varType,
int *  component,
Operator **  seed,
int &  nNewIS,
TreeProjection ***  newIS 
) [virtual]

Automatic Differentiation in forward mode on the symbolic
level. This function generates an expression for a
forward derivative

Returns:
SUCCESSFUL_RETURN
Parameters:
dimdimension of the seed
varTypethe variable types
componentand their components
seedthe forward seed
nNewISthe number of new IS
newISthe new IS-pointer

Implements SmoothOperator.

Definition at line 191 of file projection.cpp.

returnValue Projection::AD_forward ( int  number,
double *  seed,
double *  df 
) [virtual]

Automatic Differentiation in forward mode.
This function uses the intermediate
results from a buffer

Returns:
SUCCESFUL_RETURN
RET_NAN
Parameters:
numberstorage position
seedthe seed
dfthe derivative of the expression

Implements SmoothOperator.

Definition at line 346 of file projection.cpp.

returnValue Projection::AD_forward ( int  number,
double *  x,
double *  seed,
double *  f,
double *  df 
) [virtual]

Automatic Differentiation in forward mode.
This function stores the intermediate
results in a buffer (needed for 2nd order automatic
differentiation in backward mode)

Returns:
SUCCESSFUL_RETURN
RET_NAN
Parameters:
numberstorage position
xThe evaluation point x
seedthe seed
fthe value of the expression at x
dfthe derivative of the expression

Implements SmoothOperator.

Definition at line 336 of file projection.cpp.

returnValue Projection::AD_forward2 ( int  number,
double *  seed1,
double *  seed2,
double *  df,
double *  ddf 
) [virtual]

Automatic Differentiation in forward mode for
2nd derivatives.
This function uses intermediate
results from a buffer.

Returns:
SUCCESFUL_RETURN
RET_NAN
Parameters:
numberthe buffer position
seed1the seed
seed2the seed for the first derivative
dfthe derivative of the expression
ddfthe 2nd derivative of the expression

Implements SmoothOperator.

Definition at line 360 of file projection.cpp.

returnValue Projection::AD_symmetric ( int  dim,
VariableType varType,
int *  component,
Operator l,
Operator **  S,
int  dimS,
Operator **  dfS,
Operator **  ldf,
Operator **  H,
int &  nNewLIS,
TreeProjection ***  newLIS,
int &  nNewSIS,
TreeProjection ***  newSIS,
int &  nNewHIS,
TreeProjection ***  newHIS 
) [virtual]

Automatic Differentiation in symmetric mode on the symbolic
level. This function generates an expression for a
second order derivative.

Returns:
SUCCESSFUL_RETURN
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
lthe backward seed
Sforward seed matrix
dimSdimension of forward seed
dfSfirst order foward result
ldffirst order backward result
Hupper trianglular part of the Hessian
nNewLISthe number of newLIS
newLISthe new LIS-pointer
nNewSISthe number of newSIS
newSISthe new SIS-pointer
nNewHISthe number of newHIS
newHISthe new HIS-pointer

Implements SmoothOperator.

Definition at line 215 of file projection.cpp.

returnValue Projection::ADbackwardProtected ( int  dim,
VariableType varType,
int *  component,
Operator seed,
Operator **  df,
int &  nNewIS,
TreeProjection ***  newIS 
) [protected, virtual]

Automatic Differentiation in backward mode on the symbolic
level. This function generates an expression for a
backward derivative

Returns:
SUCCESSFUL_RETURN
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
seedthe backward seed
dfthe result
nNewISthe number of new IS
newISthe new IS-pointer

Reimplemented in TreeProjection.

Definition at line 479 of file projection.cpp.

Operator * Projection::ADforwardProtected ( int  dim,
VariableType varType,
int *  component,
Operator **  seed,
int &  nNewIS,
TreeProjection ***  newIS 
) [protected, virtual]

Automatic Differentiation in forward mode on the symbolic
level. This function generates an expression for a
forward derivative

Returns:
SUCCESSFUL_RETURN
Parameters:
dimdimension of the seed
varTypethe variable types
componentand their components
seedthe forward seed
nNewISthe number of new IS
newISthe new IS-pointer

Reimplemented in TreeProjection.

Definition at line 457 of file projection.cpp.

returnValue Projection::ADsymmetricProtected ( int  dim,
VariableType varType,
int *  component,
Operator l,
Operator **  S,
int  dimS,
Operator **  dfS,
Operator **  ldf,
Operator **  H,
int &  nNewLIS,
TreeProjection ***  newLIS,
int &  nNewSIS,
TreeProjection ***  newSIS,
int &  nNewHIS,
TreeProjection ***  newHIS 
) [protected, virtual]

Automatic Differentiation in symmetric mode on the symbolic
level. This function generates an expression for a
second order derivative.

Returns:
SUCCESSFUL_RETURN
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
lthe backward seed
Sforward seed matrix
dimSdimension of forward seed
dfSfirst order foward result
ldffirst order backward result
Hupper trianglular part of the Hessian
nNewLISthe number of newLIS
newLISthe new LIS-pointer
nNewSISthe number of newSIS
newSISthe new SIS-pointer
nNewHISthe number of newHIS
newHISthe new HIS-pointer

Reimplemented in TreeProjection.

Definition at line 518 of file projection.cpp.

Clears the buffer and resets the buffer size
to 1.

Returns:
SUCCESSFUL_RETURN

Implements SmoothOperator.

Definition at line 385 of file projection.cpp.

Operator * Projection::clone ( ) const [virtual]

Provides a deep copy of the expression.

Returns:
a clone of the expression.

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 142 of file projection.cpp.

void Projection::copy ( const Projection arg) [protected, virtual]

Copy function.

Reimplemented in TreeProjection.

Definition at line 148 of file projection.cpp.

Operator * Projection::differentiate ( int  index) [virtual]

Returns the derivative of the expression with respect
to the variable var(index).

Returns:
The expression for the derivative.
Parameters:
indexdiff. index

Implements SmoothOperator.

Definition at line 180 of file projection.cpp.

Enumerates all variables based on a common
IndexList.

Returns:
SUCCESFUL_RETURN

Implements SmoothOperator.

Definition at line 418 of file projection.cpp.

returnValue Projection::evaluate ( int  number,
double *  x,
double *  result 
) [virtual]

Evaluates the expression and stores the intermediate
results in a buffer (needed for automatic differentiation
in backward mode)

Returns:
SUCCESSFUL_RETURN
RET_NAN
Parameters:
numberstorage position
xthe input variable x
resultthe result

Implements SmoothOperator.

Definition at line 166 of file projection.cpp.

Evaluates the expression (templated version)

Implements SmoothOperator.

Definition at line 173 of file projection.cpp.

Returns the curvature of the expression

Returns:
CT_CONSTANT
CT_AFFINE
CT_CONVEX
CT_CONCAVE

Implements SmoothOperator.

Definition at line 316 of file projection.cpp.

int Projection::getGlobalIndex ( ) const [virtual]

Returns the global type ID of this variable

Returns:
the requested global type ID.

Reimplemented from SmoothOperator.

Definition at line 432 of file projection.cpp.

Returns the monotonicity of the expression.

Returns:
MT_NONDECREASING
MT_NONINCREASING
MT_NONMONOTONIC

Implements SmoothOperator.

Definition at line 310 of file projection.cpp.

Asks the expression for its name.

Returns:
the name of the expression.

Implements SmoothOperator.

Definition at line 391 of file projection.cpp.

double Projection::getScale ( ) const [virtual]

Asks the expression for its scale.

Returns:
the scale of the expression.

Definition at line 397 of file projection.cpp.

Asks the variable for its type.

Definition at line 438 of file projection.cpp.

int Projection::getVariableIndex ( ) const [virtual]

Asks the variable for its relative index.

Definition at line 426 of file projection.cpp.

Asks the expression whether it is depending on a certian type of
variable.

Returns:
BT_TRUE if a dependency is detected,
BT_FALSE otherwise.

Implements SmoothOperator.

Definition at line 256 of file projection.cpp.

BooleanType Projection::isDependingOn ( int  dim,
VariableType varType,
int *  component,
BooleanType implicit_dep 
) [virtual]

Checks whether the expression is depending on a variable

Returns:
BT_FALSE if no dependence is detected
BT_TRUE otherwise
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
implicit_depimplicit dependencies

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 265 of file projection.cpp.

BooleanType Projection::isLinearIn ( int  dim,
VariableType varType,
int *  component,
BooleanType implicit_dep 
) [virtual]

Checks whether the expression is linear in
(or not depending on) a variable

Returns:
BT_FALSE if no linearity is
detected
BT_TRUE otherwise
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
implicit_depimplicit dependencies

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 283 of file projection.cpp.

Checks whether the expression is zero or one

Returns:
NE_ZERO
NE_ONE
NE_NEITHER_ONE_NOR_ZERO

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 248 of file projection.cpp.

BooleanType Projection::isPolynomialIn ( int  dim,
VariableType varType,
int *  component,
BooleanType implicit_dep 
) [virtual]

Checks whether the expression is polynomial in
the specified variables

Returns:
BT_FALSE if the expression is not polynomial
BT_TRUE otherwise
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
implicit_depimplicit dependencies

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 292 of file projection.cpp.

BooleanType Projection::isRationalIn ( int  dim,
VariableType varType,
int *  component,
BooleanType implicit_dep 
) [virtual]

Checks whether the expression is rational in
the specified variables

Returns:
BT_FALSE if the expression is not rational
BT_TRUE otherwise
Parameters:
dimnumber of directions
varTypethe variable types
componentand their components
implicit_depimplicit dependencies

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 301 of file projection.cpp.

BooleanType Projection::isSymbolic ( ) const [virtual]

Asks whether all elements are purely symbolic.

Returns:
BT_TRUE if the complete tree is symbolic.
BT_FALSE otherwise (e.g. if C functions are linked).

Implements SmoothOperator.

Definition at line 451 of file projection.cpp.

BooleanType Projection::isTrivial ( ) const [virtual]

Reimplemented from Operator.

Reimplemented in TreeProjection.

Definition at line 579 of file projection.cpp.

BooleanType Projection::isVariable ( VariableType varType,
int &  component 
) const [virtual]

Asks the expression whether it is a variable.

Returns:
The answer.

Implements SmoothOperator.

Definition at line 410 of file projection.cpp.

The function loadIndices passes an IndexList through
the whole expression tree. Whenever a variable gets the
IndexList it tries to make an entry. However if a
variable recognices that it has already been added
before, it will not be allowed to make a second entry.
Note that all variables, in paticular the intermediate
states, will keep in mind whether they were allowed
to make an entry or not. This guarantees that
intermediate states are never evaluated twice if they
occur at several knots of the tree.

THIS FUNCTION IS FOR INTERNAL USE ONLY.

PLEASE CALL THIS FUNTION AT MOST ONCE FOR AN EXPRESSION
AS A KIND OF INIT ROUTINE.

Returns:
the name of the expression.
Parameters:
indexListThe index list to be filled with entries

Implements SmoothOperator.

Reimplemented in TreeProjection.

Definition at line 444 of file projection.cpp.

std::ostream & Projection::print ( std::ostream &  stream) const [virtual]

Prints the expression into a stream.

Returns:
SUCCESFUL_RETURN

Implements SmoothOperator.

Definition at line 379 of file projection.cpp.

Overwrites the curvature of the expression.
(For the case that the curvature is explicitly known)

Returns:
SUCCESSFUL_RETURN

Implements SmoothOperator.

Definition at line 329 of file projection.cpp.

Overwrites the monotonicity of the expression.
(For the case that the monotonicity is explicitly known)

Returns:
SUCCESSFUL_RETURN

Implements SmoothOperator.

Definition at line 322 of file projection.cpp.

returnValue Projection::setScale ( const double &  scale_) [virtual]

Sets the scale of the variable.

Returns:
void

Definition at line 403 of file projection.cpp.

returnValue Projection::setVariableExportName ( const VariableType _type,
const std::vector< std::string > &  _name 
) [virtual]

Sets the name of the variable that is used for code export.

Returns:
SUCCESSFUL_RETURN

Reimplemented from Operator.

Reimplemented in TreeProjection.

Definition at line 569 of file projection.cpp.

Operator * Projection::substitute ( int  index,
const Operator sub 
) [virtual]

Substitutes var(index) with the expression sub.

Returns:
The substituted expression.
Parameters:
indexsubst. index
subthe substitution

Implements SmoothOperator.

Definition at line 236 of file projection.cpp.


Friends And Related Function Documentation

friend class FunctionEvaluationTree [friend]

Definition at line 58 of file projection.hpp.


Member Data Documentation

Definition at line 555 of file projection.hpp.

Definition at line 556 of file projection.hpp.

std::string Projection::name [protected]

Definition at line 551 of file projection.hpp.

Definition at line 553 of file projection.hpp.

double Projection::scale [protected]

Definition at line 550 of file projection.hpp.

int Projection::variableIndex [protected]

Definition at line 548 of file projection.hpp.

Definition at line 547 of file projection.hpp.

int Projection::vIndex [protected]

Definition at line 549 of file projection.hpp.


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


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Sat Jun 8 2019 19:40:25