Class RunPlanVector
Defined in File RunPlanVector.h
Inheritance Relationships
Base Type
private std::vector< RunPlan >
Class Documentation
-
class RunPlanVector : private std::vector<RunPlan>
Vector of RunPlan Contains additional methods for generating collections of RunPlans and combining RunPlanVectors
Public Functions
-
explicit RunPlanVector(const ModelDescription &model, unsigned int initial_length)
Constructor, requires the model description to validate environment properties match up
-
void setRandomSimulationSeed(uint64_t initial_seed, unsigned int step = 0)
Set the random simulation seed of each RunPlan currently within this vector
Note
A step of 0, will give the exact same seed to all RunPlans
- Parameters:
initial_seed – The random seed applied to the first item
step – The value added to the previous seed to calculate the next seed
-
void setSteps(unsigned int steps)
Set the steps of each RunPlan currently within this vector
Note
If 0 is provided, the model must have an exit condition
- Parameters:
steps – The number of steps to be executed
-
void setOutputSubdirectory(const std::string &subdir)
Set the the sub directory within the output directory for outputs of runplans in this vector
Note
Defaults to empty string, where no subdirectory is used
- Parameters:
subdir – The name of the subdirectory
-
template<typename T>
void setProperty(const std::string &name, const T value) Set named environment property to a specific value
- Parameters:
name – The name of the environment property to set
value – The value of the environment property to set
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
-
template<typename T, flamegpu::size_type N>
void setProperty(const std::string &name, const std::array<T, N> &value) Set named environment property array to a specific value This version should be used for array properties
- Parameters:
name – Environment property name
value – Environment property value (override)
- Template Parameters:
T – Type of the environment property
N – Length of the array to be returned
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length to N
-
template<typename T>
void setProperty(const std::string &name, const flamegpu::size_type index, const T value) Array property element equivalent of setProperty()
- Parameters:
name – The name of the environment property array to affect
index – The index of the environment property array to set
value – The value of the environment property array to set
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T
exception::OutOfBoundsException – If index is not in range of the length of the property array
-
template<typename T>
void setPropertyLerpRange(const std::string &name, T min, T max) Sweep named environment property over an inclusive uniform distribution value = min * (1.0 - a) + max * a, where a = index/(size()-1) Integer types will be rounded to the nearest integer
- Parameters:
name – The name of the environment property to set
min – The value to set the first environment property
max – The value to set the last environment property
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyLerpRange(const std::string &name, flamegpu::size_type index, T min, T max) Array property element equivalent of setPropertyLerpRange() Sweep element of named environment property array over an inclusive uniform distribution value = min * (1.0 - a) + max * a, where a = index/(size()-1) Integer types will be rounded to the nearest integer
- Parameters:
name – The name of the environment property to set
index – The index of the element within the environment property array to set
min – The value to set the first environment property array element
max – The value to set the last environment property array element
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T
exception::OutOfBoundsException – If index is greater than or equal to the length of the environment property array
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyStep(const std::string &name, T init, T step) Increment named environment property with a user defined step value = init + index * step
- Parameters:
name – The name of the environment property to set
init – The value of the first environment property
step – The value to increment each subsequent environment property by
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyStep(const std::string &name, flamegpu::size_type index, T init, T step) Array property element equivalent of setPropertyStep() Increment named environment property with a user defined step value = init + index * step
- Parameters:
name – The name of the environment property to set
index – The index of the element within the environment property array to set
init – The value of the first environment property
step – The value to increment each subsequent environment property by
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
exception::OutOfBoundsException – If this vector has a length less than 2
-
void setRandomPropertySeed(uint64_t seed)
Seed the internal random generator used for random property distributions This will only affect subsequent calls to setPropertyRandom()
- Parameters:
seed – The random seed to be used
-
uint64_t getRandomPropertySeed()
Get the seed used for the internal random generator used for random property distributions This will only valid for calls to setPropertyRandom() since the last call toSetRandomPropertySeed
- Returns:
the seed used for random properties since the last call to setPropertyRandom
-
template<typename T>
void setPropertyUniformRandom(const std::string &name, const T min, const T max) Sweep named environment property over a uniform random distribution Integer types have a range [min, max] Floating point types have a range [min, max)
Convenience random implementations
- Parameters:
name – The name of the environment property to set
min – The value of the range to set the first environment property
max – The value of the range to set the last environment property
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyUniformRandom(const std::string &name, const flamegpu::size_type index, const T min, const T max) Array property element equivalent of setPropertyUniformRandom() Sweep named environment property over a uniform random distribution Integer types have a range [min, max] Floating point types have a range [min, max)
- Parameters:
name – The name of the environment property to set
index – The index of the array element to set
min – The value of the range to set the first environment property
max – The value of the range to set the last environment property
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T
exception::OutOfBoundsException – If index is greater than or equal to the length of the environment property array
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyNormalRandom(const std::string &name, const T mean, const T stddev) Sweep named environment property over a normal random distribution Only floating point types are supported
- Parameters:
name – The name of the environment property to set
mean – Mean of the distribution (its expected value). Which coincides with the location of its peak.
stddev – Standard deviation: The square root of variance, representing the dispersion of values from the distribution mean.
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyNormalRandom(const std::string &name, flamegpu::size_type index, T mean, T stddev) Array property element equivalent of setPropertyNormalRandom() Sweep named environment property over a normal random distribution Only floating point types are supported
- Parameters:
name – The name of the environment property to set
index – The index of the array element to set
mean – Mean of the distribution (its expected value). Which coincides with the location of its peak.
stddev – Standard deviation: The square root of variance, representing the dispersion of values from the distribution mean.
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T
exception::OutOfBoundsException – If index is greater than or equal to the length of the environment property array
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyLogNormalRandom(const std::string &name, T mean, T stddev) Sweep named environment property over a log normal random distribution Only floating point types are supported
- Parameters:
name – The name of the environment property to set
mean – Mean of the underlying normal distribution formed by the logarithm transformations of the possible values in this distribution.
stddev – Standard deviation of the underlying normal distribution formed by the logarithm transformations of the possible values in this distribution.
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length > 1
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T>
void setPropertyLogNormalRandom(const std::string &name, flamegpu::size_type index, T mean, T stddev) Array property element equivalent of setPropertyLogNormalRandom() Sweep named environment property over a log normal random distribution Only floating point types are supported
- Parameters:
name – The name of the environment property to set
index – The index of the array element to set
mean – Mean of the underlying normal distribution formed by the logarithm transformations of the possible values in this distribution.
stddev – Standard deviation of the underlying normal distribution formed by the logarithm transformations of the possible values in this distribution.
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T
exception::OutOfBoundsException – If index is greater than or equal to the length of the environment property array
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T, typename rand_dist>
void setPropertyRandom(const std::string &name, rand_dist &distribution) Use a random distribution to generate parameters for the named environment property
- Parameters:
name – The name of the environment property to set
distribution – The random distribution to use for generating random property values
- Template Parameters:
T – The type of the environment property, this must match the ModelDescription
rand_dist – An object satisfying the requirements of RandomNumberDistribution e.g. std::uniform_real_distribution
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length to N
exception::OutOfBoundsException – If this vector has a length less than 2
-
template<typename T, typename rand_dist>
void setPropertyRandom(const std::string &name, flamegpu::size_type index, rand_dist &distribution) Array property element equivalent of setPropertyRandom() Use a random distribution to generate parameters for the specified element of the named environment property array
- Parameters:
name – The name of the environment property to set
index – The index of the element within the environment property array to set
distribution – The random distribution to use for generating random property values
- Template Parameters:
T – The type of the environment property array, this must match the ModelDescription
rand_dist – An object satisfying the requirements of RandomNumberDistribution e.g. std::uniform_real_distribution
- Throws:
exception::InvalidEnvProperty – If a property of the name does not exist
exception::InvalidEnvPropertyType – If a property with the name has a type different to T, or length to N
exception::OutOfBoundsException – If index is greater than or equal to the length of the environment property array
exception::OutOfBoundsException – If this vector has a length less than 2
-
RunPlanVector operator+(const RunPlan &rhs) const
Operator methods for combining vectors
-
RunPlanVector operator+(const RunPlanVector &rhs) const
-
RunPlanVector &operator+=(const RunPlan &rhs)
-
RunPlanVector &operator+=(const RunPlanVector &rhs)
-
RunPlanVector &operator*=(unsigned int rhs)
-
RunPlanVector operator*(unsigned int rhs) const
-
bool operator==(const RunPlanVector &rhs) const
-
bool operator!=(const RunPlanVector &rhs) const
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const float min, const float max) Special cases std::random doesn’t support char, emulate behaviour char != signed char (or unsigned char)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const flamegpu::size_type index, const float min, const float max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const double min, const double max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const flamegpu::size_type index, const double min, const double max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const char min, const char max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const flamegpu::size_type index, const char min, const char max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const unsigned char min, const unsigned char max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const flamegpu::size_type index, const unsigned char min, const unsigned char max)
-
template<>
inline void setPropertyUniformRandom(const std::string &name, const signed char min, const signed char max)
Friends
- friend class detail::AbstractSimRunner
-
explicit RunPlanVector(const ModelDescription &model, unsigned int initial_length)