@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);

	}