//******************************************************************************* // CSC 143 Computer Programming II Spring 1999 Instructor: Keith Hughes // // Homework 3 // File : \\Venus\katy\CIS143\Homework3\AdalineNetwork\NeuralNet.h // // Purpose : Declaration for NeuralNet and AdalineNet classes. // // Author : Hsin-yi F. Berg // Date : 5/9/1999 Sun. // Last Update: 5/28/1999 Fri. // Update Note: NeuralNet is moved in this header file from layer.h // AdalineNet is added in this header file. //******************************************************************************* #ifndef NEURALNET_H #define NEURALNET_H #include "layer.h" #include <iostream.h> #include <fstream.h> typedef int ID; class Neuronlayer; class LinkLayer; class NeuralNet { public: /* NeuralNet::NeuralNet() Default constructor for an NeuralNet. NeuralNet is created empty. */ NeuralNet(); /* NeuralNet::NeuralNet(const NeuralNet &otherNeuralNet) Copy constructor for an NeuralNet. */ NeuralNet(const NeuralNet &otherNeuralNet); /* NeuralNet::~NeuralNet() Destructor for an NeuralNet. */ ~NeuralNet(); /* NeuralNet &NeuralNet::operator=(const NeuralNet &otherNeuralNet) Assignment operator for this NeuralNet */ NeuralNet &operator=(const NeuralNet &otherNeuralNet); /* void NeuralNet::SetHowManyNeuronLayers(int size) Set how many neuron layers in the NeuralNet. Cannot set the number of Neuron Layers to 0. */ void SetHowManyNeuronLayers(int size); /* void NeuralNet::SetSizeOfNeuronLayer(int whichLayer, int size) Set how many neurons a paticular NeuronLayer contains. Cannot set the number of Neurons to 0. */ void SetSizeOfNeuronLayer(int whichLayer, int size); /* void NeuralNet::SetInputValue(int whichNeuron, double Value) Set the value of a specific Neuron in input NeuronLayer */ void SetInputValue(int whichNeuron, double Value); /* double NeuralNet::GetOutputValue(int whichNeuron) Get the value of a specific Neuron in output NeuronLayer */ double GetOutputValue(int whichNeuron) const; /* void NeuralNet::Print(ostream &out) const Print out the internal state of the NeuralNet to client supplied ostream */ void Print(ostream &out) const; /* void NeuralNet::Fire(void) Fire the whole NeuralNet layer by layer */ void Fire(void); /* void NeuralNet::InterConnect(void) Create a fully connected Network - Eevery neuron in one NeuronLayer is connected to every neuron in adjecent NeuronLayer. */ void InterConnect(void); /* void NeuralNet::ReadFromFile(istream &in) Read data into this NeuralNet instance from file specified by "in" */ void NeuralNet::ReadFromFile(istream &in); /* void NeuralNet::WriteToFile(ostream &out) Write data of this NeuralNet instance to file specified by "out" */ void NeuralNet::WriteToFile(ostream &out); protected: // id_count keeps track of how many NeuralNet that have been created static int id_count; // each NeuralNet automatically gets an unique id when it's created ID id; // number of Neurons in this NeuronLayer int numNeuronLayer; // neuronLayers points to a collection of NeuronLayers NeuronLayer *neuronLayers; // linkLayers points to a collection of LinkLayers LinkLayer *linkLayers; /* void NeuralNet::clone(const NeuralNet &otherNeuralNet) Deep copy of otherNeuralNet. This NeuralNet must be cleaned up before calling clone. */ void clone(const NeuralNet &otherNeuralNet); /* void NeuralNet::destroy(void) Clean up this NeuralNet. Deallocate all dynamic memory, reinitialize it's members. */ void destroy(void); /* void NeuralNet::Connect(Neuron &input_Neuron, Neuron &output_Neuron, Link &link, double weight) Private Utility: Connecting a link to its input and output neurons with a specific weight. */ void Connect(Neuron &input_Neuron, Neuron &output_Neuron, Link &link, double weight); }; #endif
Back Top