public void initializeBuildOrder() {
		File knowledgeBase = new File(knowledgeBasePath);

		// If the file does not exist, create it and write 12 randomly generated
		// build order to it
		if (!knowledgeBase.isFile()) {
			System.out.println("File Does not exist, creating...");
			try {
				generateInitialBuildOrders(knowledgeBase);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		// Read from the file, get the build order index, load that build order
		// and run it
		try {
			Scanner in = new Scanner(knowledgeBase);

			// Get the index of the build order we want to load:
			String line = in.nextLine();
			Gson gson = new Gson();
			KnowledgeBaseObject kb = gson.fromJson(line, KnowledgeBaseObject.class);
			
			if (kb.readyToMutate) {
				// Store what we did for this first iteration
//				File knowledgeBaseIteration = new File(knowledgeBasePath + "_iteration" + buildOrderIteration++);
//				BufferedWriter writer = new BufferedWriter(new FileWriter(
//						knowledgeBaseIteration, false));
//				writer.write(gson.toJson(kb));
//				writer.newLine();
//				Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
//				writer.write(gsonPretty.toJson(kb));
//				writer.newLine();
//				writer.close();
//				
//				// Then naturally select the new orders
//				forceNaturalSelection(kb);
			}
			else {
				loadBuildOrderFromFile(kb);
			}
			
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}