Main Page | Namespace List | Data Structures | File List | Data Fields | Globals

network.h

Go to the documentation of this file.
00001 # ifndef NETWORK_H
00002 # define NETWORK_H
00003 
00004 # include <layer.h>
00005 # include <axon.h>
00006 # include <qstring.h>
00007 # include <qmessagebox.h>
00008 # include <qfile.h>
00009 # include <qtextstream.h>
00010 # include <iostream>
00011 # include <list>
00012 # include <vector>
00013 
00014 # define SEQUENTIAL 1
00015 # define RANDOM_WITH 2
00016 # define RANDOM_WITHOUT 3
00017 
00018 using namespace std;
00019 
00020 class Network {
00021 private:
00022         Layer *input;
00023         Layer *output;
00024         list<Layer*> *hidden;
00025         list<Axon*> *axons;
00026         int nextFreeId;
00027         vector<int> hiddenLayersId ;
00028         float vstep ;
00029         float neursize ;
00030         float axsize ;
00031         int shiny ;
00032         bool displayneurons_ ;
00033         bool displayaxons_ ;
00034         bool displaylayers_ ;
00035         bool displayvalues_ ;
00036         float k ;
00037         vector<double> *errorEvolution;
00038         int currentEpoch;
00039         double currentAverageError;
00040         int EPS;
00041         int exampleOrder;
00042 
00043 public:
00044         Network();
00045    
00049     int getnextfreeid(void) { return nextFreeId ; }
00050     void setnextfreeid(int id) { nextFreeId = id ; }
00051         Layer* getInputLayer( void ) ;
00052         Layer* getOutputLayer( void ) ;
00053         list<Layer*>* getHiddenLayers( void ) ;
00054         list<Axon*>* getAxons( void ) ;
00055         int getNbNeurons( int id_layer ) ;
00056         int getHiddenLayerId(int i) ;
00057         int getHiddenLayerPos( int id ) ;
00058         Layer* getLayer(int id_l) ;
00059         Neuron* getNeuronFromId(int id_neur);
00060         int getLayerNumTheNeuronIsOn( int id_neur ) ;
00061         int getLayerNumFromLayerId( int id_layer ) ;
00062         float getK();
00063         void setK(float _k);
00064         int getEPS();
00065         void setEPS(int e);
00066         int getCurrentEpoch();
00067         double getCurrentAverageError();
00068         vector<double>* getErrorEvolution();
00069    
00073         int shininess( void ) ;
00074         float neuronsize( void ) ;
00075         float axonsize( void ) ;
00076         float getVStep( void ) ;
00077         bool displayaxons( void ) ;
00078         bool displayneurons( void ) ;
00079         bool displaylayers( void ) ;
00080         bool displayvalues( void ) ;
00081         void setDisplayAxons( bool display ) ;
00082         void setDisplayNeurons( bool display ) ;
00083         void setDisplayLayers( bool display ) ;
00084         void setDisplayValues( bool display ) ;
00085         ManipulatedFrame * frame( int id ) ;
00086         void setShininess( int shiny ) ;
00087         void draw( int selected, const bool names = false ) ;
00088 
00092         int nbHiddenLayers();
00093         int nbLayers();
00094         void addHiddenLayer();
00095         void addHiddenLayer(int id);
00096         void addNHiddenLayers( int n ) ;
00097         void removeHiddenLayer(int id_layer);
00098         void clearLayer(int id_layer);
00099         void clearHiddenLayers();
00100         bool existLayer(int id_layer);
00101 
00105         void addNeuron(int id_layer);
00106         void addNeuron(int id_layer, int id, float x, float z);
00107         void addNNeurons(int id_layer, int n);
00108         void removeNeuron(int id_neur);
00109         int nbNeurons( void );
00110         bool existNeuron(int id_neur);
00111         
00115         int nbAxons( void ) ;
00116         void addAxon(int id_neur1, int id_neur2);
00117         void addAxon(int id, int id_neur1, int id_neur2);
00118         void addAxon(int id, int id_neur1, int id_neur2, double weight);
00119         void removeAxon(int id_ax, bool b);
00120         void removeAxons();
00121         bool existAxon(int id_ax);
00122         bool existAxon(int id_neur_in, int id_neur_out);
00123         
00127         void resetAllValues();
00128         void resetTempValues();
00129         void initLayerIn(vector<double> in);
00130         void forwardPropagation();
00131         vector<double>* getOutValues();
00132         vector<double>* computeOut(vector<double> *in);
00133         double computeErrorRate(vector<double> *errors);
00134         vector<double>* computeErrors(vector<double> *computed, vector<double> *expected);
00135         void initLayerOutGradient(vector<double> *errors);
00136         void gradientBackPropagation(vector<double> *errors);
00137         void changeAxonsWeight(double convergenceCoeff);
00138         double learnExample(vector<double> *exampleIn, vector<double> *exampleOut, double convergenceCoeff);
00139         double computeAverage(vector<double> v);
00140         list< vector<double> >* readExampleFile(QTextStream *file, QString mode);
00141         vector<double> readTestFile(QTextStream *file);
00142         void link2Layers(Layer *first, Layer *second);
00143         void constructTopologyMLP();
00144         void constructTopologyCC();
00145         void clearErrorEvolution();
00146         void setExampleOrder(int o);
00147         void learning(QString file, double errorThreshold, int maxNbEpoch, double convergenceCoeff);
00148         
00152         list< vector<double> >* copyVectorList(list< vector<double> > *vl);
00153         void description();
00154 };
00155 
00156 # endif

Generated on Fri Dec 3 14:57:50 2004 for INN by doxygen 1.3.6