IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Implémentation algorithme colonie de fourmis


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Points : 16
    Points
    16
    Par défaut Implémentation algorithme colonie de fourmis
    Bonjour,

    j'ai trouvé le tutoriel de Pierre Schwartz, http://khayyam.developpez.com/articl...es-de-fourmis/, concernant l'algorithme de colonie de fourmis. Après avoir compris comment il fonctionnait j'ai décidé de télécharger le code source accessible en fin de tutoriel et je n'arrive pas à le compiler.

    J'ai deux erreurs détectées par mon compilateur :

    -main.cpp|11|error: 'atoi' was not declared in this scope
    -main.cpp|16|error: 'srand' was not declared in this scope

    j'ai donc ajouté : #include <cstdio> et #include <cstdlib>

    mais à ce moment la j'obtiens 2 fois une nouvelle erreur sur une même ligne :
    stl_vector.h|1207|error: no matching function for call to 'std::vector<std::vector<int> >::_M_fill_assign(int&, int&)'

    je travaille avec Code::Blocks 12.11 sous windows 8.
    J'ai aussi essayé ce code avec Code::Blocks 10.05 sous Lubuntu 12.10.

    Je ne vois pas ce que je pourrais faire pour que ce code fonctionne chez moi, pourriez vous m'aider s'il vous plait ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Pourrais-tu nous montrer la ligne en question dans laquelle tu fais appel à cette méthode ?

    Sinon en attendant ce lien pourrait t'aider.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    En fait quand je clique sur l'erreur dans le message de build code blocks ouvre stl_vector.h.

    Le passage qui semble poser problème est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     // _GLIBCXX_RESOLVE_LIB_DEFECTS
          // 438. Ambiguity in the "do the right thing" clause
          template<typename _Integer>
            void
            _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
            { _M_fill_assign(__n, __val); }

  4. #4
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Le problème ne vient pas de la STL mais de ton code donc montre nous où tu appelles cette méthode.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Je me doute bien que le code source de developpez.com tiens la route :p

    je pense que le problème viens d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    problem::problem(int nbVilles, float borne1, float borne2, float coeff)
    	:nbCities(nbVilles), borneMax(borne1), borneMin(borne2), evaporation(coeff){
     
    	distances.assign(nbCities, 0);
    	pheromones.assign(nbCities, 0);
    	for (int i = 0; i<nbCities; i++){
            distances[i].assign(nbCities, 0);
    		pheromones[i].assign(nbCities, borneMin);
    	}
     
        for (int i = 0; i<nbCities; i++){
            distances[i][i] = 0;
    		for (int j = i+1; j<nbCities; j++)
                distances[i][j] = distances[j][i] = rand()%100;
        }
     
        // solution optimale
        for (int i=0; i<nbCities; i++)
            distances[i][(i+1)%nbCities] = distances[(i+1)%nbCities][i] = 1;
     
    	optimalLength = nbCities;
    }
    distance et pheromones sont des vecteurs.

    j'ai aussi peur que ça vienne de mon installation vous en pensez quoi ?

  6. #6
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Si j'ai bien compris, distances est un vector<vector<int>>. Du coup cette ligne est invalide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    distances.assign(nbCities, 0); // ne marche que sur les vectors
    Cette remarque tient pour tous tes vector<vector<int>>.

    Pour faire ça il te faudra faire une boucle toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int nbCities;
     
    distances.resize(nbCities--);
    for (int i = 0; i < distances.size(); ++i){
      distances[i].assign(nbCities, 0);
    }
    La méthode resize est expliquée ici.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    merci beaucoup
    c'est casi-parfait il faut juste enlever les " --" ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        distances.resize(nbCities);
        for (size_t i = 0; i < distances.size(); ++i){
            distances[i].assign(nbCities, 0);
        }
     
        pheromones.resize(nbCities);
        for (size_t i = 0; i < pheromones.size(); ++i){
            pheromones[i].assign(nbCities, 0);
        }
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    distances.assign(nbCities, 0);
        pheromones.assign(nbCities, 0);

  8. #8
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Oups, oubliez des enlever ! A la base je voulais faire un autre truc mais finalement je suis allé au plus simple. Au temps pour moi.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    USTHB
    Inscrit en
    Avril 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : USTHB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    mes amis si ce programme marche bien envoyé moi le fichier pour l'exécuté chez moi et le voir psk moi j'ai pas pu

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Juin 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    Après avoir compris comment il fonctionnait j'ai décidé de télécharger le code source accessible en fin de tutoriel et je n'arrive pas à le compiler.
    malgré j'ai corriger les erreurs qui tu a trouver déjà donc j'ai pas cambrer comment faire
    si quelqu’un a ce programme marche bien envoyé moi le fichier pour l'exécuté chez moi et le voir psk moi j'ai pas pu

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 123
    Points
    12 123
    Par défaut
    Message d'erreur, SVP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme colonie de fourmis
    Par mahmoudbs dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/07/2012, 20h58
  2. Algorithme colonie de fourmis API
    Par Aymanito dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/05/2011, 23h21
  3. Réponses: 2
    Dernier message: 05/07/2010, 10h37
  4. Algorithme colonies de fourmis .Le plus court chemin
    Par momento85 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 03/04/2010, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo