
Public Member Functions | |
| QuasiNewtonImpl (QuasiNewton *p) | |
| ~QuasiNewtonImpl () throw () | |
| void | solve () |
Private Member Functions | |
| bool | evaluateFunc () |
| bool | calcDefMatrix () |
| void | runLinearSearch (const ::scsolver::Timer &timer) |
| bool | runIteration (const ::scsolver::Timer &timer) |
Static Private Member Functions | |
| static double | norm (const Matrix &mxX) |
| static double | evalF (BaseFuncObj &oF, const Matrix &mxVars, vector< double > &fVars) |
| static double | evalF (BaseFuncObj &oF, const Matrix &mxVars) |
Private Attributes | |
| QuasiNewton * | m_pSelf |
| unsigned long | m_nIter |
| Model * | m_pModel |
| Matrix | m_mxVars |
| Matrix | m_mxdVars |
| Matrix | m_mxVarsOld |
| Matrix | m_mxdF |
| Matrix | m_mxdFOld |
| Matrix | m_mxD |
| Matrix | m_mxDOld |
| double | m_fF |
| double | m_fFOld |
| double | m_fNorm |
| double | m_fTolerance |
| BaseFuncObj * | m_pFuncObj |
| bool | m_debug |
Definition at line 57 of file quasinewton.cxx.
| scsolver::numeric::nlp::QuasiNewtonImpl::QuasiNewtonImpl | ( | QuasiNewton * | p | ) | [inline] |
Definition at line 99 of file quasinewton.cxx.
| scsolver::numeric::nlp::QuasiNewtonImpl::~QuasiNewtonImpl | ( | ) | throw () [inline] |
Definition at line 118 of file quasinewton.cxx.
| static double scsolver::numeric::nlp::QuasiNewtonImpl::norm | ( | const Matrix & | mxX | ) | [inline, static, private] |
Calculate the norm of a set of variables.
| mxX | one-column matrix representing delta f(x) vector |
Definition at line 66 of file quasinewton.cxx.
References scsolver::numeric::Matrix::rows().
Referenced by evaluateFunc().
| static double scsolver::numeric::nlp::QuasiNewtonImpl::evalF | ( | BaseFuncObj & | oF, | |
| const Matrix & | mxVars, | |||
| vector< double > & | fVars | |||
| ) | [inline, static, private] |
Definition at line 81 of file quasinewton.cxx.
References scsolver::numeric::BaseFuncObj::eval(), scsolver::numeric::Matrix::rows(), and scsolver::numeric::BaseFuncObj::setVars().
Referenced by evalF(), and evaluateFunc().
| static double scsolver::numeric::nlp::QuasiNewtonImpl::evalF | ( | BaseFuncObj & | oF, | |
| const Matrix & | mxVars | |||
| ) | [inline, static, private] |
| void scsolver::numeric::nlp::QuasiNewtonImpl::solve | ( | ) | [inline] |
Definition at line 120 of file quasinewton.cxx.
References scsolver::numeric::Matrix::clear(), scsolver::numeric::nlp::Model::getFuncObject(), scsolver::numeric::nlp::BaseAlgorithm::getModel(), scsolver::numeric::nlp::Model::getPrecision(), scsolver::numeric::nlp::Model::getVars(), m_fF, m_fFOld, m_fNorm, m_fTolerance, m_mxD, m_mxdF, m_mxdFOld, m_mxDOld, m_mxdVars, m_mxVars, m_mxVarsOld, m_nIter, m_pFuncObj, m_pModel, m_pSelf, and runIteration().
| bool scsolver::numeric::nlp::QuasiNewtonImpl::evaluateFunc | ( | ) | [inline, private] |
Definition at line 179 of file quasinewton.cxx.
References evalF(), scsolver::numeric::BaseFuncObj::getSingleVarFuncObj(), m_debug, m_fF, m_fFOld, m_fNorm, m_fTolerance, m_mxdF, m_mxVars, m_pFuncObj, norm(), scsolver::numeric::Matrix::print(), scsolver::numeric::NumericalDiffer::run(), scsolver::numeric::NumericalDiffer::setFuncObject(), scsolver::numeric::NumericalDiffer::setPrecision(), scsolver::numeric::NumericalDiffer::setVariable(), scsolver::numeric::BaseFuncObj::setVars(), and scsolver::numeric::Matrix::trans().
Referenced by runIteration().
| bool scsolver::numeric::nlp::QuasiNewtonImpl::calcDefMatrix | ( | ) | [inline, private] |
Calculate or initialize deflection matrix (D).
Definition at line 240 of file quasinewton.cxx.
References scsolver::numeric::Matrix::empty(), scsolver::numeric::nlp::Model::getGoal(), scsolver::numeric::nlp::Model::getPrecision(), scsolver::numeric::GOAL_MAXIMIZE, m_debug, m_fF, m_fNorm, m_mxD, m_mxdF, m_mxdFOld, m_mxDOld, m_mxdVars, m_mxVars, m_mxVarsOld, m_pModel, scsolver::numeric::Matrix::print(), scsolver::numeric::Matrix::rows(), scsolver::numeric::Matrix::swap(), and scsolver::numeric::Matrix::trans().
Referenced by runIteration().
| void scsolver::numeric::nlp::QuasiNewtonImpl::runLinearSearch | ( | const ::scsolver::Timer & | timer | ) | [inline, private] |
Definition at line 291 of file quasinewton.cxx.
References scsolver::numeric::nlp::Model::getGoal(), scsolver::numeric::BaseFuncObj::getSingleVarFuncObjByRatio(), scsolver::numeric::BaseFuncObj::getVars(), m_mxdVars, m_mxVars, m_mxVarsOld, m_pFuncObj, m_pModel, scsolver::matrixToVector(), scsolver::numeric::BaseLineSearch::setFuncObj(), scsolver::numeric::BaseLineSearch::setGoal(), scsolver::numeric::BaseFuncObj::setVars(), scsolver::numeric::QuadFitLineSearch::solve(), and scsolver::vectorToMatrix().
Referenced by runIteration().
| bool scsolver::numeric::nlp::QuasiNewtonImpl::runIteration | ( | const ::scsolver::Timer & | timer | ) | [inline, private] |
Definition at line 313 of file quasinewton.cxx.
References calcDefMatrix(), evaluateFunc(), scsolver::numeric::nlp::Model::getPrecision(), m_debug, m_fF, m_fFOld, m_mxD, m_mxdF, m_mxdFOld, m_mxDOld, m_mxVars, m_nIter, m_pModel, scsolver::numeric::Matrix::print(), scsolver::repeatString(), runLinearSearch(), and scsolver::numeric::Matrix::trans().
Referenced by solve().
unsigned long scsolver::numeric::nlp::QuasiNewtonImpl::m_nIter [private] |
Definition at line 162 of file quasinewton.cxx.
Referenced by calcDefMatrix(), runIteration(), runLinearSearch(), and solve().
Definition at line 163 of file quasinewton.cxx.
Referenced by calcDefMatrix(), evaluateFunc(), runIteration(), runLinearSearch(), and solve().
Definition at line 164 of file quasinewton.cxx.
Referenced by calcDefMatrix(), runLinearSearch(), and solve().
Definition at line 165 of file quasinewton.cxx.
Referenced by calcDefMatrix(), runLinearSearch(), and solve().
Definition at line 166 of file quasinewton.cxx.
Referenced by calcDefMatrix(), evaluateFunc(), runIteration(), and solve().
Definition at line 167 of file quasinewton.cxx.
Referenced by calcDefMatrix(), runIteration(), and solve().
Definition at line 168 of file quasinewton.cxx.
Referenced by calcDefMatrix(), runIteration(), and solve().
Definition at line 169 of file quasinewton.cxx.
Referenced by calcDefMatrix(), runIteration(), and solve().
double scsolver::numeric::nlp::QuasiNewtonImpl::m_fF [private] |
Definition at line 170 of file quasinewton.cxx.
Referenced by calcDefMatrix(), evaluateFunc(), runIteration(), and solve().
double scsolver::numeric::nlp::QuasiNewtonImpl::m_fFOld [private] |
Definition at line 171 of file quasinewton.cxx.
Referenced by evaluateFunc(), runIteration(), and solve().
double scsolver::numeric::nlp::QuasiNewtonImpl::m_fNorm [private] |
Definition at line 172 of file quasinewton.cxx.
Referenced by calcDefMatrix(), evaluateFunc(), and solve().
double scsolver::numeric::nlp::QuasiNewtonImpl::m_fTolerance [private] |
Definition at line 175 of file quasinewton.cxx.
Referenced by evaluateFunc(), runLinearSearch(), and solve().
bool scsolver::numeric::nlp::QuasiNewtonImpl::m_debug [private] |
Definition at line 177 of file quasinewton.cxx.
Referenced by calcDefMatrix(), evaluateFunc(), and runIteration().
1.5.3