Changeset 766 for library/bdm/base/bdmbase.h
- Timestamp:
- 01/11/10 22:55:57 (14 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/base/bdmbase.h
r760 r766 108 108 109 109 //! auxiliary function used in constructor 110 void init ( const Array<std::string> &in_names, const ivec &in_sizes, const ivec &in_times ); 111 int init ( const string &name, int size ); 110 void init( const Array<std::string> &in_names, const ivec &in_sizes, const ivec &in_times ); 111 112 //! auxiliary function assigning unique integer index related to the passed name and size of the random variable 113 int assign_id( const string &name, int size ); 114 112 115 //! Private constructor from IDs, potentially dangerous since all ids must be valid! 113 116 //! dummy is there to prevent confusion with RV(" string"); … … 319 322 320 323 //! log this vector 321 virtual void log_vector ( int id, const vec &v ) { 322 bdm_error ( "Not implemented" ); 323 }; 324 virtual void log_vector ( int id, const vec &v ) = 0; 324 325 325 326 virtual Setting & log_to_setting ( int id ) { 326 327 return settings ( id )->add ( Setting::TypeGroup ); 327 328 } 328 329 329 //! log this double 330 virtual void logit ( int id, const double &d ) { 331 bdm_error ( "Not implemented" ); 332 }; 330 virtual void logit ( int id, const double &d ) = 0; 333 331 334 332 //! Shifts storage position for another time step. 335 virtual void step() { 336 bdm_error ( "Not implemneted" ); 337 }; 333 virtual void step() = 0; 338 334 339 335 //! Finalize storing information … … 385 381 //!dimension of the condition 386 382 int dimc; 383 387 384 //! random variable in condition 388 385 RV rvc; … … 402 399 pdf ( const pdf &m ) : dimc ( m.dimc ), rvc ( m.rvc ), dim ( m.dim ), rv ( m.rv ) { } 403 400 404 //! copy of the current object - make sure to implement405 virtual pdf* _copy_() const {406 return new pdf ( *this );407 }408 401 //!@} 409 402 … … 412 405 413 406 //! Returns a sample from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv 414 virtual vec samplecond ( const vec &cond ) { 415 bdm_error ( "Not implemented" ); 416 return vec(); 417 } 407 virtual vec samplecond ( const vec &cond ) = 0; 418 408 419 409 //! Returns \param N samples from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv … … 421 411 422 412 //! Shortcut for conditioning and evaluation of the internal epdf. In some cases, this operation can be implemented efficiently. 423 virtual double evallogcond ( const vec &yt, const vec &cond ) { 424 bdm_error ( "Not implemented" ); 425 return 0.0; 426 } 413 virtual double evallogcond ( const vec &yt, const vec &cond ) = 0; 427 414 428 415 //! Matrix version of evallogcond … … 521 508 } 522 509 523 epdf* _copy_() const {524 return new epdf ( *this );525 }526 510 //!@} 527 511 … … 530 514 531 515 //! Returns a sample, \f$ x \f$ from density \f$ f_x()\f$ 532 virtual vec sample() const { 533 bdm_error ( "not implemented" ); 534 return vec(); 535 } 516 virtual vec sample() const = 0; 536 517 537 518 //! Returns N samples, \f$ [x_1 , x_2 , \ldots \ \f$ from density \f$ f_x(rv)\f$ … … 540 521 //! Compute log-probability of argument \c val 541 522 //! In case the argument is out of suport return -Infinity 542 virtual double evallog ( const vec &val ) const { 543 bdm_error ( "not implemented" ); 544 return 0.0; 545 } 546 523 virtual double evallog ( const vec &val ) const = 0; 524 547 525 //! Compute log-probability of multiple values argument \c val 548 526 virtual vec evallog_mat ( const mat &Val ) const; … … 557 535 virtual shared_ptr<epdf> marginal ( const RV &rv ) const; 558 536 559 //! return expected value 560 virtual vec mean() const { 561 bdm_error ( "not implemneted" ); 562 return vec(); 563 } 537 virtual vec mean() const = 0; 564 538 565 539 //! return expected variance (not covariance!) 566 virtual vec variance() const { 567 bdm_error ( "not implemneted" ); 568 return vec(); 569 } 540 virtual vec variance() const = 0; 570 541 571 542 //! Lower and upper bounds of \c percentage % quantile, returns mean-2*sigma as default … … 639 610 //! Update \c iepdf so that it represents this pdf conditioned on \c rvc = cond 640 611 //! This function provides convenient reimplementation in offsprings 641 virtual void condition ( const vec &cond ) { 642 bdm_error ( "Not implemented" ); 643 } 612 virtual void condition ( const vec &cond ) = 0; 644 613 645 614 //!access function to iepdf … … 942 911 } 943 912 //! Returns full vector of observed data=[output, input] 944 virtual void getdata ( vec &dt ) const { 945 bdm_error ( "abstract class" ); 946 } 913 virtual void getdata ( vec &dt ) const = 0; 914 947 915 //! Returns data records at indeces. 948 virtual void getdata ( vec &dt, const ivec &indeces ) { 949 bdm_error ( "abstract class" ); 950 } 951 952 //! Accepts action variable and schedule it for application. 953 virtual void write ( const vec &ut ) { 954 bdm_error ( "abstract class" ); 955 } 916 virtual void getdata ( vec &dt, const ivec &indeces ) = 0; 917 918 //! Accepts action variable and schedule it for application. 919 virtual void write ( const vec &ut ) = 0; 956 920 957 921 //! Accepts action variables at specific indeces 958 virtual void write ( const vec &ut, const ivec &indeces ) { 959 bdm_error ( "abstract class" ); 960 } 922 virtual void write ( const vec &ut, const ivec &indeces ) = 0; 961 923 962 924 //! Moves from \f$ t \f$ to \f$ t+1 \f$, i.e. perfroms the actions and reads response of the system. 963 virtual void step() { 964 bdm_error ( "abstract class" ); 965 } 925 virtual void step() = 0; 966 926 967 927 //! Register DS for logging into logger L … … 1033 993 // BM ( const BM &B ) : yrv ( B.yrv ), dimy(B.dimy), rvc ( B.rvc ),dimc(B.dimc), ll ( B.ll ), evalll ( B.evalll ) {} 1034 994 //! \brief Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually! 1035 //! Prototype: \code BM* _copy_() const {return new BM(*this);} \endcode 1036 virtual BM* _copy_() const { 1037 return NULL; 1038 }; 995 //! Prototype: \code BM* _copy() const {return new BM(*this);} \endcode 996 virtual BM* _copy() const { return NULL; }; // TODO NEBUDE TU TAKY LEPSI BDM_ERROR??! 1039 997 //!@} 1040 998 … … 1054 1012 //! This function evaluates only \f$ y_t \f$, condition is assumed to be the last used in bayes(). 1055 1013 //! See bdm::BM::predictor for conditional version. 1056 virtual double logpred ( const vec &yt ) const { 1057 bdm_error ( "Not implemented" ); 1058 return 0.0; 1059 } 1014 virtual double logpred ( const vec &yt ) const = 0; 1060 1015 1061 1016 //! Matrix version of logpred … … 1069 1024 1070 1025 //!Constructs a predictive density \f$ f(d_{t+1} |d_{t}, \ldots d_{0}) \f$ 1071 virtual epdf* epredictor() const { 1072 bdm_error ( "Not implemented" ); 1073 return NULL; 1074 }; 1026 virtual epdf* epredictor() const = 0; 1027 1075 1028 //!Constructs conditional density of 1-step ahead predictor \f$ f(d_{t+1} |d_{t+h-1}, \ldots d_{t}) \f$ 1076 virtual pdf* predictor() const { 1077 bdm_error ( "Not implemented" ); 1078 return NULL; 1079 }; 1029 virtual pdf* predictor() const = 0; 1030 1080 1031 //!@} 1081 1032