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 :

Matrice extraite d'une autre matrice


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut Matrice extraite d'une autre matrice
    bonjour
    je crée un réseau maillé constitué de 7 routeurs maillés et 3 passerelles
    un routeur maillé est représenté par 0 et une passerelle est représenté par 1
    donc ce réseau est représenté par un tableau de 10 cases dont 7 cases sont des zeros et trois sont des uns.
    Moi,ma problème est d'extraire une matrice de distance entre ces trois passerelles et les différents nœuds de réseau à partir de la matrice de coût de ce réseau
    s'il vous plait pouvez vous me donner une idée de faire ça
    Merci d'avance
    cordialement

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    bonjour
    je développe ce code pour atteindre mon but


    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
    def get_matrix(self):
                    path_length=nx.all_pairs_shortest_path_length(self.G)
                    n = len(self.G.nodes())
                    distances=np.zeros((n,n))
                    for u,p in path_length.iteritems():
                            for v,d in p.iteritems():
                                    distances[int(u)][int(v)] = d
                    return distances
            def get_distance(self):
                    d=self.get_matrix()
                   # n=np.shape(d)
                    m=np.zeros(10,4)
                    a=self.get_random()
                    for i in range(a):
                            if (a[i]==1):
                                    m=d[:,i]
                    return m
    la première fonction sert bien sur à trouver la matrice de cout de graphe
    je développe la deuxiéme fonction pour trouver un nouvelle matrice m qui contient les distances entre les différents de noeuds de graphe et les 4 passerelles dans le graphe qui sont représentés par des uns dans l'individu a (get_random()) mais j'obtiens au niveau cet ligne m=np.zeros(10,4) cet erreur
    "data type not understood"
    Merci d'avance

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    L'argument de np.zeros doit être la forme (shape) de la matrice, c'est-à-dire un tuple. Donc ce n'est pas np.zeros(10,4) mais np.zeros((10,4)).
    Mais je ne sais pas pourquoi 4 alors que tu as dit que tu avais 3 passerelles...

    Et puis tu écrases m dans ta boucle, ce qui n'est pas ce que tu veux.
    Si je comprends bien tu veux seulement sélectionner les colonnes de ta matrice pour lesquelles la valeur de a est 1.
    Si tu convertis a en tableau de booléens (ou encore mieux, si tu fais en sorte que get_random renvoie un tableau de booléens), tu peux l'utiliser directement pour indexer ta matrice, sans faire de boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = d[:,np.asarray(a, dtype=bool)]

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par dividee Voir le message
    L'argument de np.zeros doit être la forme (shape) de la matrice, c'est-à-dire un tuple. Donc ce n'est pas np.zeros(10,4) mais np.zeros((10,4)).
    Mais je ne sais pas pourquoi 4 alors que tu as dit que tu avais 3 passerelles...

    Et puis tu écrases m dans ta boucle, ce qui n'est pas ce que tu veux.
    Si je comprends bien tu veux seulement sélectionner les colonnes de ta matrice pour lesquelles la valeur de a est 1.
    Si tu convertis a en tableau de booléens (ou encore mieux, si tu fais en sorte que get_random renvoie un tableau de booléens), tu peux l'utiliser directement pour indexer ta matrice, sans faire de boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = d[:,np.asarray(a, dtype=bool)]
    Desolé ,j'ai pas compris votre réponse merci d'expliquer encore fois
    ok je corrige cette ligne np.zeros(10,4)
    mais j'ai pas compris cette phrase:Et puis tu écrases m dans ta boucle
    la fonction get_random rend une liste remplis par des zeros et 4 uns placés aléatoirement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def get_random (self):
                self.genes=np.zeros(self.nombre_genes)
                for i in range(4):
                    j=random.randint(0,(self.nombre_genes-1))
                    self.genes[j]=1
                return self.genes
    Merci beaucoup d'avance de votre explication

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    [QUOTE=zeinab ali;8716654]
    bonjour
    je vais détailler ma problème ,s'il vous plait pouvez vous m'aider car je sais pas pourquoi mon code ne marche pas.
    En fait,moi je veux implémenter un algorithme génétique pour faire une optimisation de placement des passerelles dans un réseau maillé.
    un individu est représenté par une liste des 10 cases dont 7 cases sont des zéros(les routeurs maillés) et quatre uns (les passerelles) placées aléatoirement.la fonction suivante permet de faire ca se trouve dans le fichier algo_gen.py.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def get_random (self):
                self.genes=np.zeros(self.nombre_genes)
                for i in range(4):
                    j=random.randint(0,(self.nombre_genes-1))
                    self.genes[j]=1
                return self.genes
    je crée un autre fichier topology .py ou se trouve le code pour créer le réseau et aussi une fonction pour calculer la matrice coût suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def get_matrix(self):
                    path_length=nx.all_pairs_shortest_path_length(self.G)
                    n = len(self.G.nodes())
                    distances=np.zeros((n,n))
                    for u,p in path_length.iteritems():
                            for v,d in p.iteritems():
                                    distances[int(u)][int(v)] = d
    Donc ,mon objectif maintenant est d'extraire une matrice de distances entre les quatre passerelles et les différents des noeuds donc (4 colonnes de matrice de cout et tous les lignes)mais ces quatre colonnes ne sont pas arbitraires,ils sont seulement les indices qui ont les valeurs des uns dans la liste (c'est à dire qui représente l'individu).voici ce code que je développe pour faire ça et je le mets dans le fichier topology.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def get_distance(self,individu):
                    d=self.get_matrix()
                    m=np.zeros((10,4))
                    l=[]
                    for i in range(len(individu)):
                            if (individu[i]==1):
                                    l.append(i)
                    m=d[:,l[0]:l[len(l)-1]+1]                
                    return m
    Maintenant ,je mets dans le programme principale le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sink = 0
    	topo = Topology(options.inputTopo, options.outputTopo, sink)
    	topo.generateTopNodeDegree(options.n_,options.d_)
    	topo.draw()
    	topo.getEdges()
    	print topo.get_matrix()
    	a=algo_gen.individu(10)
    	b=a.get_random()
    	print b
    	print topo.get_distance(b)
    mais malheureusement ,je n'obtiens pas la matrice que je veux (autre résultat)
    en piéce-jointe,le résultat obtenu
    Merci d'avance.Nom : Sans titre1.png
Affichages : 1176
Taille : 128,1 Ko

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    [QUOTE=zeinab ali;8717049]
    Citation Envoyé par zeinab ali Voir le message
    bonjour
    je vais détailler ma problème ,s'il vous plait pouvez vous m'aider car je sais pas pourquoi mon code ne marche pas.
    En fait,moi je veux implémenter un algorithme génétique pour faire une optimisation de placement des passerelles dans un réseau maillé.
    un individu est représenté par une liste des 10 cases dont 7 cases sont des zéros(les routeurs maillés) et quatre uns (les passerelles) placées aléatoirement.la fonction suivante permet de faire ca se trouve dans le fichier algo_gen.py.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def get_random (self):
                self.genes=np.zeros(self.nombre_genes)
                for i in range(4):
                    j=random.randint(0,(self.nombre_genes-1))
                    self.genes[j]=1
                return self.genes
    je crée un autre fichier topology .py ou se trouve le code pour créer le réseau et aussi une fonction pour calculer la matrice coût suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def get_matrix(self):
                    path_length=nx.all_pairs_shortest_path_length(self.G)
                    n = len(self.G.nodes())
                    distances=np.zeros((n,n))
                    for u,p in path_length.iteritems():
                            for v,d in p.iteritems():
                                    distances[int(u)][int(v)] = d
    Donc ,mon objectif maintenant est d'extraire une matrice de distances entre les quatre passerelles et les différents des noeuds donc (4 colonnes de matrice de cout et tous les lignes)mais ces quatre colonnes ne sont pas arbitraires,ils sont seulement les indices qui ont les valeurs des uns dans la liste (c'est à dire qui représente l'individu).voici ce code que je développe pour faire ça et je le mets dans le fichier topology.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def get_distance(self,individu):
                    d=self.get_matrix()
                    m=np.zeros((10,4))
                    l=[]
                    for i in range(len(individu)):
                            if (individu[i]==1):
                                    l.append(i)
                    m=d[:,l[0]:l[len(l)-1]+1]                
                    return m
    Maintenant ,je mets dans le programme principale le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sink = 0
    	topo = Topology(options.inputTopo, options.outputTopo, sink)
    	topo.generateTopNodeDegree(options.n_,options.d_)
    	topo.draw()
    	topo.getEdges()
    	print topo.get_matrix()
    	a=algo_gen.individu(10)
    	b=a.get_random()
    	print b
    	print topo.get_distance(b)
    mais malheureusement ,je n'obtiens pas la matrice que je veux (autre résultat)
    en piéce-jointe,le résultat obtenu
    Merci d'avance.Nom : Sans titre1.png
Affichages : 1176
Taille : 128,1 Ko
    s'il vous plait,j'ai besoin de réponse urgent Qui peut me répondre
    Merci

  7. #7
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par dividee Voir le message
    L'argument de np.zeros doit être la forme (shape) de la matrice, c'est-à-dire un tuple. Donc ce n'est pas np.zeros(10,4) mais np.zeros((10,4)).
    Mais je ne sais pas pourquoi 4 alors que tu as dit que tu avais 3 passerelles...

    Et puis tu écrases m dans ta boucle, ce qui n'est pas ce que tu veux.
    Si je comprends bien tu veux seulement sélectionner les colonnes de ta matrice pour lesquelles la valeur de a est 1.
    Si tu convertis a en tableau de booléens (ou encore mieux, si tu fais en sorte que get_random renvoie un tableau de booléens), tu peux l'utiliser directement pour indexer ta matrice, sans faire de boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = d[:,np.asarray(a, dtype=bool)]
    Salut,

    Je ni connais pas grand chose en génétique mais si j'ai bien compris ton problème et si t'avais relus plusieurs fois les indications de dividee tu aurai peut être compris ce qui cloche dans ton code.

    Alors dividee suggère que si get_random renvoie un tableau de booléens alors il sera plus facile de sélectionner les colonnes de la matrice que tu veux construire sans passer par une boucle for, surtout que dans ta boucle tu écrase à chaque passage la matrice m (écraser signifie que tu réinitialises ta matrice à chaque fois) . On parle de cette partie de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i in range(a):
            if (a[i]==1):
                    m=d[:,i]
    Alors déjà si tu ne sais pas ce que c'est un tableau de booléens je te donne ce lien : booleens

    Donc si tu t'arranges pour que a soit un tableau de booléens alors il te sera possible de changer cette partie de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for i in range(a):
                            if (a[i]==1):
                                    m=d[:,i]
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m = d[:,np.asarray(a, dtype=bool)]
    En espérant avoir pu t'aider.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    Salut,

    Je ni connais pas grand chose en génétique mais si j'ai bien compris ton problème et si t'avais relus plusieurs fois les indications de dividee tu aurai peut être compris ce qui cloche dans ton code.

    Alors dividee suggère que si get_random renvoie un tableau de booléens alors il sera plus facile de sélectionner les colonnes de la matrice que tu veux construire sans passer par une boucle for, surtout que dans ta boucle tu écrase à chaque passage la matrice m (écraser signifie que tu réinitialises ta matrice à chaque fois) . On parle de cette partie de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i in range(a):
            if (a[i]==1):
                    m=d[:,i]
    Alors déjà si tu ne sais pas ce que c'est un tableau de booléens je te donne ce lien : booleens

    Donc si tu t'arranges pour que a soit un tableau de booléens alors il te sera possible de changer cette partie de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for i in range(a):
                            if (a[i]==1):
                                    m=d[:,i]
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m = d[:,np.asarray(a, dtype=bool)]
    En espérant avoir pu t'aider.
    Merci pour la réponse.
    Mais ,moi je peux pas modifier le tableau a en un tableau booléen car ce tableau doit être une chaîne des caractères remplis par des zeros et des uns placées aléatoirement.
    Aussi,moi si j'ai déja remplacé cet code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(a):
            if (a[i]==1):
                    m=d[:,i]
    par cet code que je le trouve plus adéquat à ma probléme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def get_distance(self,individu):
                    d=self.get_matrix()
                    m=np.zeros((10,4))
                    l=[]
                    for i in range(len(individu)):
                            if (individu[i]==1):
                                    l.append(i)
                    m=d[:,l[0]:l[len(l)-1]+1]                
                    return m
    Merci d'avance de votre aide

  9. #9
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Mais ,moi je peux pas modifier le tableau a en un tableau booléen car ce tableau doit être une chaîne des caractères remplis par des zeros et des uns placées aléatoirement.
    Rien en t'empêches de créer un second tableau de booléens à partir de a, tu ne change pas a et tu te sers de ce tableau intermédiaire.

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    Rien en t'empêches de créer un second tableau de booléens à partir de a, tu ne change pas a et tu te sers de ce tableau intermédiaire.
    merci mais comment!!

  11. #11
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    J'ai essayé de faire tourner ton code mais il me dit qu'il manque Topology donc si tu peux envoyer tout ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    topo = Topology(options.inputTopo, options.outputTopo, sink)
    NameError: name 'Topology' is not defined
    Et aussi est ce que tu sais quelle matrice tu veux obtenir (vue que celle que tu obtiens n'est pas la bonne) car moi j'y connais rien dans ta spécialité du coup je sais pas trop comment interpréter les résultats.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Citation Envoyé par zeinab ali Voir le message
    merci mais comment!!
    Il faut essayer de comprendre le code qui est donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.asarray(a, dtype=bool)]
    C'est ça qui converti le tableau a en tableau de booléens.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = d[:,np.asarray(a, dtype=bool)]
    fonctionne avec le tableau a tel qu'il est défini maintenant.
    Si get_random() renvoyait un tableau de booléens, on pourrait écrire simplement
    Je voulais juste mettre ça en évidence, mais ce n'est pas bien passé apparemment.

    Sinon, attention, la fonction get_random() tel quel postée plus haut renverra entre une et quatre "passerelles" (valeurs à 1), je ne suis pas sûr que ce soit volontaire...

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par dividee Voir le message
    Il faut essayer de comprendre le code qui est donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.asarray(a, dtype=bool)]
    C'est ça qui converti le tableau a en tableau de booléens.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = d[:,np.asarray(a, dtype=bool)]
    fonctionne avec le tableau a tel qu'il est défini maintenant.
    Si get_random() renvoyait un tableau de booléens, on pourrait écrire simplement
    Je voulais juste mettre ça en évidence, mais ce n'est pas bien passé apparemment.

    Sinon, attention, la fonction get_random() tel quel postée plus haut renverra entre une et quatre "passerelles" (valeurs à 1), je ne suis pas sûr que ce soit volontaire...
    Merci beaucoup à vos réponses dividee et nekcrop
    j'ai obtenu enfin la matrice voulu avec le tabeau des booléens .
    mais ma fonction get_random() parfois renvoit 3 passerelles(valeurs à 1) et parfois 4 malgré j'ai fait Merci encore fois

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    J'ai essayé de faire tourner ton code mais il me dit qu'il manque Topology donc si tu peux envoyer tout ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    topo = Topology(options.inputTopo, options.outputTopo, sink)
    NameError: name 'Topology' is not defined
    Et aussi est ce que tu sais quelle matrice tu veux obtenir (vue que celle que tu obtiens n'est pas la bonne) car moi j'y connais rien dans ta spécialité du coup je sais pas trop comment interpréter les résultats.
    Merci beaucoup,j'ai obtenu en fin la matrice voulu

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Citation Envoyé par zeinab ali Voir le message
    Merci beaucoup à vos réponses dividee et nekcrop
    j'ai obtenu enfin la matrice voulu avec le tabeau des booléens .
    mais ma fonction get_random() parfois renvoit 3 passerelles(valeurs à 1) et parfois 4 malgré j'ai fait Merci encore fois
    Oui c'est ce que je disais. Elle peut même ne te renvoyer qu'une seule passerelle, même si ce sera très rare.

    Tu choisis quatre fois aléatoirement une passerelle, mais il est possible que la même passerelle soit choisie plusieurs fois, tu devrais vérifier que le même routeur n'est pas choisi plusieurs fois.

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par dividee Voir le message
    Oui c'est ce que je disais. Elle peut même ne te renvoyer qu'une seule passerelle, même si ce sera très rare.

    Tu choisis quatre fois aléatoirement une passerelle, mais il est possible que la même passerelle soit choisie plusieurs fois, tu devrais vérifier que le même routeur n'est pas choisi plusieurs fois.
    Merci Dividee pour votre réponse.
    mais j'ai pas compris ce que vous voulez dire.
    en fait ,le réseau que j'ai crée reste un programme et n'est pas modélisé par des routeurs et des passerelles réelles
    s'il vous plait,comment je peux modifier le fonction de get_random pour obtenir exactement 4 passerelles .
    merci d'avance pour votre temps que vous consacrez à me répondre
    Desolé ,je suis débutant en python

  17. #17
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Citation Envoyé par zeinab ali Voir le message
    s'il vous plait,comment je peux modifier le fonction de get_random pour obtenir exactement 4 passerelles .
    merci d'avance pour votre temps que vous consacrez à me répondre
    Pour faire simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def get_random (self):
        self.genes=np.zeros(self.nombre_genes)
        for i in range(4):
            while True:
                j=random.randint(0,(self.nombre_genes-1))
                if self.genes[j] == 0: break
            self.genes[j]=1
        return self.genes

  18. #18
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 110
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par dividee Voir le message
    Pour faire simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def get_random (self):
        self.genes=np.zeros(self.nombre_genes)
        for i in range(4):
            while True:
                j=random.randint(0,(self.nombre_genes-1))
                if self.genes[j] == 0: break
            self.genes[j]=1
        return self.genes
    Merci beaucoup dividee
    je suis très reconnaissant à vous.

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

Discussions similaires

  1. [Débutant] Sous matrice à partir d'une autre matrice
    Par RedShady dans le forum MATLAB
    Réponses: 2
    Dernier message: 20/12/2014, 06h44
  2. Réponses: 5
    Dernier message: 24/10/2009, 18h14
  3. Réponses: 5
    Dernier message: 17/06/2008, 15h17
  4. Réponses: 2
    Dernier message: 09/03/2008, 07h45
  5. matrice à partir d'une autre avec un test
    Par lilyla dans le forum MATLAB
    Réponses: 6
    Dernier message: 23/01/2008, 15h39

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