Bonjour
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
		children=[]
		father=i1.get_random()
		mother=i2.get_random()
                child1=father[:a]+mother[a:]
                children.append(child1)
		child2=mother[:a]+father[a:]
		childrens.append(child2)
		return children
dans le programme principal,j'écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
i1=individu(10)
i2=individu(10)
p=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