public void Configure(int nInputNeuron, int nHiddenNeuron, int nOutputNeuron, double learnRate, double momentum, double error, string inputDatasetFilePath, string outputDatasetFilePath, string serialPort) { _neuralNetwork = new NeuralNetwork(); _neuralNetwork.NInputNeurons = nInputNeuron; _neuralNetwork.NHiddenNeurons = nHiddenNeuron; _neuralNetwork.NOutputNeurons = nOutputNeuron; _neuralNetwork.AnnInputDimension = 13; //TODO: Da aggiustare in base al file del dataset _neuralNetwork.AnnOutputDimension = 13; //TODO: Da aggiustare in base al file del dataset _neuralNetwork.LearnRate = learnRate; _neuralNetwork.Momentum = momentum; _neuralNetwork.Error = error; LoadDatasetInputOutput(inputDatasetFilePath, outputDatasetFilePath); _networkState = _neuralNetwork.CommitDataSet(); //_serialManger = new SerialManger(serialPort); _socketManager = new SocketManager("192.168.4.1", 65535); }
private void Action() { if (NetworkState == NeuralNetwork.NetworkState.CONFIGURED) { _networkState = _neuralNetwork.TrainNetwork(); if (NetworkState == NeuralNetwork.NetworkState.TRAINED) { while (!_requestStop) { _tempSensorData = DequeueElementToSensorDataQueue(); if (_tempSensorData != null) { _neuralNetwork.InputToAnalize = new double[] { _normUtilPosition.normalize((int)_tempSensorData.ProximityDirection), _normUtilDistance.normalize((int)_tempSensorData.ProximityDistance), _normUtilLux.normalize((int)_tempSensorData.LuxIntensity) }; _processOutput = _neuralNetwork.ProcessInput(); //Effettuo la denormalizzazione degli elementi _processOutput[0] = _normUtilPosition.denormalize(_processOutput[0]); _processOutput[1] = _normUtilSpeed.denormalize(_processOutput[1]); _processOutput[2] = _normUtilLux.denormalize(_processOutput[2]); PrepareDataForSerialTrasmission(ref _processOutput); Console.WriteLine(_processOutput[0] + " " + _processOutput[1] + " " + _processOutput[2]); #if DEBUG //Console.WriteLine(_processOutput[0] + " " + _processOutput[1] + " " + _processOutput[2]); #endif //_serialManger.EnqueueElementToRS232DataQueue(new RS232Data(_processOutput)); SpiderCommandAdapter.MenageSpiderCommand((byte)_processOutput[0], (byte)_processOutput[1], (byte)_processOutput[2], ref _socketManager); } Thread.Sleep(500); } } } }