COPASI API
4.40.278
|
#include <COptMethodSteepestDescent.h>
Public Member Functions | |
COptMethodSteepestDescent (const CDataContainer *pParent, const CTaskEnum::Method &methodType=CTaskEnum::Method::SteepestDescent, const CTaskEnum::Task &taskType=CTaskEnum::Task::optimization) | |
COptMethodSteepestDescent (const COptMethodSteepestDescent &src, const CDataContainer *pParent) | |
virtual const CVector< C_FLOAT64 > * | getBestParameters () const |
virtual C_FLOAT64 | getBestValue () const |
virtual const CVector< C_FLOAT64 > * | getCurrentParameters () const |
virtual C_FLOAT64 | getCurrentValue () const |
virtual unsigned C_INT32 | getMaxLogVerbosity () const |
virtual bool | optimise () |
virtual | ~COptMethodSteepestDescent () |
![]() | |
COptMethod (const CDataContainer *pParent, const CTaskEnum::Method &methodType, const CTaskEnum::Task &taskType, const bool ¶llel) | |
COptMethod (const COptMethod &src, const CDataContainer *pParent) | |
const COptLog & | getMethodLog () const |
virtual bool | isValidProblem (const CCopasiProblem *pProblem) |
void | setProblem (COptProblem *problem) |
virtual | ~COptMethod () |
![]() | |
CCopasiMethod (const CCopasiMethod &src, const CDataContainer *pParent) | |
virtual void | clearCallBack () |
const CProcessReportLevel & | getCallBack () const |
CMathContainer * | getMathContainer () const |
const CTaskEnum::Method & | getSubType () const |
const CTaskEnum::Task & | getType () const |
virtual void | load (CReadConfig &configBuffer, CReadConfig::Mode mode=CReadConfig::SEARCH) |
CCopasiMethod & | operator= (const CCopasiMethod &rhs) |
virtual void | print (std::ostream *ostream) const |
virtual void | printResult (std::ostream *ostream) const |
virtual bool | setCallBack (CProcessReportLevel callBack) |
void | setMathContainer (CMathContainer *pContainer) |
virtual | ~CCopasiMethod () |
![]() | |
bool | addGroup (const std::string &name) |
void | addParameter (CCopasiParameter *pParameter) |
bool | addParameter (const CCopasiParameter ¶meter) |
bool | addParameter (const std::string &name, const CCopasiParameter::Type type, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All) |
template<class CType > | |
bool | addParameter (const std::string &name, const CCopasiParameter::Type type, const CType &value, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All) |
virtual bool | applyData (const CData &data, CUndoData::CChangeSet &changes) |
CCopasiParameterGroup * | assertGroup (const std::string &name, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All) |
template<class CType > | |
CType * | assertParameter (const std::string &name, const CCopasiParameter::Type type, const CType &defaultValue, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All) |
index_iterator | beginIndex () const |
const_name_iterator | beginName () const |
CCopasiParameterGroup (const CCopasiParameterGroup &src, const CDataContainer *pParent=NULL) | |
CCopasiParameterGroup (const std::string &name, const CDataContainer *pParent=NO_PARENT, const std::string &objectType="ParameterGroup") | |
void | clear () |
virtual void | createUndoData (CUndoData &undoData, const CUndoData::Type &type, const CData &oldData=CData(), const CCore::Framework &framework=CCore::Framework::ParticleNumbers) const |
virtual bool | elevateChildren () |
index_iterator | endIndex () const |
const_name_iterator | endName () const |
CCopasiParameterGroup & | getElementTemplates () |
const CCopasiParameterGroup & | getElementTemplates () const |
CCopasiParameterGroup * | getGroup (const size_t &index) |
const CCopasiParameterGroup * | getGroup (const size_t &index) const |
CCopasiParameterGroup * | getGroup (const std::string &name) |
const CCopasiParameterGroup * | getGroup (const std::string &name) const |
virtual size_t | getIndex (const CDataObject *pObject) const |
size_t | getIndex (const std::string &name) const |
std::string | getKey (const size_t &index) const |
std::string | getKey (const std::string &name) const |
virtual const std::string & | getName (const size_t &index) const |
virtual const CObjectInterface * | getObject (const CCommonName &cn) const |
CCopasiParameter * | getParameter (const size_t &index) |
const CCopasiParameter * | getParameter (const size_t &index) const |
CCopasiParameter * | getParameter (std::string name) |
const CCopasiParameter * | getParameter (std::string name) const |
CCopasiParameter::Type | getType (const size_t &index) const |
CCopasiParameter::Type | getType (const std::string &name) const |
std::string | getUniqueParameterName (const CCopasiParameter *pParameter) const |
template<class CType > | |
CType & | getValue (const size_t &index) |
template<class CType > | |
const CType & | getValue (const size_t &index) const |
template<class CType > | |
CType & | getValue (const std::string &name) |
template<class CType > | |
const CType & | getValue (const std::string &name) const |
bool | haveTemplate () const |
virtual CUndoObjectInterface * | insert (const CData &data) |
CCopasiParameterGroup & | operator= (const CCopasiParameterGroup &rhs) |
virtual bool | remove (CDataObject *pObject) |
bool | removeParameter (CCopasiParameter *pParameter) |
bool | removeParameter (const size_t &index) |
bool | removeParameter (const std::string &name) |
virtual void | setUserInterfaceFlag (const UserInterfaceFlag &flag) |
template<class CType > | |
bool | setValue (const size_t &index, const CType &value) |
template<class CType > | |
bool | setValue (const std::string &name, const CType &value) |
size_t | size (const UserInterfaceFlag &require=UserInterfaceFlag::None, const UserInterfaceFlag &exclude=UserInterfaceFlag::None) const |
bool | swap (const size_t &iFrom, const size_t &iTo) |
bool | swap (index_iterator &from, index_iterator &to) |
virtual CData | toData () const |
virtual void | updateIndex (const size_t &index, const CUndoObjectInterface *pUndoObject) |
virtual | ~CCopasiParameterGroup () |
![]() | |
CCopasiParameter (const CCopasiParameter &src, const CDataContainer *pParent) | |
CCopasiParameter (const std::string &name, const Type &type, const void *pValue=NULL, const CDataContainer *pParent=NO_PARENT, const std::string &objectType="Parameter") | |
virtual CCommonName | getCN () const override |
template<class CType > | |
const CType & | getDefault () const |
virtual const std::string & | getKey () const override |
virtual std::string | getObjectDisplayName () const override |
const CCopasiParameter::Type & | getType () const |
const UserInterfaceFlag & | getUserInterfaceFlag () const |
template<class CType > | |
std::vector< std::pair< CType, CType > > & | getValidValues () |
template<class CType > | |
const std::vector< std::pair< CType, CType > > & | getValidValues () const |
void * | getValidValuesPointer () const |
template<class CType > | |
CType & | getValue () |
template<class CType > | |
const CType & | getValue () const |
virtual void * | getValuePointer () const override |
CDataObject * | getValueReference () const |
bool | hasValidValues () const |
bool | isBasic () const |
bool | isDefault () const |
bool | isEditable () const |
bool | isUnsupported () const |
bool | isValidValue (const bool &value) const |
bool | isValidValue (const C_FLOAT64 &value) const |
bool | isValidValue (const C_INT32 &value) const |
bool | isValidValue (const CCommonName &value) const |
template<class CType > | |
bool | isValidValue (const CType &) const |
bool | isValidValue (const std::string &value) const |
bool | isValidValue (const std::vector< CCopasiParameter * > &value) const |
bool | isValidValue (const unsigned C_INT32 &value) const |
CCopasiParameter & | operator= (const CCopasiParameter &rhs) |
template<class CType > | |
bool | setDefault (const CType &defaultValue) |
bool | setDefault (const std::vector< CCopasiParameter * > &defaultValue) |
virtual bool | setObjectParent (const CDataContainer *pParent) override |
template<class CType , class Enum > | |
bool | setValidValues (const CEnumAnnotation< CType, Enum > &validValues) |
template<class CType > | |
bool | setValidValues (const std::vector< std::pair< CType, CType > > &validValues) |
template<class CType > | |
bool | setValue (const CType &value) |
bool | setValue (const std::vector< CCopasiParameter * > &value) |
virtual | ~CCopasiParameter () |
![]() | |
virtual bool | add (CDataObject *pObject, const bool &adopt=true) |
virtual bool | appendDeletedDependentData (CUndoData &undoData) const |
CDataContainer (const CDataContainer &src, const CDataContainer *pParent) | |
CDataContainer (const std::string &name, const CDataContainer *pParent=NO_PARENT, const std::string &type="CN", const CFlags< Flag > &flag=CFlags< Flag >::None) | |
virtual std::string | getChildObjectUnits (const CDataObject *pObject) const |
void | getDescendants (CDataObject::DataObjectSet &descendants, const bool &recursive=false) const |
virtual objectMap & | getObjects () |
virtual const objectMap & | getObjects () const |
virtual const std::string | getUnits () const override |
virtual const CDataObject * | getValueObject () const override |
void | objectRenamed (CDataObject *pObject, const std::string &oldName) |
virtual | ~CDataContainer () |
![]() | |
void | addIssue (const CIssue &issue) |
void | addReference (const CDataContainer *pReference) |
virtual void | calculateValue () override |
CDataObject (const CDataObject &src, const CDataContainer *pParent=NULL) | |
virtual void | destruct () override |
virtual const CDataObject * | getDataObject () const override |
CDataContainer * | getObjectAncestor (const std::string &type) const |
CDataModel * | getObjectDataModel () const |
const CObjectInterface * | getObjectFromCN (const CCommonName &cn) const |
const std::string & | getObjectName () const |
CDataContainer * | getObjectParent () const |
const std::string & | getObjectType () const |
virtual const CObjectInterface::ObjectSet & | getPrerequisites () const override |
virtual const CValidity & | getValidity () const override |
bool | hasFlag (const Flag &flag) const |
virtual bool | isPrerequisiteForContext (const CObjectInterface *pObject, const CCore::SimulationContextFlag &context, const CObjectInterface::ObjectSet &changedObjects) const override |
bool | prerequisitsContains (const DataObjectSet &objects) const |
void | removeIssue (const CIssue &issue) |
void | removeReference (const CDataContainer *pReference) |
bool | setObjectName (const std::string &name) |
void | validityChanged (const CValidity &changedValidity) override |
void | validityRemoved (const CValidity &changedValidity) |
virtual | ~CDataObject () |
![]() | |
CObjectInterface () | |
CObjectInterface (const CObjectInterface &src) | |
virtual | ~CObjectInterface () |
![]() | |
CUndoObjectInterface () | |
CUndoObjectInterface (const CUndoObjectInterface &src) | |
bool | generateUuid () |
const xg::Guid & | getUuid () const |
bool | setUuid (const std::string &uuid) |
bool | setUuid (const xg::Guid &uuid) |
virtual | ~CUndoObjectInterface () |
Private Member Functions | |
virtual bool | cleanup () |
COptMethodSteepestDescent () | |
C_FLOAT64 | descentLine (const C_FLOAT64 &x) |
const C_FLOAT64 & | evaluate () |
void | gradient () |
virtual bool | initialize () |
void | initObjects () |
Private Attributes | |
C_FLOAT64 | mBestValue |
bool | mContinue |
unsigned C_INT32 | mCurrentIteration |
CVector< C_FLOAT64 > | mGradient |
CVector< C_FLOAT64 > | mIndividual |
unsigned C_INT32 | mIterations |
FDescent * | mpDescent |
C_FLOAT64 | mTolerance |
C_FLOAT64 | mValue |
size_t | mVariableSize |
Additional Inherited Members | |
![]() | |
typedef CDataObjectMap::const_type_iterator< CCopasiParameter > | const_name_iterator |
typedef std::vector< CCopasiParameter * > | elements |
typedef elements::iterator | index_iterator |
typedef CDataObjectMap::type_iterator< CCopasiParameter > | name_iterator |
![]() | |
enum class | eUserInterfaceFlag { editable , basic , unsupported , __SIZE } |
enum class | Type { DOUBLE = 0 , UDOUBLE , INT , UINT , BOOL , GROUP , STRING , CN , KEY , FILE , EXPRESSION , INVALID , __SIZE } |
typedef CFlags< eUserInterfaceFlag > | UserInterfaceFlag |
![]() | |
typedef CDataObjectMap | objectMap |
![]() | |
typedef std::set< const CDataObject * > | DataObjectSet |
enum | Flag { Container , Vector , Matrix , NameVector , Reference , ValueBool , ValueInt , ValueInt64 , ValueDbl , NonUniqueName , StaticString , ValueString , Separator , DisplayName , ModelEntity , Array , DataModel , Root , Gui , __SIZE } |
![]() | |
typedef std::vector< const CDataContainer * > | ContainerList |
typedef std::set< const CObjectInterface * > | ObjectSet |
![]() | |
static void | allocateValidValues (const Type &type, void *&pValidValues) |
static void | allocateValue (const Type &type, void *&pValue) |
static void | assignValue (const Type &type, void *&pValue, const void *pNewValue) |
static void | deleteValidValues (const Type &type, void *&pValidValues) |
static void | deleteValue (const Type &type, void *&pValue) |
static CCopasiParameter * | fromData (const CData &data, CUndoObjectInterface *pParent) |
![]() | |
static CDataContainer * | fromData (const CData &data, CUndoObjectInterface *pParent) |
![]() | |
static CDataObject * | fromData (const CData &data, CUndoObjectInterface *pParent) |
static void | sanitizeObjectName (std::string &name) |
![]() | |
static const CDataObject * | DataObject (const CObjectInterface *pInterface) |
static CObjectInterface * | GetObjectFromCN (const ContainerList &listOfContainer, const CCommonName &objName) |
![]() | |
template<class CType > | |
static CType * | fromData (const CData &, CUndoObjectInterface *) |
![]() | |
static const CEnumAnnotation< std::string, Type > | TypeName |
static const CEnumAnnotation< std::string, Type > | XMLType |
![]() | |
static const CObjectInterface::ContainerList | EmptyList |
![]() | |
virtual void | signalMathContainerChanged () |
![]() | |
CCopasiMethod (const CCopasiMethod &src) | |
CCopasiMethod (const CDataContainer *pParent, const CTaskEnum::Method &methodType, const CTaskEnum::Task &taskType) | |
![]() | |
CCopasiParameterGroup () | |
![]() | |
CCopasiParameter (const CCopasiParameter &src) | |
![]() | |
template<class CType > | |
CDataMatrixReference< CType > * | addMatrixReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None) |
template<class CType > | |
CDataObjectReference< CType > * | addObjectReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None) |
template<class CType > | |
CDataVectorReference< CType > * | addVectorReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None) |
CDataContainer (const CDataContainer &src) | |
void | initObjects () |
![]() | |
CDataObject () | |
CDataObject (const std::string &name, const CDataContainer *pParent=static_cast< CDataContainer * >((void *) 0), const std::string &type="CN", const CFlags< Flag > &flag=CFlags< Flag >::None) | |
![]() | |
static std::pair< C_FLOAT64, bool > | objectiveValue (COptProblem *pProblem, const CVectorCore< C_FLOAT64 > ¶meters) |
static void | reflect (COptProblem *pProblem, const C_FLOAT64 &bestValue, C_FLOAT64 &objectiveValue) |
![]() | |
unsigned C_INT32 | mLogVerbosity |
CMathContext | mMathContext |
COptLog | mMethodLog |
bool | mParallel |
COptTask * | mpParentTask |
COptProblemContext | mProblemContext |
![]() | |
CMathContainer * | mpContainer |
CProcessReportLevel | mProcessReport |
![]() | |
std::string | mKey |
void * | mpDefault |
void * | mpValidValues |
void * | mpValue |
CDataObject * | mpValueReference |
UserInterfaceFlag | mUserInterfaceFlag |
![]() | |
objectMap | mObjects |
![]() | |
ObjectSet | mPrerequisits |
std::set< CDataContainer * > | mReferences |
![]() | |
CValidity | mValidity |
|
private |
Default constructor.
COptMethodSteepestDescent::COptMethodSteepestDescent | ( | const CDataContainer * | pParent, |
const CTaskEnum::Method & | methodType = CTaskEnum::Method::SteepestDescent , |
||
const CTaskEnum::Task & | taskType = CTaskEnum::Task::optimization |
||
) |
Specific constructor
const | CDataContainer * pParent |
const | CTaskEnum::Method & methodType (default: SteepestDescent) |
const | CTaskEnum::Task & taskType (default: optimization) |
References CCopasiParameterGroup::assertParameter(), C_FLOAT64, C_INT32, CCopasiParameter::DOUBLE, and CCopasiParameter::UINT.
COptMethodSteepestDescent::COptMethodSteepestDescent | ( | const COptMethodSteepestDescent & | src, |
const CDataContainer * | pParent | ||
) |
Copy Constructor
const | COptMethodSteepestDescent & src |
|
virtual |
|
privatevirtual |
Cleanup arrays and pointers.
Reimplemented from COptMethod.
Referenced by initialize(), and ~COptMethodSteepestDescent().
Descent int the direction of the gradient with step x and evaluate the objective function
const | C_FLOAT64 & x |
References CVectorCore< CType >::array(), C_FLOAT64, evaluate(), CContext< Data >::master(), mGradient, mIndividual, COptMethod::mProblemContext, and mVariableSize.
Referenced by optimise().
|
private |
Evaluate the objective function for the current parameters
References CContext< Data >::master(), mBestValue, mContinue, COptMethod::mProblemContext, and mValue.
Referenced by descentLine(), gradient(), and optimise().
|
virtual |
|
virtual |
|
virtual |
Returns the maximum verbosity at which the method can log.
Reimplemented from COptMethod.
|
private |
Calculate the gradient of the objective at the current parameters
References CMatrix< CType >::array(), CVectorCore< CType >::array(), C_FLOAT64, evaluate(), CFitProblem::getResiduals(), CFitProblem::getTimeSensJac(), CFitProblem::getUseTimeSens(), CContext< Data >::master(), mGradient, COptMethod::mProblemContext, mVariableSize, and CVectorCore< CType >::size().
Referenced by optimise().
|
privatevirtual |
Initialize arrays and pointer.
Reimplemented from COptMethod.
References cleanup(), COptMethod::initialize(), CContext< Data >::master(), mBestValue, mContinue, mGradient, mIndividual, mIterations, COptMethod::mProblemContext, mTolerance, mVariableSize, CVector< CType >::resize(), and CFitProblem::setResidualsRequired().
Referenced by optimise().
|
private |
Initialize contained objects.
References CDataContainer::addObjectReference(), mCurrentIteration, and CDataObject::ValueInt.
|
virtual |
Execute the optimization algorithm calling simulation routine when needed. It is noted that this procedure can give feedback of its progress by the callback function set with SetCallback.
Reimplemented from COptMethod.
References C_FLOAT64, C_INT, COptItem::checkConstraint(), descentLine(), COutputInterface::DURING, COptLog::enterLogEntry(), evaluate(), FminBrent(), COptItem::getLowerBoundValue(), COptItem::getStartValue(), COptItem::getUpperBoundValue(), gradient(), initialize(), CContext< Data >::master(), max, mBestValue, mContinue, mCurrentIteration, mGradient, mIndividual, mIterations, COptMethod::mLogVerbosity, COptMethod::mMethodLog, COutputInterface::MONITORING, mpDescent, COptMethod::mpParentTask, COptMethod::mProblemContext, mTolerance, mVariableSize, and CCopasiTask::output().
|
private |
The best value found so far.
Referenced by evaluate(), getBestValue(), getCurrentValue(), initialize(), and optimise().
|
private |
Indicates whether there the executions shall continue
Referenced by evaluate(), initialize(), and optimise().
|
private |
The current iteration
Referenced by initObjects(), and optimise().
The gradient vector for the objective function
Referenced by descentLine(), gradient(), initialize(), and optimise().
A vector of parameters of the current individual
Referenced by descentLine(), getBestParameters(), getCurrentParameters(), initialize(), and optimise().
|
private |
The maximum number of iterations.
Referenced by initialize(), and optimise().
|
private |
Functor pointing to the descent method.
Referenced by optimise(), and ~COptMethodSteepestDescent().
|
private |
The tolerance
Referenced by initialize(), and optimise().
|
private |
array of values of objective function f/ individuals
Referenced by evaluate().
|
private |
number of parameters
Referenced by descentLine(), gradient(), initialize(), and optimise().