private void startSimulation() throws InterruptedException {

		start = System.currentTimeMillis();


		SimpleDirectedWeightedGraph<Node, DefaultWeightedEdge> swg = createMapGraph();

		Queue<Node> pathForVehicle = getPathForVehicle(vehicle, swg, null);

		if(pathForVehicle.isEmpty()) {
			removeTemporaryStreets();
			throw new NoPathFoundExceptionException(vehicle.getName());
		}

		Node n = pathForVehicle.poll();

		//statistics
		if(n!=null){

			vehicle.addNode(n);

		}

		while(!vehicle.getCurrentNode().equals(vehicle.getFinishNode())){

			vehicle.setNextNode(pathForVehicle.poll());								

			Street currentStreet = null;

			for(int i = 0; i<simulationEditorModel.getMapEditorModel().getStreets().size(); i++) {
				Street street = simulationEditorModel.getMapEditorModel().getStreets().get(i);
				if(street.getStart().equals(vehicle.getCurrentNode()) && street.getEnd().equals(vehicle.getNextNode()) ||
						street.getStart().equals(vehicle.getNextNode()) && street.getEnd().equals(vehicle.getCurrentNode())){
					currentStreet = street;
					break;
				}

			}

			currentStreet.getVehicles().add(vehicle);

			driveFromTo(vehicle.getCurrentNode(), vehicle.getNextNode(), currentStreet);

			//statistics
			vehicle.addNode(vehicle.getNextNode());

			vehicle.setCurrentNode(vehicle.getNextNode());
			currentStreet.getVehicles().remove(vehicle);




		}			

		//reinitialize the current Node so a new simulation can be performed
		vehicle.setCurrentNode(vehicle.getStartNode());


		//statistics
		vehicle.addNode(vehicle.getFinishNode());
		updateStatistics();
		removeTemporaryStreets();
	}