Skip to content
Snippets Groups Projects
NormalizationStrategyACSF.h 1.91 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    #ifndef LIB4NEURO_NORMALIZATIONSTRATEGYACSF_H
    #define LIB4NEURO_NORMALIZATIONSTRATEGYACSF_H
    
    #include <limits>
    #include <vector>
    #include <unordered_map>
    
    #include <serialization/access.hpp>
    
    #include "../SymmetryFunction/SymmetryFunction.h"
    #include "../DataSet/DataSet.h"
    
    namespace lib4neuro {
    /**
     *
     */
    class NormalizationStrategyACSF: public NormalizationStrategy {
    
    protected:
    
        /**
         * information about the real range of input values for each element
         */
        std::unordered_map<ELEMENT_SYMBOL, std::vector<double> > inputs_min, inputs_max;
    	
    	/**
    	* information about the range of the output
    	*/
    	double outputs_min, outputs_max;
    	
    	/**
    	* information about the various elements
    	*/
    	
    	std::unordered_map<ELEMENT_SYMBOL, unsigned int > number_of_inputs_per_element;
    	
    	std::vector<ELEMENT_SYMBOL> order_of_elements;
    
    
    public:
    
        /**
         *
         */
        struct access;
    	
    	NormalizationStrategyACSF( 
    		const std::unordered_map<ELEMENT_SYMBOL, Element*>& element_description,
    		const std::vector<ELEMENT_SYMBOL> &element_order,
    		const std::vector<std::pair<std::vector<double>, std::vector<double>>> &data
    	);
    
        virtual ~NormalizationStrategyACSF( ) = default;
    	
    	
    	void normalize_input(std::vector<double> &inp);
    
    	void de_normalize_input(std::vector<double> &inp);
    
    	void normalize_output(std::vector<double> &out);
    
    	void de_normalize_output(std::vector<double> &out);
    
        /**
         *
         * @param n
         * @param max
         * @param min
         * @return
         */
        virtual double normalize(double n,
                                 double max,
                                 double min){
    								 return 0.0;
    							 };
    
        /**
         *
         * @param n
         * @param max
         * @param min
         * @return
         */
        virtual double de_normalize(double n){
    		return 0.0;
    	}
    	
    	
    
    };
    
    }//end of namespace lib4neuro
    
    #endif //LIB4NEURO_NORMALIZATIONSTRATEGYACSF_H