public void forceNaturalSelection(KnowledgeBaseObject kb) {
		ArrayList<BuildOrder> ordersToSave = new ArrayList<BuildOrder>();
		ArrayList<BuildOrder> allOrders = new ArrayList<BuildOrder>(kb.orders);
		
		
		for (int i = 0; i < NUM_ORDERS_PRESERVED; i++) {
			// Find the highest scoring build order, preserve it, remove it from
			// the initial list
			int highest = -100000;
			BuildOrder temp = null;
			for (BuildOrder order : allOrders) {
				if (order.score > highest) {
					highest = order.score;
					temp = order;
				}
			}
			ordersToSave.add(temp);
			allOrders.remove(temp);
		}
		
		createNextGeneration(ordersToSave);
		
		try {
			File knowledgeBase = new File(knowledgeBasePath);
			Scanner newScanner = new Scanner(knowledgeBase);
			// Get the index of the build order we want to load:
			String line = newScanner.nextLine();
			Gson gson = new Gson();
			KnowledgeBaseObject newKB = gson.fromJson(line, KnowledgeBaseObject.class);
			System.out.println("Loading index: " + newKB.index);

			loadBuildOrderFromFile(newKB);
			newScanner.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}