public static double trainNetwork( final String what, final BasicNetwork network, final NeuralDataSet trainingSet) { // train the neural network CalculateScore score = new TrainingSetScore(trainingSet); final Train trainAlt = new NeuralSimulatedAnnealing(network, score, 10, 2, 100); final Train trainMain = new Backpropagation(network, trainingSet, 0.00001, 0.0); final StopTrainingStrategy stop = new StopTrainingStrategy(); trainMain.addStrategy(new Greedy()); trainMain.addStrategy(new HybridStrategy(trainAlt)); trainMain.addStrategy(stop); int epoch = 0; while (!stop.shouldStop()) { trainMain.iteration(); System.out.println( "Training " + what + ", Epoch #" + epoch + " Error:" + trainMain.getError()); epoch++; } return trainMain.getError(); }