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::TrialGibbsVolumeTransfer, 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.
-
std::vector<int> number_fraction_exclude_type() const
Return the particle types 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).
-
std::string name_or_description() const
Return the class name (or description if name is “Trial”)
-
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 regardless of the number of particles of each type, while still allowing for different tunable parameters for each particle_type.
number_fraction_exclude_type[i]: if >= 0 (default: -1), exclude this particle type from the total number in fractions of weight_per_number_fraction. If there is a fixed particle type in a multicomponent grand canonical ensemble, avoid changing the relative weight of translation vs insert/delete and breaking detailed balance. The “[i]” is to be substituted for an integer 0, 1, 2,… If only one excluded type, then the “[i]” is optional.
print_num_accepted: if true (default: false), print the number of accepted trials.
-
double weight() const