public static void main(String[] args) {
		
		/**
		 * Le programme accepte jusqu'entre 1 et 3 argument :
		 * - le premier est le lien vers le fichier en entrée contenant les tâches
		 * - le deuxième est le type de simulation attendu [OPTIONNEL]
		 * - le troisième est le répertoire de sortie [OPTIONNEL]
		 */
		String fichier = null;
		String mode = null;
		String outputDir = null;
		
		if(args != null && args.length > 0) {
			fichier = args[0];
			if (args.length > 1) {
				mode = args[1].toUpperCase();
				if (!OrdonnanceurFy.hasOrdonnanceur(mode)) {
					System.out.println("Ordonnanceur non connu !");
					System.out.println("Modes disponibles :");
					System.out.println(OrdonnanceurFy.getModes());
					System.exit(-1);
				}
				if (args.length > 2) {
					outputDir = args[2];
				}
			}
			else
			{
				//Si le type de simulation n'est pas précisé, le demander
				Scanner sc = new Scanner(System.in);
				while(!(OrdonnanceurFy.hasOrdonnanceur(mode))) {
					System.out.println("Avec quel ordonnanceur faut-il réaliser la simulation ?");
					System.out.println("Modes disponibles :");
					System.out.println(OrdonnanceurFy.getModes());
					
					mode = sc.next();
					
					if (!(OrdonnanceurFy.hasOrdonnanceur(mode))) {
						System.out.println("ERREUR : Ce mode de simulation n'est pas présent");
					}
				}
				
				//de même pour le répertoire de sortie
				System.out.println("Dossier de génération du fichier de sortie :");
				outputDir = sc.next();
				
				sc.close();
			}
		}
		else
		{
			System.out.println("/!\\ Aucun fichier en entrée /!\\");
			return ;
		}
		
		//Récupération du type d'ordonnanceur adéquat par rapport au mode choisi
		Ordonnanceur ordonnanceur = OrdonnanceurFy.getInstance(mode);
		Simulation sim = Simulation.getInstance(mode);
		
		sim.setOutputDir(outputDir);
		
		//Récupération des tâches contenues dans le fichier en entrée et allocation d'un tableau pour les contenir
		ordonnanceur.lireFichier(fichier);
		Tache[] taches = new Tache[ordonnanceur.getTaches().size()];
		
		//Test d'ordonnançabilité
		int sortie = ordonnanceur.isOrdonnancable(ordonnanceur.getTaches());
		
		if (sortie == -1) {
			System.out.println("ERREUR : Ensemble de tâches non ordonnançable !");
		}
		else
		{
			try {
				//Début de la simulation
				sim.setTaches(ordonnanceur.getTaches());
				ordonnanceur.calculeReveilsTerminaisons(sim.getTaches(), sim);
				Tache[] solution = ordonnanceur.run(ordonnanceur.getTaches().toArray(taches));
				//Enregistrement de la solution [FACULTATIF]
				sim.setSolution(solution);
				//Affichage textuel des statistiques de simulation
				sim.result();
				
				//Rendu graphique sous forme de fichier .ktr de la solution
				new GenKTR(sim);
				
			} catch (TacheAvorteeException e) {
				System.out.println(e.getMessage());
			}
		}

	}