Trial
-
class Trial
A trial contains a number of TrialStages. The Acceptance is computed as the stages are enacted, and then sent to Criteria to decide if the trial is accepted or rejected.
Subclassed by feasst::TrialAVB2Half, feasst::TrialAVB4, feasst::TrialAdd, feasst::TrialAddAVB, feasst::TrialAddAVBDivalent, feasst::TrialAddMultiple, feasst::TrialBeta, feasst::TrialFactory, feasst::TrialGibbsParticleTransferOneWay, feasst::TrialGibbsVolumeTransferOneWay, feasst::TrialGrowLinear, feasst::TrialModel, feasst::TrialMorph, feasst::TrialMorphExpanded, feasst::TrialMove, feasst::TrialRemove, feasst::TrialRemoveAVB, feasst::TrialRemoveAVBDivalent, feasst::TrialRemoveMultiple, feasst::TrialRotateCluster, feasst::TrialSwapSites, feasst::TrialTranslateCluster, feasst::TrialVolume
Public Functions
-
double weight() const
Return the unnormalized relative probability of selection of this trial with respect to all trials.
-
double weight_per_number_fraction() const
Return the weight per number of particles of given type.
-
int number_fraction_exclude_type() const
Return the particle type excluded in number fraction weights.
Add a stage which includes selection and perturbation with arguments.
Same as above, but without arguments for stage.
Same as above, but by copying an existing stage.
Set a stage, as can be done just before each attempt.
-
int num_stages() const
Number of stages.
-
const TrialStage &stage(const int index) const
Return a stage.
-
int64_t num_success() const
Number of successful attempts.
-
int64_t num_attempts() const
Number of attempts.
-
int64_t num_auto_reject() const
Number of automatic rejections.
-
void increment_num_attempts()
Increment the number of attempts for acceptance.
-
double acceptance() const
Return the ratio of the number of successful attempts and total attempts. Return -1 if no attempts were performed.
-
virtual void reset_stats()
Reset trial statistics.
-
virtual std::string status_header() const
Return the header description for the status of the trial (e.g., acceptance, etc).
-
virtual std::string status() const
Return the status of the trial (e.g., acceptance, etc).
-
virtual void precompute(Criteria *criteria, System *system)
Precompute quantities before simulation for optimization.
Set the computation of the trial and acceptance.
-
const TrialCompute &compute() const
Return TrialCompute.
-
virtual bool attempt(Criteria *criteria, System *system, Random *random)
Attempt a trial. Return true if accepted.
-
void set_description(const std::string &description)
Set the description.
Arguments
-
Trial(argtype args = argtype())
args:
weight: unnormalized relative probability of selection of this trial with respect to all trials (default: 1).
weight_per_number_fraction: if > 0, the weight is continuously updated to (weight_per_number_fraction * number of TrialSelect::particle_type in first TrialStage / total number of particles). If <= 0, the given weight above is fixed to that value (default: -1). For a multicomponent simulation, weight_per_number_fraction with a separate trial for each mobile particle_type ensures equal probability of selecting any particles of those types type regardless of the number of particles of each type, while still allowing for different tunable parameters for each particle_type.
number_fraction_exclude_type: if >= 0 (default: -1), exclude this particle type from the total number of fractions in weight_per_number_fraction. If there is a rigid particle type in the grand canonical ensemble, avoid changing the relative weight of translation vs insert/delete and breaking detailed balance.
print_num_accepted: if true (default: false), print the number of accepted trials.
-
double weight() const