@Override
	public void start(Stage primaryStage) throws Exception {
		Group root = new Group();
		primaryStage.setTitle("Circle Fit");
		primaryStage.setScene(new Scene(root));
		
		//Draw the random generate circles
	    Canvas canvas = new Canvas(PANEL_WIDTH, PANEL_HEIGHT);
	    root.getChildren().add(canvas);  
	    GraphicsContext gc = canvas.getGraphicsContext2D();
	    gc.setStroke(Color.BLACK);
	    circles.stream().forEach(c -> gc.strokeOval(c.center_x-c.radius, c.center_y-c.radius, c.radius*2, c.radius*2));
	    
	    //Update population and draw best solution
	    Canvas canvas2 = new Canvas(PANEL_WIDTH, PANEL_HEIGHT);
	    root.getChildren().add(canvas2);
	    GraphicsContext gc2 = canvas2.getGraphicsContext2D();
	    gc2.setFill(Color.RED);
	    new AnimationTimer(){
	        public void handle(long currentNanoTime){
	        	gc2.clearRect(0, 0, PANEL_WIDTH, PANEL_HEIGHT);
	        	pop.newGeneration();
    	    	Chromo<Integer> best = pop.getFittestChromo();
    			Circle c = new Circle(best.getGenes().get(0), best.getGenes().get(1), best.getGenes().get(2));
    			gc2.fillOval(c.center_x-c.radius, c.center_y-c.radius, c.radius*2, c.radius*2);
    			if (pop.getNumberOfGenerations() >= MAX_GENERATIONS)
    				this.stop();
	        }
	    }.start();
	    
	    primaryStage.show();
	}