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

Python Discussion :

Problème du voyageur


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    iut GeII
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : iut GeII

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Par défaut Problème du voyageur
    Bonjour,
    je dois écrire un programme sous python 2.7 , faisant intervenir les classes et objets.
    Mon problème est : à partir de coordonnées GPS ( longitude et Latitude), trouver le meilleurs trajet entre 12 Villes différentes.
    Merci de votre aide,
    Cordialement,
    Une étudiante qui débute python.

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    L'objectif du forum, c'est l'entraide, pas le travail bénévole pour les autres.
    Tu présentes ton code (avec les balises de code) et les participants t'aiguillent.

  3. #3
    Membre à l'essai
    Femme Profil pro
    iut GeII
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : iut GeII

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Par défaut prog_voyageur
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    ###!/usr/bin/python
    ### -*- coding: utf-8 -*-
     
    from math import *
    from copy import *
     
    class cVille():
        def __init__(self,n):
           self.posX = [6,1,2,4,9,8]
           self.posY = [5,3,7,10,3,6]
           self.nom = n
     
        def calculerDistance(self):
            n=0
            i=1
            fib=[]
            fib1=[]
     
            while(n<5):
                fib=[]
                while(i<6-n):
     
                    val=sqrt(abs(self.posY[i+n]-self.posY[n])+abs(self.posX[i+n]-self.posX[n]))
                    fib.append(val)
                    i +=1
                n+=1
                i=1
                fib1=copy(fib)
                print "\n"
                print "Distance(s):",n,fib1
     
    paris=cVille("Paris")
    lyon=cVille("Lyon")
    marseille=cVille("Marseille")
    bordeaux=cVille("Bordeaux")
    nantes=cVille("Nantes")
    lille=cVille("Lille")
     
    print " NOM", " X" " Y"
    print paris.nom,paris.posX[0],paris.posY[0]
    print lyon.nom,lyon.posX[1],lyon.posY[1]
    print marseille.nom,marseille.posX[2],marseille.posY[2]
    print bordeaux.nom,bordeaux.posX[3],bordeaux.posY[3]
    print nantes.nom,nantes.posX[4],nantes.posY[4]
    print lille.nom,lille.posX[5],lille.posY[5]
    print "\n"
    paris.calculerDistance()

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Par défaut
    Salut,

    sans vouloir être méchant ou même désagréable, il manque les bases de la programmation objet là...

    d'après ton code, chaque instance de cVille contient les positions de toutes les villes, ça n'a pas de sens. Chaque ville devrait connaitre uniquement sa propre position qui serait fournie à l'instanciation:
    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
    class cVille():
        def __init__(self,name, pos_x, pos_y):
           self.pos_x = pos_y
           self.pos_y = pos_y
           self.nom = name
    ...
     
    paris=cVille("Paris", 6, 5)
    lyon=cVille("Lyon", 1, 3)
    marseille=cVille("Marseille", 2, 7)
    ...
     
    print " NOM", " X", " Y"
    print paris.nom, paris.posX, paris.posY
    print lyon.nom, lyon.posX, lyon.posY
    ...
    pour la méthode calculerDistance, je suis pas certain de comprendre ce qu'elle est censée faire; ça serait bien de nous l'expliquer.
    mais intuitivement, je pense que ça sera toujours utile que ta classe cVille possède une méthode qui permette de calculer la distance avec une autre ville fournie en paramètre. pour ce qui est des itinéraires, on verra ça après.

  5. #5
    Membre à l'essai
    Femme Profil pro
    iut GeII
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : iut GeII

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Par défaut calculer_distance
    La fonction calculer_distance, avec deux boucles While, permet de calculer et de mettre dans un tableau, les valeurs des distances entre 2 villes ( calcule vectoriel avec les coordonnées des villes), et de montrer sous forme de "Score" la distance pour chaque cas de mon algorithme génétique, pour l'instant, seul la combinaison { Paris-Lyon-Marseille-Bordeaux-Nantes-Lille } fonctionne , il faut faire cela pour toutes les combinaison possible soit 6! ( 6 factorielle) => (Paris-Lyon-Marseille-Lille-Nantes-Bordeaux ou Lyon-Bordeaux-Nantes-Paris-Lille ou etc...) le but étant de trouver la meilleure combinaison de villes pour faire le moins de distance possible.
    Ps: Je n'ai jamais codé en python avant aujourd'hui et encore moins en orienté objet, j'avoue être un peu perdu... x)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Citation Envoyé par python_prog Voir le message
    Ps: Je n'ai jamais codé en python avant aujourd'hui et encore moins en orienté objet, j'avoue être un peu perdu... x)
    Ben dans ce cas, il faudrait que vous preniez le temps d'ouvrir un tutoriel. Ils ont aussi été écrits pour vous.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Par défaut
    Citation Envoyé par python_prog Voir le message
    Ps: Je n'ai jamais codé en python avant aujourd'hui et encore moins en orienté objet, j'avoue être un peu perdu... x)
    pour simplifier enormément, on peut dire que la programmation objet cherche à modéliser le monde tel qu'il est.
    par exemple, une voiture a des caractéristiques: 4 roues, un moteur, 2 sièges (parce que c'est une sportive), un reservoir d'essence, une couleur, etc
    une voiture a aussi des "comportements": démarrer, accélérer, freiner, tourner, écraser un piéton, etc...

    si on veut faire une classe qui représente une voiture, on va modéliser (dans une certaine mesure) cette réalité. les caractéristique de la voiture deviennent des attributs et les comportements deviennent des méthodes.
    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
    class Voiture(object):
        def __init__(self, niveau, couleur, moteur):
            self.niveau_essence = niveau
            self.couleur = couleur
            self.moteur = moteur
     
        def démarrer(self):
            # code
     
        def accélérer(self):
            # code
     
        def freiner(self):
            # code
     
        def écraser(self, piéton):
            # code
    tout ça pour dire qu'on ne fait pas des classe en mettant tout et n'importe quoi dedans sans réfléchir et que d'une manière générale on met ensemble les données et les traitements sur ces données.

    après, cette présentation est très schématisé et je te conseillerai de trouver des tutos sur la programmation orientée objet si tu veux bosser correctement avec des classes. EDIT: après survol (très) rapide, celui-ci a l'air pas mal


    dans ton cas particulier ça se traduit par ce que je t'ai déjà dit: chaque ville ne devrait avoir connaissance que de ses propres caractéristiques (nom et coordonnées) et n'effectuer que des traitements qui la concernent (calculer sa distance par rapport à une autre ville par exemple).
    ensuite, si tu veux calculer un itinéraire, il faudra probablement faire une classe Itinéraire qui aura des caractéristiques (une ville de départ, une ville d'arrivée, une liste d'étapes possibles, etc...) et des traitements associés comme "trouver la route la plus courte entre le départ et l'arrivée en passant par toutes les étapes" par exemple...

Discussions similaires

  1. Problème du voyageur de commerce
    Par bleach1234 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 04/05/2009, 14h57
  2. Problème du voyageur de commerce parallélisé
    Par Cyberstein dans le forum Mathématiques
    Réponses: 2
    Dernier message: 06/04/2009, 17h49
  3. Réponses: 2
    Dernier message: 03/02/2009, 20h21
  4. Problème du voyageur du commerce avec plusieurs voyageurs
    Par Treuze dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/12/2007, 11h46
  5. Réponses: 3
    Dernier message: 12/04/2007, 09h32

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