package tsp; import java.awt.*; import java.io.PrintStream; import tsp.*; public class TSP { private static int MAX_POINTS = 200; private static int MAXTIME = 30; private static final String MAP_FILE_NAME = "."; private static int POPULATION = 200; TSPMap map; TSPTour tour; Thread worker; boolean threadWorking; public static void main(String args[]) { if(args.length > 0 && (args[0].equals("-h") || args.length < 3)) { System.out.println("TSP <#city> "); return; } if(args.length > 0) { // you're changing them here. MAX_POINTS = Integer.parseInt(args[0]); POPULATION = Integer.parseInt(args[1]); MAXTIME = Integer.parseInt(args[2]); } TSP tsp = new TSP(); tsp.doGa(); } public void doGa() { if(!threadWorking) { worker = new Thread() { public void run() { TSPGeneticSolver tsp = new TSPGeneticSolver(map, 200); tour = tsp.getSolution(); long startT = System.currentTimeMillis(); for(int i = 0; (System.currentTimeMillis() - startT) / 1000L < (long)TSP.MAXTIME; i++) { tsp.doOneGeneration(); tour = tsp.getSolution(); System.out.println("Calculating (" + i + "): " + tsp.getSolution().getLength()); } System.out.println("T: " + (System.currentTimeMillis() - startT) / 1000L); System.out.println("GA-O: " + tsp.getSolution().getLength()); threadWorking = false; } }; worker.start(); threadWorking = true; } } }