/** Fonction d'initialisation du cycle. */ public final void init(boolean nonRandom) { _villesRestantes.addAll(_villes); // On vide le cycle possiblement existant. _arretes.clear(); _distance = 0; // Choix de la ville de depart aléatoirement ou non en fonction du boolean en paramètre if (nonRandom) { // Si le sommet n'a pas été setté. if (Tsp_ps.getSommetAleatoire() == -1) { int pos = _rand.nextInt(_nbVilles); _depart = _villes.get(pos); Tsp_ps.setSommetAleatoire(_depart.getNumber() - 1); } else { // On vérifie que le sommet est bien dans les bornes. Si ce n'est pas le cas, tant pis nous // settons un nouveau sommet. if (Tsp_ps.getSommetAleatoire() < _villes.size()) _depart = _villes.get(Tsp_ps.getSommetAleatoire()); else { int pos = _rand.nextInt(_nbVilles); _depart = _villes.get(pos); Tsp_ps.setSommetAleatoire(_depart.getNumber() - 1); } } } else { int pos = _rand.nextInt(_nbVilles); _depart = _villesRestantes.get(pos); } // On signale la ville choisie. System.out.println("Ville de départ : " + _depart.getNumber() + " / " + _nbVilles); // Retrait de la ville de départ des villes restantes _villesRestantes.remove(_depart); }