NeuralNetwork
 Tudo Estruturas de dados Funções Páginas
neuron.h
1 #ifndef NEURON_H
2 #define NEURON_H
3 
4 #include <map>
5 #include <cstdlib>
6 #include <iostream>
7 #include <iomanip>
8 #include <ctime>
9 #include <utility>
10 #include <cmath>
11 #include <vector>
12 
13 using namespace std;
14 
28 class Neuron
29 {
30  public:
31 
35  enum ActivationFunction {
36  LINEAR,
37  STEP,
38  SIGMOID
39  };
43  Neuron();
44 
50  Neuron( ActivationFunction );
51 
59  Neuron( vector<double>, ActivationFunction );
60 
65  ~Neuron();
66 
71  void setLoadBias();
72 
78  void setInputs(vector<double>);
79 
86  void setInputs(vector<double>, vector<double>, double);
87 
92  void setInput(double);
93 
99  void setInput(double, double);
100 
105  void setError(double);
106 
111  void setExpectedOutput(double);
112 
117  void setDelta(double);
118 
119  // --> Setters
120 
121  // <-- Getters
122 
127  double getValueSumFunction();
128 
133  double getOutput();
134 
139  ActivationFunction getActivationFunction();
140 
145  const double getError() const;
146 
151  double getExpectedOutput() const;
152 
157  const double getDelta() const;
158 
159  // --> Getters
160 
165  void sumFunction(multimap<double, double>);
166 
171  void sumFunction();
172 
173  // <-- Setters
178  void setActivationFunction(ActivationFunction);
179 
180  // <-- Activation methods
187  double stepFunction();
188 
195  double linearFunction();
196 
202  double sigmoidFunction();
203 
204  // --> Activation methods
205 
206  // <-- Helpers
207 
213  double randDouble(double, double);
214 
219  double radianToDegree(double);
220 
221  // --> Helpers
222 
223  void print();
224  multimap<double, double> getMyInputs();
225  void addBuffer(double);
226  void startAssociation();
227  void setBias(double);
228  double deltaWeight(int);
229  void changeInput(vector<double>);
230  void changeWeight(int, double);
231  double getXi(int);
232  double getWi(int);
233  double getMyLoadBias();
234 
235  private:
243  multimap <double, double> myInputs;
244  vector < pair <double,double> > MYINPUTS;
245 
249  vector<double> myBuffer;
250 
254  double myValueSumFunction;
255 
259  double myLoadBias;
260 
264  ActivationFunction myActFunction;
265 
269  double myError;
270 
274  double myExpectedOutput;
275 
279  double myDelta;
280 };
281 
282 #endif // NEURON_H