FOX/ObjCryst++
1.10.X (development)
|
Base object for Optimization methods. More...
Classes | |
struct | DynamicObjWeight |
struct | LogLikelihoodStats |
Statistics about each object contributing to the overall Log(likelihood) More... | |
Public Member Functions | |
OptimizationObj (const string name="") | |
Constructor. | |
virtual | ~OptimizationObj () |
Destructor. | |
virtual void | RandomizeStartingConfig () |
Randomize starting configuration. More... | |
virtual void | Optimize (long &nbSteps, const bool silent=false, const REAL finalcost=0, const REAL maxTime=-1)=0 |
Launch optimization (a single run) for N steps. More... | |
virtual void | MultiRunOptimize (long &nbCycle, long &nbSteps, const bool silent=false, const REAL finalcost=0, const REAL maxTime=-1)=0 |
Launch optimization for multiple runs of N steps. More... | |
void | FixAllPar () |
Fix all parameters. | |
void | SetParIsFixed (const string &parName, const bool fix) |
Fix one parameter. | |
void | SetParIsFixed (const RefParType *type, const bool fix) |
Fix one family of parameters. | |
void | UnFixAllPar () |
UnFix All parameters. | |
void | SetParIsUsed (const string &parName, const bool use) |
Set a parameter to be used. | |
void | SetParIsUsed (const RefParType *type, const bool use) |
Set a family of parameters to be used. | |
void | SetLimitsRelative (const string &parName, const REAL min, const REAL max) |
Change the relative limits for a parameter from its name. | |
void | SetLimitsRelative (const RefParType *type, const REAL min, const REAL max) |
Change the relative limits for a family of parameter. | |
void | SetLimitsAbsolute (const string &parName, const REAL min, const REAL max) |
Change the absolute limits for a parameter from its name. | |
void | SetLimitsAbsolute (const RefParType *type, const REAL min, const REAL max) |
Change the absolute limits for a family of parameter. | |
virtual REAL | GetLogLikelihood () const |
The optimized (minimized, actually) function. More... | |
void | StopAfterCycle () |
Stop after the current cycle. USed for interactive refinement. | |
virtual void | DisplayReport () |
Show report to the user during refinement. Used for GUI update. | |
void | AddRefinableObj (RefinableObj &) |
Add a refined object. All sub-objects are also added. | |
RefinableObj & | GetFullRefinableObj (const bool rebuild=true) |
Get the RefinableObj with all the parameters from all refined objects. More... | |
virtual void | XMLOutput (ostream &os, int indent=0) const =0 |
Output a description of the object in XML format to a stream. More... | |
virtual void | XMLInput (istream &is, const XMLCrystTag &tag)=0 |
Input in XML format from a stream, restoring the set of refined objects and the associated cost functions. More... | |
const string & | GetName () const |
Get the name for this object. | |
void | SetName (const string &) |
Set the name for this object. | |
virtual const string | GetClassName () const |
Get the name for this class type. | |
virtual void | Print () const |
Print some information about this object. | |
void | RestoreBestConfiguration () |
Restore the Best configuration. | |
bool | IsOptimizing () const |
Are we busy optimizing ? | |
void | TagNewBestConfig () |
During a global optimization, tell all objects that the current config is the latest "best" config. | |
REAL | GetLastOptimElapsedTime () const |
Get the elapsed time (in seconds) during the last optimization. | |
MainTracker & | GetMainTracker () |
Get the MainTracker. | |
const MainTracker & | GetMainTracker () const |
Get the MainTracker. | |
RefObjOpt & | GetXMLAutoSaveOption () |
const RefObjOpt & | GetXMLAutoSaveOption () const |
const REAL & | GetBestCost () const |
Access to current best cost. | |
REAL & | GetBestCost () |
Access to current best cost. | |
virtual void | BeginOptimization (const bool allowApproximations=false, const bool enableRestraints=false) |
Begin optimization for all objects. | |
virtual void | EndOptimization () |
End optimization for all objects. | |
virtual long & | NbTrialPerRun () |
Number of trial per run. | |
virtual const long & | NbTrialPerRun () const |
Number of trial per run. | |
Protected Member Functions | |
void | PrepareRefParList () |
virtual void | InitOptions () |
Initialization of options. | |
virtual void | UpdateDisplay () |
Update Display (if any display is available), when a new 'relevant' configuration is reached. More... | |
void | BuildRecursiveRefObjList () |
(Re)build OptimizationObj::mRecursiveRefinedObjList, if an object has been added or modified. More... | |
Protected Attributes | |
RefinableObj | mRefParList |
The refinable par list used during refinement. More... | |
string | mName |
Name of the GlobalOptimization object. | |
string | mSaveFileName |
File name where refinement info is saved (NOT USED so far...) | |
long | mNbTrialPerRun |
Number of trial per run, to be saved/restored in XML output. | |
long | mNbTrial |
Number of trials so far. | |
REAL | mBestCost |
Best value of the cost function so far. | |
long | mBestParSavedSetIndex |
Index of the 'best' saved parameter set. | |
unsigned long | mContext |
The current 'context', in the case the optimization is run in different parallel contexts. | |
map< unsigned long, map< const RefinableObj *, LogLikelihoodStats > > | mvContextObjStats |
Statistics for each context (mutable for dynamic update during optimization) | |
map< const RefinableObj *, DynamicObjWeight > | mvObjWeight |
Weights for each objects in each context (mutable for dynamic update during optimization) | |
std::vector< pair< long, REAL > > | mvSavedParamSet |
List of saved parameter sets. More... | |
bool | mIsOptimizing |
True if a refinement is being done. For multi-threaded environment. | |
bool | mStopAfterCycle |
If true, then stop at the end of the cycle. Used in multi-threaded environment. | |
ObjRegistry< RefinableObj > | mRefinedObjList |
The refined objects. | |
ObjRegistry< RefinableObj > | mRecursiveRefinedObjList |
The refined objects, recursively including all sub-objects. More... | |
RefObjOpt | mXMLAutoSave |
Periodic save of complete environment as an xml file. | |
REAL | mLastOptimTime |
The time elapsed after the last optimization, in seconds. | |
MainTracker | mMainTracker |
MainTracker object to track the evolution of cost functions, likelihood, and individual parameters. More... | |
Base object for Optimization methods.
This is an abstract base class, derived for Monte-Cralo type algorithms (Simulated Annealing & Parallel Tempering), and hopefully soon for Genetic Algorithms.
Definition at line 102 of file GlobalOptimObj.h.
|
protected |
(Re)build OptimizationObj::mRecursiveRefinedObjList, if an object has been added or modified.
If no object has been added and no sub-object has been added/removed, then nothing is done.
Definition at line 391 of file GlobalOptimObj.cpp.
RefinableObj & ObjCryst::OptimizationObj::GetFullRefinableObj | ( | const bool | rebuild = true | ) |
Get the RefinableObj with all the parameters from all refined objects.
If rebuild=true, prepare again the list of objects/parameters.
Definition at line 241 of file GlobalOptimObj.cpp.
|
virtual |
The optimized (minimized, actually) function.
This function is the weighted sum of the chosen Cost Functions for the refined objects.
Definition at line 191 of file GlobalOptimObj.cpp.
|
pure virtual |
Launch optimization for multiple runs of N steps.
nbCycle | the number of runs (cycles) to perform. The structure is randomized at the beginning of each cycle. If nbCycle==-1, this will run indefinitely. The nbCycle parameter is decreased after each run. |
nbSteps | the number of steps to go. This number is modified (decreases!) as the refinement goes on. |
silent | : if true, absolutely no message should be printed (except debugging) |
finalcost | the optimization will stop if overall cost fallse below this value |
maxTime | the optimization will stop after the given number of seconds has been spent optimizing (ignored if <0). |
Implemented in ObjCryst::MonteCarloObj, and ObjCryst::SimplexObj.
|
pure virtual |
Launch optimization (a single run) for N steps.
nbSteps | the number of steps to go. This number is modified (decreases!) as the refinement goes on. |
silent | : if true, absolutely no message should be printed (except debugging) |
finalcost | the optimization will stop if overall cost fallse below this value |
maxTime | the optimization will stop after the given number of seconds has been spent optimizing (ignored if <0). |
Implemented in ObjCryst::MonteCarloObj, and ObjCryst::SimplexObj.
|
protected |
Prepare mRefParList for the refinement
Definition at line 302 of file GlobalOptimObj.cpp.
|
virtual |
Randomize starting configuration.
Only affects limited and periodic parameters.
Definition at line 102 of file GlobalOptimObj.cpp.
|
protectedvirtual |
Update Display (if any display is available), when a new 'relevant' configuration is reached.
This calls all RefinableObj::UpdateDisplay()
Definition at line 381 of file GlobalOptimObj.cpp.
|
pure virtual |
Input in XML format from a stream, restoring the set of refined objects and the associated cost functions.
Note that the corresponding objects must have been loaded in memory before, else shit happens.
Implemented in ObjCryst::MonteCarloObj, and ObjCryst::SimplexObj.
|
pure virtual |
Output a description of the object in XML format to a stream.
This saves the list of refined object and the cost functions, as well as options for the refinement. The refined objects are not saved, so this must be done somewhere else (they must be reloaded before this object).
Implemented in ObjCryst::MonteCarloObj, and ObjCryst::SimplexObj.
|
protected |
MainTracker object to track the evolution of cost functions, likelihood, and individual parameters.
Definition at line 310 of file GlobalOptimObj.h.
|
mutableprotected |
The refined objects, recursively including all sub-objects.
This is mutable, since it is a function of mRefinedObjList only.
Definition at line 301 of file GlobalOptimObj.h.
|
mutableprotected |
The refinable par list used during refinement.
Only a condensed version of all objects. This is useful to keep an history of modifications, and to restore previous values.
Definition at line 242 of file GlobalOptimObj.h.
|
protected |
List of saved parameter sets.
This is used to save possible solutions during the optimization, so that the user can check them afterwards.
The first member of each pair is the index of the parameter set, and the second is the overall cost for that set.
Definition at line 289 of file GlobalOptimObj.h.