// MICHAEL TARTAGLIA
// MARCH 27 2003
// PROJECT USING EVOLUTIONARY PROGRAMMING TECHNIQUES;
//	SHOWING "Population.class" IN ACTION

public class GenDriver2 {
	public static void main(String[] args) {
	 boolean errors = false, // caught errors?
		 uf = true,	 // use fitness
		 um = true;	 // use mutation
	 int mu = 1,		 // mutation factor, in %
	     ge = 65,		 // # of genes
	     pe = 10,		 // # of people
	     generations = 0;	 // # of generations (from args)
	 String[] s = new String[pe];	// for output
	 Population group = new Population(pe,ge,um,uf,mu);

	 if (args.length == 0) {
		System.out.println("Usage:\tjava GenDriver2 #");
	 } else {
		try {generations = Integer.parseInt(args[0]);}
		catch (Exception e) {errors = true;}
		if (!errors && generations > 0) {
			// PRINT HEADER
			System.out.println("\n\nEVOLUTIONARY ALGORITHM");
			System.out.println(" by Michael Tartaglia\n");

			// FAST FORWARD THROUGH x GENERATIONS
			do {
				group.setGeneration();
				generations--;
	 		} while (generations > 0);

			// GET CURRENT GENERATION VIEW & PRINT EACH
			s = group.getGeneration();
			for (int i = 0; i < s.length; i++)
			 System.out.println(s[i]);

			// PRINT OUT DATA USED
			System.out.println("\t# of people:\t" + pe);
			System.out.println("\t# of genes:\t" + ge);
			if (!um) {
			 System.out.println("\tUsing muation?\t" + um);
			} else System.out.println("\tMutation rate:\t"
				+ mu + "%");
			System.out.println("\tUsing fitness?\t" + uf);
			System.out.println("\tGenerations:\t"
				+ Integer.parseInt(args[0]));
			System.out.println("\tYears passed:\t"
				+ Double.parseDouble(args[0])*25.352);
		} else System.out.println("Usage:\tjava GenDriver2 #\n\t... # must be positive integer");

	 }
	} // END OF MAIN METHOD
}
