Program: 113166
Project: 113166
Buggy source:
/** 
 * You can get results calling getResults() method.
 * @param neuralNetwork type of neural net
 * @param dataSet
 */
@Override public void train(DataSet dataSet){
  generateTrainingSettings();
  List<TrainingResult> statResults=null;
  DataSet trainingSet, testSet;
  if (splitTrainTest) {
    List<DataSet> dataSplit=dataSet.split(splitPercentage,100 - splitPercentage);
    trainingSet=dataSplit.get(0);
    testSet=dataSplit.get(1);
  }
 else {
    trainingSet=dataSet;
    testSet=dataSet;
  }
  if (generateStatistics) {
    statResults=new ArrayList<>();
  }
  int trainingNo=0;
  for (  TrainingSettings trainingSetting : trainingSettingsList) {
    System.out.println("String_Node_Str");
    trainingNo++;
    System.out.println("String_Node_Str" + trainingNo);
    trainingSetting.setTrainingSet(splitPercentage);
    trainingSetting.setTestSet(100 - splitPercentage);
    for (int subtrainNo=1; subtrainNo <= repeat; subtrainNo++) {
      System.out.println("String_Node_Str" + subtrainNo);
      MultiLayerPerceptron neuralNet=new MultiLayerPerceptron(dataSet.getInputSize(),trainingSetting.getHiddenNeurons(),dataSet.getOutputSize());
      BackPropagation bp=neuralNet.getLearningRule();
      bp.setLearningRate(trainingSetting.getLearningRate());
      bp.setMaxError(trainingSetting.getMaxError());
      bp.setMaxIterations(trainingSetting.getMaxIterations());
      neuralNet.learn(trainingSet);
      ConfusionMatrix cm=new ConfusionMatrix(new String[]{"String_Node_Str"});
      TrainingResult result=new TrainingResult(trainingSetting,bp.getTotalNetworkError(),bp.getCurrentIteration(),cm);
      System.out.println(subtrainNo + "String_Node_Str" + bp.getCurrentIteration());
      if (generateStatistics) {
        statResults.add(result);
      }
 else {
        results.add(result);
      }
    }
    if (generateStatistics) {
      TrainingResult trainingStats=calculateTrainingStatistics(trainingSetting,statResults);
      results.add(trainingStats);
      statResults.clear();
    }
  }
}

Fixed version (ground truth):
/** 
 * You can get results calling getResults() method.
 * @param neuralNetwork type of neural net
 * @param dataSet
 */
public void train(DataSet dataSet){
  generateTrainingSettings();
  List<TrainingResult> statResults=null;
  DataSet trainingSet, testSet;
  if (splitTrainTest) {
    List<DataSet> dataSplit=dataSet.split(splitPercentage,100 - splitPercentage);
    trainingSet=dataSplit.get(0);
    testSet=dataSplit.get(1);
  }
 else {
    trainingSet=dataSet;
    testSet=dataSet;
  }
  if (generateStatistics) {
    statResults=new ArrayList<>();
  }
  int trainingNo=0;
  for (  TrainingSettings trainingSetting : trainingSettingsList) {
    System.out.println("String_Node_Str");
    trainingNo++;
    System.out.println("String_Node_Str" + trainingNo);
    trainingSetting.setTrainingSet(splitPercentage);
    trainingSetting.setTestSet(100 - splitPercentage);
    for (int subtrainNo=1; subtrainNo <= repeat; subtrainNo++) {
      System.out.println("String_Node_Str" + subtrainNo);
      MultiLayerPerceptron neuralNet=new MultiLayerPerceptron(dataSet.getInputSize(),trainingSetting.getHiddenNeurons(),dataSet.getOutputSize());
      BackPropagation bp=neuralNet.getLearningRule();
      bp.setLearningRate(trainingSetting.getLearningRate());
      bp.setMaxError(trainingSetting.getMaxError());
      bp.setMaxIterations(trainingSetting.getMaxIterations());
      neuralNet.learn(trainingSet);
      ConfusionMatrix cm=new ConfusionMatrix(new String[]{"String_Node_Str"});
      TrainingResult result=new TrainingResult(trainingSetting,bp.getTotalNetworkError(),bp.getCurrentIteration(),cm);
      System.out.println(subtrainNo + "String_Node_Str" + bp.getCurrentIteration());
      if (generateStatistics) {
        statResults.add(result);
      }
 else {
        results.add(result);
      }
    }
    if (generateStatistics) {
      TrainingResult trainingStats=calculateTrainingStatistics(trainingSetting,statResults);
      results.add(trainingStats);
      statResults.clear();
    }
  }
}