Ejemplo n.º 1
0
  /** 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);
  }