

Public Member Functions | |
| MonteCarloObj (const string name="") | |
| Constructor. | |
| MonteCarloObj (const bool internalUseOnly) | |
| Constructor. | |
| virtual | ~MonteCarloObj () |
| Destructor. | |
| void | SetAlgorithmSimulAnnealing (const AnnealingSchedule scheduleTemp, const REAL tMax, const REAL tMin, const AnnealingSchedule scheduleMutation=ANNEALING_CONSTANT, const REAL mutMax=16., const REAL mutMin=.125, const long nbTrialRetry=0, const REAL minCostRetry=0.) |
| Set the refinement method to simulated Annealing. | |
| void | SetAlgorithmParallTempering (const AnnealingSchedule scheduleTemp, const REAL tMax, const REAL tMin, const AnnealingSchedule scheduleMutation=ANNEALING_CONSTANT, const REAL mutMax=16., const REAL mutMin=.125) |
| Set the refinement method to Parallel Tempering. | |
| virtual void | Optimize (long &nbSteps, const bool silent=false, const REAL finalcost=0, const REAL maxTime=-1) |
| Launch optimization (a single run) for N steps. | |
| virtual void | MultiRunOptimize (long &nbCycle, long &nbSteps, const bool silent=false, const REAL finalcost=0, const REAL maxTime=-1) |
| Launch optimization for multiple runs of N steps. | |
| void | RunSimulatedAnnealing (long &nbSteps, const bool silent=false, const REAL finalcost=0, const REAL maxTime=-1) |
| void | RunParallelTempering (long &nbSteps, const bool silent=false, const REAL finalcost=0, const REAL maxTime=-1) |
| virtual void | XMLOutput (ostream &os, int indent=0) const |
| Output a description of the object in XML format to a stream. | |
| virtual void | XMLInput (istream &is, const XMLCrystTag &tag) |
| Input in XML format from a stream, restoring the set of refined objects and the associated cost functions. | |
| virtual const string | GetClassName () const |
| Get the name for this class type. | |
Protected Member Functions | |
| virtual void | NewConfiguration (const RefParType *type=gpRefParTypeObjCryst) |
| Make a random change in the configuration. | |
| virtual void | InitOptions () |
| Initialization of options. | |
Protected Attributes | |
| RefObjOpt | mGlobalOptimType |
| Method used for the global optimization. | |
| REAL | mCurrentCost |
| Current value of the cost function. | |
| RefObjOpt | mSaveTrackedData |
| Option to save the evolution of tracked data (cost functions, likelihhod, individual parameters,. | |
| REAL | mTemperature |
| Current temperature for annealing. | |
| REAL | mTemperatureMax |
| Beginning temperature for annealing. | |
| REAL | mTemperatureMin |
| Lower temperature. | |
| RefObjOpt | mAnnealingScheduleTemp |
| Schedule for the annealing. | |
| REAL | mTemperatureGamma |
| Gamma for the 'gamma' temperature schedule. | |
| REAL | mMutationAmplitude |
| Mutation amplitude. | |
| REAL | mMutationAmplitudeMax |
| Mutation amplitude at the beginning of the optimization. | |
| REAL | mMutationAmplitudeMin |
| Mutation amplitude at the end of the optimization. | |
| RefObjOpt | mAnnealingScheduleMutation |
| Schedule for the annealing. | |
| REAL | mMutationAmplitudeGamma |
| Gamma for the 'gamma' Mutation amplitude schedule. | |
| long | mNbTrialRetry |
| Number of trials before testing if we are below the given minimum cost. | |
| REAL | mMinCostRetry |
| Cost to reach unless an automatic randomization and retry is done. | |
The algorithm is quite simple, whith two type of optimizations, either simulated Annealing or Parallel Tempering, the latter being recommanded for most real-world optimizations.
Definition at line 322 of file GlobalOptimObj.h.
| ObjCryst::MonteCarloObj::MonteCarloObj | ( | const bool | internalUseOnly | ) |
Constructor.
Using internalUseOnly=true will avoid registering the the object to any registry, and thus (for example) no display will be created, nor will this object be automatically be saved.
Definition at line 404 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::SetAlgorithmSimulAnnealing | ( | const AnnealingSchedule | scheduleTemp, | |
| const REAL | tMax, | |||
| const REAL | tMin, | |||
| const AnnealingSchedule | scheduleMutation = ANNEALING_CONSTANT, |
|||
| const REAL | mutMax = 16., |
|||
| const REAL | mutMin = .125, |
|||
| const long | nbTrialRetry = 0, |
|||
| const REAL | minCostRetry = 0. | |||
| ) |
Set the refinement method to simulated Annealing.
Note that Parellel Tempering is more efficient to get out of local minima, so you sould rather use that method.
The refinement begins at max and finishes at min temperature.
| scheduleTemp,: | temperature schedule. See AnnealingSchedule. | |
| tMax,tMin,: | Max and Min temperatures. | |
| scheduleMutation,: | the mutation schedule. For each new configuration, the variation of each refinable parameter is less than its RefinablePar::GlobalOptimStep(), multiplied by the current mutation amplitude. By default this mutation is equal to 1., but making bigger steps is a good idea at the beginning of the refinement (for higher temperatures). See AnnealingSchedule. See AnnealingSchedule. | |
| mutMax,mutMin,: | Max and Min mutation amplitudes. | |
| minCostRetry,nbTrialRetry,: | if after nbTrialRetry, the cost function is still above minCostRetry, then start again from a random configuration. No randomization is made if nbTrialRetry <= 0. | |
| maxNbTrialSinceBest,: | if more than maxNbTrialSinceBest trials have been made since the best configuration was recorded, then revert to that configuration. This should be large enough to have an ergodic search (the default is never to revert..) |
Definition at line 430 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::SetAlgorithmParallTempering | ( | const AnnealingSchedule | scheduleTemp, | |
| const REAL | tMax, | |||
| const REAL | tMin, | |||
| const AnnealingSchedule | scheduleMutation = ANNEALING_CONSTANT, |
|||
| const REAL | mutMax = 16., |
|||
| const REAL | mutMin = .125 | |||
| ) |
Set the refinement method to Parallel Tempering.
The refinement begins at max and finishes at min temperature.
| scheduleTemp,: | temperature schedule | |
| tMax,tMin,: | Max and Min temperatures. See AnnealingSchedule. | |
| scheduleMutation,: | the mutation schedule. For each new configuration, the variation of each refinable parameter is less than its RefinablePar::GlobalOptimStep(), multiplied by the current mutation amplitude. By default this mutation is equal to 1., but making bigger steps can be a good idea at the beginning of the refinement. Thus you can choose a schedule for the amplitude, exactly like for the temperature. | |
| mutMax,mutMin,: | Max and Min mutation amplitudes. |
Definition at line 451 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::Optimize | ( | long & | nbSteps, | |
| const bool | silent = false, |
|||
| const REAL | finalcost = 0, |
|||
| const REAL | maxTime = -1 | |||
| ) | [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). |
Implements ObjCryst::OptimizationObj.
Definition at line 469 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::MultiRunOptimize | ( | long & | nbCycle, | |
| long & | nbSteps, | |||
| const bool | silent = false, |
|||
| const REAL | finalcost = 0, |
|||
| const REAL | maxTime = -1 | |||
| ) | [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). |
Implements ObjCryst::OptimizationObj.
Definition at line 534 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::RunSimulatedAnnealing | ( | long & | nbSteps, | |
| const bool | silent = false, |
|||
| const REAL | finalcost = 0, |
|||
| const REAL | maxTime = -1 | |||
| ) |
For internal use only.
Do a single simulated annealing run. This is called by Optimize(...) and MultiRunOptimize(), which must also prepare the optimization (PrepareRefParList(), etc..).
Definition at line 643 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::RunParallelTempering | ( | long & | nbSteps, | |
| const bool | silent = false, |
|||
| const REAL | finalcost = 0, |
|||
| const REAL | maxTime = -1 | |||
| ) |
For internal use only.
Do a single Parallel Tempering run. This is called by Optimize(...) and MultiRunOptimize(), which must also prepare the optimization (PrepareRefParList(), etc..).
Definition at line 841 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::XMLOutput | ( | ostream & | os, | |
| int | indent = 0 | |||
| ) | const [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).
Implements ObjCryst::OptimizationObj.
Definition at line 1395 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::XMLInput | ( | istream & | is, | |
| const XMLCrystTag & | tag | |||
| ) | [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.
Implements ObjCryst::OptimizationObj.
Definition at line 1452 of file GlobalOptimObj.cpp.
| void ObjCryst::MonteCarloObj::NewConfiguration | ( | const RefParType * | type = gpRefParTypeObjCryst |
) | [protected, virtual] |
Make a random change in the configuration.
For internal use only.
This just generates a new configuration with random changes (according to current parameters). The new configuration is not tested in this function vs temperature: this should be done in the OptimizationObj::Optimize() function, which also chooses whether to revert to the previous configuration.
Random moves are made by the objects and not by this function, because the new configuration can be specific (like, for example, permutations between some of the parameters (atoms)).
| type,: | can be used to restrict the move to a given category of parameters. |
Definition at line 1530 of file GlobalOptimObj.cpp.
RefObjOpt ObjCryst::MonteCarloObj::mGlobalOptimType [protected] |
Method used for the global optimization.
Should be removed when we switch to using several classes for different algorithms.
Definition at line 437 of file GlobalOptimObj.h.
RefObjOpt ObjCryst::MonteCarloObj::mSaveTrackedData [protected] |
Option to save the evolution of tracked data (cost functions, likelihhod, individual parameters,.
..)
Definition at line 446 of file GlobalOptimObj.h.
REAL ObjCryst::MonteCarloObj::mMutationAmplitude [protected] |
Mutation amplitude.
From .25 to 64. Random moves will have a maximum amplitude equal to this amplitude multiplied by the Global optimization step defined for each RefinablePar. Large amplitude should be used at the beginning of the refinement (high temeratures).
Definition at line 464 of file GlobalOptimObj.h.
long ObjCryst::MonteCarloObj::mNbTrialRetry [protected] |
Number of trials before testing if we are below the given minimum cost.
If <=0, this will be ignored.
Definition at line 476 of file GlobalOptimObj.h.
1.5.5