package neuralnets;

/**
 * 
 * Dustin Stevens-Baier
 * original code by Vania Sarieva modified and fine tuned by Dustin
 * 
 * TSPSimulation creates the GUI used to run the simulation with different parameters for 
 * recombination and mutation rate
 */
import java.io.*;

public class TSPSimulation {

	private static double MUTATION_RATE = 0;
	private static int MUTATION_METHOD = 0;
	
	public static void main(String[] args) 
	{
		// User selection
		MUTATION_METHOD = getSimuMethod();
		MUTATION_RATE =  getSimuRate();
		
		System.out.println();
		System.out.println("TSPga Simulation: ");
		System.out.println("Method: " + MUTATION_METHOD);
		System.out.println("Rate: " + MUTATION_RATE);
		System.out.println();
		
		// Start simulation with user entered criteria
		TSPGA tspga = new TSPGA();
		tspga.runSimulation(MUTATION_RATE, MUTATION_METHOD, false);
		tspga.writeSimulation(MUTATION_RATE, MUTATION_METHOD);
	}
	
	public static int getSimuMethod()
	{
		int userInput = 0;
		int MUTATION_METHOD = 0;
		System.out.println("SELECT SIMULATION METHOD");
		System.out.println("1  ORDER METHOD");
		System.out.println("2  DISTANCE METHOD");
		System.out.print("Enter: ");
		// User types from command line
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		try
		{
			String input = br.readLine();
			if(input != null)
				userInput = Integer.valueOf(input).intValue();
			else
				userInput = 1;
		}
		catch(IOException e)
		{
			System.err.println(e);
		}
		switch(userInput)
		{
			case(1):
				MUTATION_METHOD = TSPGA.MUTATE_ORDER_METHOD;
				break;
			case(2):
				MUTATION_METHOD = TSPGA.MUTATE_DIST_METHOD;
				break;
			default:
				MUTATION_METHOD = TSPGA.MUTATE_ORDER_METHOD;	
		}
		
		return MUTATION_METHOD;
	}
	
	public static double getSimuRate()
	{
		int userInput = 0;
		double MUTATION_RATE = 0;
		System.out.println("SELECT MUTATION RATE:");
		System.out.println("1  0% Mutation");
		System.out.println("2  2% Mutation");
		System.out.println("3  4% Mutation");
		System.out.println("4  6% Mutation");
		System.out.print("Enter: ");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		try
		{
			String input = br.readLine();
			if(input != null)
				userInput = Integer.valueOf(input).intValue();
			else
				userInput = 1;
		}
		catch(IOException e)
		{
			System.err.println(e);
		}
		
		switch(userInput)
		{
			case(1):
				MUTATION_RATE = TSPGA.MUTATION_0_PERCENT;
				break;
			case(2):
				MUTATION_RATE = TSPGA.MUTATION_2_PERCENT;
				break;
			case(3):
				MUTATION_RATE = TSPGA.MUTATION_4_PERCENT;
				break;
			default:
				MUTATION_RATE = TSPGA.MUTATION_6_PERCENT;
		}
		
		return MUTATION_RATE;
	}
	
	
}