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 :

Croisement dans un algorithme genetique


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 Croisement dans un algorithme genetique
    salut
    je veux créer une fonction qui fait le croisement entre deux individus mais j'ai obtenu le résultat attendu.S'il vous plait pouvez vous m'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def croisement_deux (self , i1 , i2,l):
    		a = l / 2
    		childrens=[]
    		father=i1.get_random()
    		mother=i2.get_random()
                    child1=father[:a]+mother[a:]
                    childrens.append(child1)
    		child2=mother[:a]+father[a:]
    		childrens.append(child2)
    		return childrens
    sachant que la fonction une liste comme ca [0 1 0 0 1 0 0 1 0 1 ] et l est la taille de liste
    Merci d'avance

  2. #2
    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
    C'est difficile à comprendre si on n'a pas suivi ton fil précédent...

    Tu dis que tu as obtenu le résultat attendu, mais je suppose que c'est l'inverse. Quel résultat attendais-tu ? Tu peux donner un exemple d'entrées et la sortie attendue ?

    C'est quoi un individu pour ton algorithme génétique ? Je me trompe peut-être, mais il me semblait que c'était la méthode get_random qui générait un individu aléatoirement. Mais si c'est le cas je ne comprends pas pourquoi tu l'appelles dans ta fonction de croisement. Dans un algorithme génétique, il y a normalement un processus de sélection avant la reproduction. Croiser des individus entièrement aléatoires, ce ne sera pas très efficace...

    "children" est déjà un pluriel, il ne faut pas ajouter de 's'.

  3. #3
    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
    C'est difficile à comprendre si on n'a pas suivi ton fil précédent...

    Tu dis que tu as obtenu le résultat attendu, mais je suppose que c'est l'inverse. Quel résultat attendais-tu ? Tu peux donner un exemple d'entrées et la sortie attendue ?

    C'est quoi un individu pour ton algorithme génétique ? Je me trompe peut-être, mais il me semblait que c'était la méthode get_random qui générait un individu aléatoirement. Mais si c'est le cas je ne comprends pas pourquoi tu l'appelles dans ta fonction de croisement. Dans un algorithme génétique, il y a normalement un processus de sélection avant la reproduction. Croiser des individus entièrement aléatoires, ce ne sera pas très efficace...

    "children" est déjà un pluriel, il ne faut pas ajouter de 's'.
    Merci bien Dividee pour l'effort que vous avez fait pour me comprendre.
    En fait ,c'est une faute de frappe je veux dire que j'obtiens un résulat inattendu
    oui,j'ai crée une fonction de sélection par la méthode roue de fortune ,mais j'ai des erreurs dans cette dernière.
    maintenant,je passe au étape de croisement pour accélérer un peu
    en fait ,est ce que je peux vous envoyer tout mon code en privé en vous donnant mon email ,si ça ne vous dérange pas
    Merci beaucoup d'avance c'est mon projet de recherche en master et je trouve beaucoup des difficultés

  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 zeinab ali Voir le message
    Merci bien Dividee pour l'effort que vous avez fait pour me comprendre.
    En fait ,c'est une faute de frappe je veux dire que j'obtiens un résulat inattendu
    oui,j'ai crée une fonction de sélection par la méthode roue de fortune ,mais j'ai des erreurs dans cette dernière.
    maintenant,je passe au étape de croisement pour accélérer un peu
    en fait ,est ce que je peux vous envoyer tout mon code en privé en vous donnant mon email ,si ça ne vous dérange pas
    Merci beaucoup d'avance c'est mon projet de recherche en master et je trouve beaucoup des difficultés
    Bonjour à tous
    je vais détailler ma problème,s'il vous plait aider moi car la fonction croisement_deux ne marche pas
    voici mon code:
    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
    class individu:
    	def __init__ (self,nombre_genes,random=-1):
    		self.genes = []
    		self.nombre_genes = nombre_genes
    		if random == -1 : self.get_random ()
    	"""
            random : initialise aleatoirement les genes
            """
    	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
    maintenant,aprés une étape de sélection ,je veux faire le croisement entre deux individus par exemple i1 et i2 dans un autre classe population
    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
    class population:
     
            def __init__(self,nombre_genes,nombre_initial_population=25):
                    self.nombre_genes=nombre_genes
                    self.individus=[]
                    self.nombre_initial_population=nombre_initial_population
                    for v in range(self.nombre_initial_population):
                            self.individus.append(individu(nombre_genes))
        def croisement_deux (self , i1 , i2,l):
    		a = l / 2
    		childrens=[]
    		father=i1.get_random()
    		mother=i2.get_random()
                    child1=father[:a]+mother[a:]
                    childrens.append(child1)
    		child2=mother[:a]+father[a:]
    		childrens.append(child2)
    		return childrens
    dans le programme principal,j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i1=algo_gen.individu(10)
    i2=algo_gen.individu(10)
    p=algo_gen.population(10,25)
    print p.croisement_deux (i1,i2,10)
    exemple
    i1=[0 .1 .0 .1 .1. /0. 0. 1 .0 .0] et i2=[0 .1 .1 .0 .0/. 0. 0. 1 .1.0]
    child1=[0 .1 .0 .1 .1. 0. 0. 1 .1 .0] et child2=[0 .1 .1 .0 .0.0. 0. 1 .0 .0]
    Merci d'avance

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/02/2013, 10h36
  2. Utilisation de valeurs discretes dans l'algorithme genetique
    Par ziedhosn dans le forum Intelligence artificielle
    Réponses: 0
    Dernier message: 01/02/2013, 17h55
  3. Aide dans un Algorithme de croisement en C
    Par Zikou123 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 30/11/2010, 20h10
  4. Réponses: 2
    Dernier message: 04/04/2006, 23h22
  5. Algorithmes genetiques
    Par Orore dans le forum C++
    Réponses: 7
    Dernier message: 16/11/2004, 16h11

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