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

MATLAB Discussion :

Problème de tournée


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Problème de tournée
    Bonjour, actuellement en stage, je suis en train d'écrire mon programme sur matlab. Je cherche à trouver une solution où les visites à un même domicile ne se croise pas.
    Voici un extrait de mon code qui me pose problème:
    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
     
    for i=1:N % nombre de domicile
            for j= 1:(Nb-1)
                for k= 2:Nb
                    j~=k; % indique les visites
                    if matrice(i,j)==matrice(i,k) % matrice est égale à 1 si les visites k et j sont dans le même domicile et 0 sinon
                        b=strfind(r,j); % position de j dans r
                        c=strfind(r,k); % position de k dans r
                        if lt(dateDebut(b),dateDebut(c))
                            if (dateDebut(b)+duree(r(b)))<dateDebut(c)
                                visite=true;
                            else
                                visite=false;
                            end
                        elseif gt(dateDebut(b),dateDebut(c))
                            if (dateDebut(c)+duree(r(c)))<dateDebut(b)
                                visite=true;
                            else
                                visite=false;
                            end
                        elseif eq(dateDebut(b),dateDebut(c))
                            visite=false;
                        end
                    end
                end
            end
        end
    Je l'ai testé et je trouve visite=1 (true) même quand 2 visites ont lieu dans le même domicile. Pourriez-vous m'aider s'il-vous-plait. Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut,


    Rapidement, je dirais que c'est normal que tu trouves 1 dès qu'il y a une visite puisque tu n'as aucune condition sur plusieurs visites.

    En gros tu auras 1 pour au moins une visite et 0 sinon.
    Est-ce que tu aurais un exemple de matrice, date etc pour qu'on puisse y voir un peu plus clair ?

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Cette ligne la est complètement inutile puisque tu ne
    récupère pas le résultat de j~=k
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j~=k; % indique les visites

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Re
    Est-ce que tu aurais un exemple de matrice, date etc pour qu'on puisse y voir un peu plus clair ?
    Exemple:
    matrice: (domicile*visite)
    matrice=[1,1,0,0,0,0,0,0,0;0,0,1,1,0,0,0,0,0;0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,1,1,1;]
    r=[6 1 4 8 3 5 9 1 5 2 4 7]% liste des tournées
    dateDebut=[11,166,216,266,16,61,106,166,61,126,216,266]
    dans cet exemple, le vecteur r et dateDebut sont composé comme suit:
    [4 visites de l'intervenant1 4 visites de l'intervenant2 4 visites de l'intervenant3]. je n'ai pas mis de délimiteur entre les tournées de chaque intervenants.
    J'aimerai que la condition prenne compte de la globalité des visites.

    Merci d'avance.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    reBonjour,
    je pense avoir trouvé mon problème.
    Je me suis référé à la discussion "Sortir de deux boucles FOR-END imbriquées" pour m'aider.

Discussions similaires

  1. Question sur la modélisation du problème de tournées de véhicules
    Par laureat dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 26/01/2011, 01h07
  2. Réponses: 1
    Dernier message: 21/01/2011, 18h55
  3. Problème de tournées de véhicules
    Par 3chir dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 27/08/2010, 11h06
  4. Problème de tournée de véhicules
    Par Trysac dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/06/2009, 00h25
  5. problème de tournées de véhicule
    Par logo98 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2007, 03h38

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