183 abstol = reltol = 0.0;
189 size_t iBest, iWorst;
210 size_t jcount, np1, i, j;
212 bool ok, reflok, extnok, contok, quit, found;
218 const COptItem & OptItem = *(*mpOptItem)[i];
235 (*(*mpSetCalculateVariable)[i])(
mCurrent[i]);
256 np1 = mVariableSize + 1;
267 for (j = 0; j < mVariableSize &&
mContinue; ++j)
275 const COptItem & OptItem = *(*mpOptItem)[j];
285 (*(*mpSetCalculateVariable)[j])(
mCurrent[j]);
300 (*(*mpSetCalculateVariable)[j])(
mCurrent[j]);
305 while (!found && !quit && mContinue)
309 for (jcount = 1; jcount <= konvge; ++jcount)
321 for (i = 1; i < np1; ++i)
344 for (j = 0; j < np1; ++j)
356 (*(*mpSetCalculateVariable)[i])(
mCurrent[i]);
387 (*(*mpSetCalculateVariable)[i])(
mCurrent[i]);
427 for (i = 0; i < np1; ++i)
442 if (L == 0 || L == 1)
453 (*(*mpSetCalculateVariable)[i])(
mCurrent[i]);
474 for (j = 0; j < np1; ++j)
480 (*(*mpSetCalculateVariable)[i])(
mCurrent[i]);
534 for (i = 0; i < np1; ++i)
546 found = (sqrt(curmin - sum * sum) <
mTolerance);
551 if (quit || !mContinue)
goto Finish;
566 (*(*mpSetCalculateVariable)[i])(
mCurrent[i] + delta);
573 (*(*mpSetCalculateVariable)[i])(
mCurrent[i] - delta);
580 (*(*mpSetCalculateVariable)[i])(
mCurrent[i]);
595 del =
std::max(del * factor, 100.0 * std::numeric_limits< C_FLOAT64 >::epsilon());
658 mBestValue = std::numeric_limits<C_FLOAT64>::infinity();
virtual ~COptMethodNelderMead()
virtual C_INT32 checkConstraint() const
CMatrix< C_FLOAT64 > mSimplex
virtual bool initialize()
unsigned C_INT32 mIteration
COptMethodNelderMead(const COptMethodNelderMead &src, const CCopasiContainer *pParent=NULL)
virtual bool initialize()
unsigned C_INT32 mIterationLimit
void resize(size_t size, const bool ©=false)
C_FLOAT64 mEvaluationValue
CVector< C_FLOAT64 > mStep
COptProblem * mpOptProblem
virtual void output(const COutputInterface::Activity &activity)
CVector< C_FLOAT64 > mValue
virtual bool progressItem(const size_t &handle)
CVector< C_FLOAT64 > mCentroid
size_t addItem(const std::string &name, const std::string &value, const std::string *pEndValue=NULL)
const C_FLOAT64 & evaluate()
const std::vector< UpdateMethod * > * mpSetCalculateVariable
const Value & getValue() const
const C_FLOAT64 * getLowerBoundValue() const
const CVector< C_FLOAT64 > & getSolutionVariables() const
virtual bool setSolution(const C_FLOAT64 &value, const CVector< C_FLOAT64 > &variables)
virtual bool finishItem(const size_t &handle)
virtual void resize(size_t rows, size_t cols, const bool ©=false)
virtual bool checkFunctionalConstraints()
const C_FLOAT64 & getStartValue() const
const std::vector< COptItem * > * mpOptItem
const C_FLOAT64 * getUpperBoundValue() const
bool addParameter(const CCopasiParameter ¶meter)
CVector< C_FLOAT64 > mCurrent
virtual bool checkParametricConstraints()
const C_FLOAT64 & getCalculateValue() const
CCopasiObject * addObjectReference(const std::string &name, CType &reference, const unsigned C_INT32 &flag=0)
CProcessReport * mpCallBack