public void setup() {
		
		// We want to continue searching for starting solutions as long as we don't have any solutions and there is time left on the clock
		while (System.currentTimeMillis() < endTime && solutions.size() == 0) {
			
			// Begin by populating our solution set with random, valid solutions
			for (int i = 0; i < 40; ++i) {
				
				// Generate a new solution
				Solution solution = generator.buildSolution();
				if (solution != null) {
					
					// If we succeed, rank the assignments and add it to our list of solutions
					solution.rankAssignments();
					solutions.add(solution);
				} else {
					solveable = false;
					break;
				}
			}
	
		}
			
		// If we got at least one solution, set bestSolution
		if (solutions.size() > 0) {
			for (Solution solution : solutions) {
				if (bestSolution == null || solution.getPenalty() < bestSolution.getPenalty())
					bestSolution = solution;
			}
		}
	}