lunes, 27 de abril de 2009

Soy padre...

...pero antes de que le de un "chungo" a la abuela, los niños son 2 robots Khepera que de momento se comportan como tal. Solo funcionan si estoy atento. Que recuerdos me trae de la asignatura de Bioinformática.

Y tras tres meses de abandono del blog, sigo con el proyecto fin de carrera. Ya colgare el código cuando lo acabe y lo presente ( si me dejan :) ).
De momento un apunte:

FILE: nn.h


#ifndef __NN_H__
#define __NN_H__

#include "synapse.h"
#include "nn_con.h"
#include "nn_neu.h"
#include "nn_layer_conf.h"

class neural_network {

private:

// Estructura de la red
neuron **layers;
connection ***ly_con;
int *layer_len, n_layers;
// funciones de activacion personalizables para cada capa
nn_layer_conf *layers_conf;

void deleteNN();

public:
neural_network() { layers = 0; ly_con = 0; layer_len = 0; n_layers = 0; layers_conf = 0; }
~neural_network() { deleteNN(); }

// Creacion de la red
// Crea la estructura de la red neuronal
void createNNStruct(int *layer_len_v, int n_layers) throw (int);

// Asigna los controladores del peso de las conexiones de la red
void setNNSynapseControllers(synapse *v_ind, int v_ind_len) throw (int);
// Elimina los controladores del peso de las conexiones de la red
void deleteNNSynapseControllers() throw (int);

// Configuracion de la red
// Establece las neuronas "ocultas" en las capas de entrada y salida (no actualizan los pesos de sus conexiones)
void setHiddenNeuron(int neuron_pos, int layer) throw (int);
// Configura la funcion de activacion de la capa elegida
void setLayerFoA(int layer, nn_layer_conf *nnlc) throw (int);
// Obtiene el numero de capas de la red
int getLayersCount() { return n_layers; }

// Procesamiento en la red
// Reinicia la red
void resetNetwork() throw (int);
// Procesa valores de entrada
float *processInput(float *input_v, int iv_len, int &ov_len) throw (int);

};

#endif