37 CRandom * COptItem::mpRandom = NULL;
40 const std::string & name):
43 mpParmLowerBound(NULL),
44 mpParmUpperBound(NULL),
45 mpParmStartValue(NULL),
55 mLastStartValue(std::numeric_limits<
C_FLOAT64 >::quiet_NaN())
62 mpParmLowerBound(NULL),
63 mpParmUpperBound(NULL),
64 mpParmStartValue(NULL),
74 mLastStartValue(src.mLastStartValue)
81 mpParmLowerBound(NULL),
82 mpParmUpperBound(NULL),
83 mpParmStartValue(NULL),
93 mLastStartValue(std::numeric_limits<
C_FLOAT64 >::quiet_NaN())
114 assert(pDataModel != NULL);
118 if (pObject == NULL || !pObject->
isValueDbl())
137 return "Invalid Optimization Item";
144 if (lowerBound[0] ==
'-' &&
145 lowerBound[lowerBound.length() - 1] ==
'%' &&
146 isNumber(lowerBound.substr(1, lowerBound.length() - 2)))
148 std::stringstream LowerBound;
151 LowerBound << StartValue + fabs(StartValue) *
strToDouble(lowerBound.c_str(), NULL) / 100.0;
169 if (upperBound[0] ==
'+' &&
170 upperBound[upperBound.length() - 1] ==
'%' &&
171 isNumber(upperBound.substr(1, upperBound.length() - 2)))
173 std::stringstream UpperBound;
176 UpperBound << StartValue + fabs(StartValue) *
strToDouble(upperBound.c_str(), NULL) / 100.0;
207 assert(pDataModel != NULL);
210 if (pObject != NULL &&
266 if (la < 1.8 || !(mn > 0.0))
267 RandomValue = mn + pRandom->
getRandomCC() * (mx - mn);
273 la = log10(mx) + log10(-mn);
276 RandomValue = mn + pRandom->
getRandomCC() * (mx - mn);
286 while ((RandomValue < mn) || (RandomValue > mx));
298 if (la < 1.8 || !(mn > 0.0))
299 RandomValue = - (mn + pRandom->
getRandomCC() * (mx - mn));
307 RandomValue = (mx + mn) * 0.5;
448 assert(pDataModel != NULL);
478 assert(pDataModel != NULL);
507 if (o.
mpObject == NULL && !const_cast<COptItem *>(&o)->compile())
508 return os <<
"Invalid Optimization Item";
CCopasiDataModel * getObjectDataModel()
virtual C_INT32 checkConstraint() const
CCopasiObject * getDataObject(const CCopasiObjectName &CN) const
virtual std::string getObjectDisplayName(bool regular=true, bool richtext=false) const
void clearDirectDependencies()
virtual const C_FLOAT64 * getObjectValue() const
bool isNumber(const std::string &str)
UpdateMethod * getUpdateMethod() const
const CCopasiObjectName getObjectCN() const
bool checkLowerBound(const C_FLOAT64 &value) const
virtual C_FLOAT64 getRandomNormal(const C_FLOAT64 &mean, const C_FLOAT64 &sd)
virtual C_FLOAT64 getConstraintViolation() const
const CCopasiObject * getObject() const
bool setLowerBound(const CCopasiObjectName &lowerBound)
const std::string getUpperBound() const
const CCopasiObject * mpLowerObject
static CRandom * mpRandom
const C_FLOAT64 & getLastStartValue() const
bool setObjectCN(const CCopasiObjectName &objectCN)
bool setUpperBound(const CCopasiObjectName &upperBound)
const C_FLOAT64 * mpUpperBound
bool compileLowerBound(const std::vector< CCopasiContainer * > &listOfContainer)
CRegisteredObjectName * pCN
bool checkUpperBound(const C_FLOAT64 &value) const
void addDirectDependency(const CCopasiObject *pObject)
static CRandom * createGenerator(CRandom::Type type=CRandom::mt19937, unsigned C_INT32 seed=0)
virtual C_FLOAT64 getRandomCC()
static const std::vector< CCopasiContainer * > EmptyList
const Value & getValue() const
C_FLOAT64 * mpParmStartValue
bool setStartValue(const C_FLOAT64 &value)
const CCopasiObject * mpUpperObject
Header file of class CCopasiContainer.
virtual bool compile(const std::vector< CCopasiContainer * > listOfContainer=CCopasiContainer::EmptyList)
const CCopasiObject * mpObject
virtual UpdateMethod * getUpdateMethod() const
const C_FLOAT64 * mpLowerBound
std::string * mpParmUpperBound
std::string * mpParmLowerBound
const C_FLOAT64 & getStartValue() const
const std::string getLowerBound() const
double strToDouble(const char *str, char const **pTail)
void initializeParameter()
std::ostream & operator<<(std::ostream &os, const COptItem &o)
C_FLOAT64 mLastStartValue
void rememberStartValue()
virtual void * getValuePointer() const
CCopasiParameter * assertParameter(const std::string &name, const CCopasiParameter::Type type, const CType &defaultValue)
C_FLOAT64 getRandomValue(CRandom *pRandom=NULL)
virtual bool isValid() const
const C_FLOAT64 * mpObjectValue
std::string * mpParmObjectCN
std::string getObjectDisplayName() const
bool compileUpperBound(const std::vector< CCopasiContainer * > &listOfContainer)