@Override
	public void learnNetworkRules(List<Pair> learningDataset, int startRuleNum,
			int endRuleNum, int epochPerRule) {
		
		double smallestError = 0;
		int bestRuleCount = 0;
		
		for (int r = startRuleNum; r <= endRuleNum; r++) {
			
			createRules(r);
			double iterError = 0;
			
			System.out.println("==========");
			
			for (int e = 0; e < epochPerRule; e++) {
				
				iterError = learnNetwork(learningDataset);
				
				System.out.println("Rules: " + r + " Epoch: " + e + " Error: " + iterError);
				
			}
			
			if ( r == startRuleNum || iterError < smallestError) {
				bestRuleCount = r;
				smallestError = iterError;
			}
			
		}
		
		System.out.println("Best Rule Count: " + bestRuleCount + " Error: " + smallestError);
		
	}