PLearn 0.1
|
#include <UniformDistribution.h>
Public Member Functions | |
UniformDistribution () | |
Default constructor. | |
virtual void | build () |
Simply call inherited::build() then build_(). | |
virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
Transform a shallow copy into a deep copy. | |
virtual string | classname () const |
virtual OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual UniformDistribution * | deepCopy (CopiesMap &copies) const |
virtual real | log_density (const Vec &x) const |
Return log of probability density log(p(x)). | |
virtual real | survival_fn (const Vec &x) const |
Return survival fn = P(X>x). | |
virtual real | cdf (const Vec &x) const |
Return survival fn = P(X<x). | |
virtual void | expectation (Vec &mu) const |
Return E[X]. | |
virtual void | variance (Mat &cov) const |
Return Var[X]. | |
virtual void | resetGenerator (long g_seed) |
Reset the random number generator used by generate() using the given seed. | |
virtual void | generate (Vec &x) const |
Return a pseudo-random sample generated from the distribution. | |
Static Public Member Functions | |
static string | _classname_ () |
static OptionList & | _getOptionList_ () |
static RemoteMethodMap & | _getRemoteMethodMap_ () |
static Object * | _new_instance_for_typemap_ () |
static bool | _isa_ (const Object *o) |
static void | _static_initialize_ () |
static const PPath & | declaringFile () |
Public Attributes | |
Vec | max |
Vec | min |
int | mesh_size |
int | n_dim |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declare this class' options. | |
Protected Attributes | |
int | counter |
Private Types | |
typedef UnconditionalDistribution | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. |
Definition at line 52 of file UniformDistribution.h.
typedef UnconditionalDistribution PLearn::UniformDistribution::inherited [private] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 57 of file UniformDistribution.h.
PLearn::UniformDistribution::UniformDistribution | ( | ) |
Default constructor.
Definition at line 51 of file UniformDistribution.cc.
References max, min, and PLearn::TVec< T >::resize().
: counter(0), mesh_size(-1), n_dim(-1) { // Default = generate points uniformly in [0,1]. min.resize(1); max.resize(1); min[0] = 0; max[0] = 1; }
string PLearn::UniformDistribution::_classname_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
OptionList & PLearn::UniformDistribution::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
RemoteMethodMap & PLearn::UniformDistribution::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
Object * PLearn::UniformDistribution::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
StaticInitializer UniformDistribution::_static_initializer_ & PLearn::UniformDistribution::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
void PLearn::UniformDistribution::build | ( | ) | [virtual] |
Simply call inherited::build() then build_().
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 102 of file UniformDistribution.cc.
References PLearn::UnconditionalDistribution::build(), and build_().
{ inherited::build(); build_(); }
void PLearn::UniformDistribution::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 111 of file UniformDistribution.cc.
References PLearn::TVec< T >::append(), PLearn::UnconditionalDistribution::build(), i, PLearn::PLearner::inputsize_, PLearn::TVec< T >::length(), max, min, n_dim, PLASSERT, and PLERROR.
Referenced by build().
{ // ### This method should do the real building of the object, // ### according to set 'options', in *any* situation. // ### Typical situations include: // ### - Initial building of an object from a few user-specified options // ### - Building of a "reloaded" object: i.e. from the complete set of all serialised options. // ### - Updating or "re-building" of an object after a few "tuning" options have been modified. // ### You should assume that the parent class' build_() has already been called. // Check consistency of intervals. if (min.length() != max.length()) { PLERROR("In UniformDistribution::build_ - 'min' and 'max' should have the same size"); } if (n_dim == -1) n_dim = min.length(); if (n_dim != min.length()) { if (min.length() == 1) { real min_val = min[0]; real max_val = max[0]; for (int i = 0; i < n_dim - 1; i++) { min.append(min_val); max.append(max_val); } } else PLERROR("In UniformDistribution::build_ - The value of 'n_dim' " "does not match the length of the 'min' vector"); } PLASSERT( n_dim == min.length() ); for (int i = 0; i < n_dim; i++) { if (min[i] > max[i]) { PLERROR("In UniformDistribution::build_ - 'min' should be always <= 'max'"); } } inputsize_ = n_dim; // We need to re-build the parent classes, because the inputsize has // changed. inherited::build(); }
Return survival fn = P(X<x).
Reimplemented from PLearn::PDistribution.
Definition at line 156 of file UniformDistribution.cc.
References PLERROR.
{ PLERROR("cdf not implemented for UniformDistribution"); return 0; }
string PLearn::UniformDistribution::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
void PLearn::UniformDistribution::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declare this class' options.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 74 of file UniformDistribution.cc.
References PLearn::OptionBase::buildoption, counter, PLearn::declareOption(), PLearn::UnconditionalDistribution::declareOptions(), PLearn::OptionBase::learntoption, max, mesh_size, min, and n_dim.
{ declareOption(ol, "min", &UniformDistribution::min, OptionBase::buildoption, "The inferior bound for all intervals."); declareOption(ol, "max", &UniformDistribution::max, OptionBase::buildoption, "The superior bound for all intervals."); declareOption(ol, "mesh_size", &UniformDistribution::mesh_size, OptionBase::buildoption, "If set to a value > 0, this distribution will generate points deterministically\n" "so as to form a mesh of 'mesh_size'^d points equally spaced."); declareOption(ol, "n_dim", &UniformDistribution::n_dim, OptionBase::buildoption, "Optionally, the number of dimensions. Provide this option only if\n" "you want to generate 'n_dim' dimensions all in [min,max] (in which\n" "case the length of 'min' and 'max' should be 1)."); declareOption(ol, "counter", &UniformDistribution::counter, OptionBase::learntoption, "Counts the number of points generated (necessary when 'mesh_size' is used)."); // Now call the parent class' declareOptions(). inherited::declareOptions(ol); }
static const PPath& PLearn::UniformDistribution::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 114 of file UniformDistribution.h.
UniformDistribution * PLearn::UniformDistribution::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
void PLearn::UniformDistribution::expectation | ( | Vec & | mu | ) | const [virtual] |
Return E[X].
Reimplemented from PLearn::PDistribution.
Definition at line 164 of file UniformDistribution.cc.
References PLERROR.
{ PLERROR("expectation not implemented for UniformDistribution"); }
void PLearn::UniformDistribution::generate | ( | Vec & | x | ) | const [virtual] |
Return a pseudo-random sample generated from the distribution.
Reimplemented from PLearn::PDistribution.
Definition at line 172 of file UniformDistribution.cc.
References counter, i, max, mesh_size, min, n_dim, PLearn::PLearner::random_gen, and PLearn::TVec< T >::resize().
{ x.resize(n_dim); if (mesh_size > 0) { int val = counter; int coord; for (int i = 0; i < n_dim; i++) { coord = val % mesh_size; val /= mesh_size; x[i] = min[i] + (max[i] - min[i]) * coord / real(mesh_size) + (max[i] - min[i]) / (2 * real(mesh_size)); } counter++; } else { for (int i = 0; i < n_dim; i++) { x[i] = random_gen->bounded_uniform(min[i], max[i]); } } }
OptionList & PLearn::UniformDistribution::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
OptionMap & PLearn::UniformDistribution::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
RemoteMethodMap & PLearn::UniformDistribution::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 69 of file UniformDistribution.cc.
Return log of probability density log(p(x)).
Reimplemented from PLearn::PDistribution.
Definition at line 194 of file UniformDistribution.cc.
References i, max, min, n_dim, pl_log, and PLearn::sum().
{ real sum = 0; for (int i = 0; i < n_dim; i++) { if (x[i] > max[i] || x[i] < min[i]) return -INFINITY; sum += pl_log(max[i] - min[i]); } return -sum; }
void PLearn::UniformDistribution::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transform a shallow copy into a deep copy.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 208 of file UniformDistribution.cc.
References PLearn::UnconditionalDistribution::makeDeepCopyFromShallowCopy(), and PLERROR.
{ inherited::makeDeepCopyFromShallowCopy(copies); // ### Call deepCopyField on all "pointer-like" fields // ### that you wish to be deepCopied rather than // ### shallow-copied. // ### ex: // deepCopyField(trainvec, copies); // ### Remove this line when you have fully implemented this method. PLERROR("UniformDistribution::makeDeepCopyFromShallowCopy not fully (correctly) implemented yet!"); }
void PLearn::UniformDistribution::resetGenerator | ( | long | g_seed | ) | [virtual] |
Reset the random number generator used by generate() using the given seed.
Reimplemented from PLearn::PDistribution.
Definition at line 225 of file UniformDistribution.cc.
References counter, and PLearn::PDistribution::resetGenerator().
{ inherited::resetGenerator(g_seed); counter = 0; }
Return survival fn = P(X>x).
Reimplemented from PLearn::PDistribution.
Definition at line 234 of file UniformDistribution.cc.
References PLERROR.
{ PLERROR("survival_fn not implemented for UniformDistribution"); return 0; }
void PLearn::UniformDistribution::variance | ( | Mat & | cov | ) | const [virtual] |
Reimplemented from PLearn::PDistribution.
Definition at line 242 of file UniformDistribution.cc.
References PLERROR.
{ PLERROR("variance not implemented for UniformDistribution"); }
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 114 of file UniformDistribution.h.
int PLearn::UniformDistribution::counter [mutable, protected] |
Definition at line 65 of file UniformDistribution.h.
Referenced by declareOptions(), generate(), and resetGenerator().
Definition at line 75 of file UniformDistribution.h.
Referenced by build_(), declareOptions(), generate(), log_density(), and UniformDistribution().
Definition at line 77 of file UniformDistribution.h.
Referenced by declareOptions(), and generate().
Definition at line 76 of file UniformDistribution.h.
Referenced by build_(), declareOptions(), generate(), log_density(), and UniformDistribution().
Definition at line 78 of file UniformDistribution.h.
Referenced by build_(), declareOptions(), generate(), and log_density().