Skip to content
Snippets Groups Projects
LearningSequence.h 1.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * DESCRIPTION OF THE FILE
     *
     * @author Michal Kravčenko
     * @date 19.2.19 -
     */
    
    #ifndef LIB4NEURO_LEARNINGSEQUENCE_H
    #define LIB4NEURO_LEARNINGSEQUENCE_H
    
    #include <4neuro.h>
    #include "../settings.h"
    #include "../constants.h"
    #include "ILearningMethods.h"
    
    namespace lib4neuro {
        /**
         *
         */
        class LearningSequence : public ILearningMethods {
    
        private:
    
            /**
             *
             */
            std::vector<ILearningMethods*> learning_sequence;
    
            /**
             *
             */
            double tol;
    
            /**
             *
             */
            std::vector<double> *best_parameters = nullptr;
    
            /**
             *
             */
            int max_number_of_cycles = -1;
    
    
        public:
    
            /**
             *
             */
            LIB4NEURO_API explicit LearningSequence( double tolerance = 1e-6, int max_n_cycles = -1);
    
            /**
             * Deallocates the instance
             */
            LIB4NEURO_API ~LearningSequence();
    
            /**
             *
             * @param ef
             * @param ofs
             */
            LIB4NEURO_API void optimize(lib4neuro::ErrorFunction &ef, std::ofstream* ofs = nullptr) override;
    
            /**
             *
             * @return
             */
            LIB4NEURO_API std::vector<double> *get_parameters() override;
    
            /**
             *
             * @param method
             */
            LIB4NEURO_API void add_learning_method( ILearningMethods * method );
        };
    
    }
    
    
    #endif //LIB4NEURO_LEARNINGSEQUENCE_H