python algorithme génétique

a marqué ce sujet comme résolu.

Bonjour, je débute avec les algorithme génétique. J’ai lu 3-4 tutos la dessus qui m’ont beaucoup aidé à comprendre le fonctionnement mais hélas je ne sait pas comment régler mon probleme que je tente de résoudre avec. avant de parler de mon probleme, je me suis surtout basé sur ce tuto qui ressemble je trouve à mon problème :http://antoinevastel.github.io/algorithme/python/algorithmes%20génétiques/2016/04/30/probleme-voyageur-commerce.html

Bon alors je vous explique, je cherche à mettre au point un programme visant à optimiser un système en fonction des paramètres qu’il reçoit. Mon programme vas donc devoir faire varier ces paramètres pour essayer de trouver la meilleur combinaison possible.

voici un code simplifier de mon problème :

 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
parameters=[["toto1","toto2","toto3"],["tutu1","tutu2","tutu3"],["titi1","titi2","titi3"],["tata1","tata2","tata3"]]

def MonSysteme(param1,param2,param3,param4):
    result=0

    for i in range(0,len(param1)):
        result+=ord(param1[i])

    for i in range(0,len(param2)):
        result+=ord(param1[i])

    for i in range(0,len(param3)):
        result+=ord(param1[i])

    for i in range(0,len(param4)):
        result+=ord(param1[i])

    return result

print(MonSysteme(parameters[0][0],parameters[1][2],parameters[2][2],parameters[3][0]))
print(MonSysteme(parameters[1][0],parameters[2][2],parameters[3][2],parameters[0][0]))
print(MonSysteme(parameters[3][1],parameters[1][2],parameters[2][2],parameters[0][0]))


#comment trouver la valeur le plus élevé ?

je cherche à (essayer) trouver le nombre le plus élevé, sans pour autant tester tous les parametres naivement. d’ou l’utilisation d’un algorythme génétique. 1 parametre c’est une liste contenue dans la liste parameters, le contenue de la liste c’est une varariante de mon parametre

sachant que dans ma fonction/mon systeme, on ne doit pas avoir 2 fois le même paramètre, par exemple ceci ne doit pas se produire : print(MonSysteme(parameters[1][0],parameters[1][0])) ou ceci print(MonSysteme(parameters[2][1],parameters[2][0]))

par contre le nombre de paramètre est compris en 1 et 4 (il peut y avoir 1,2,3 ou 4 paramètres)

Pour résoudre mon probleme voila les données que je considere : Individu : c’est une variante de paramètre qui porte un nom ("toto1","tata3","toto2=12"…etc.) Population : ensemble des variantes des paramètres fitness: c’est le résultat de la fonction en fonction des parametres un circuit: un ensemble de parametre

mais contrairement au voyageur du commerce, j’ai pas de données de départ => c’est a dire que je n’ai pas de coordonnées gps. et c’est à ce niveau que je suis bloqué pour la résolution de mon probleme.

quelqu’un peut t’il m’aider ?

Bonjour,

1) Je ne comprends pas ton problème. Je ne sais pas si c’est dans la modélisation de ton problème ou si c’est dû à l’utilisation d’un algo génétique.

2) La "simplification" de ton problème pour que l’on puisse comprendre est mal foutue. Je n’ai rien compris du tout avec tes "toto", "tata", … Ton "code" ne laisse aucunement apparaître la moindre chose d’un algo génétique.

mais contrairement au voyageur du commerce, j’ai pas de données de départ => c’est a dire que je n’ai pas de coordonnées gps. et c’est à ce niveau que je suis bloqué pour la résolution de mon probleme.

Pour avoir une population de départ, tu peux la générer au hasard si les mutations possibles peuvent donner tous les gènes possible à un individu.

par contre le nombre de paramètre est compris en 1 et 4 (il peut y avoir 1,2,3 ou 4 paramètres)

Avoir un nombre de gènes non constant, c’est pas à l’algo génétique de le gérer. Mais tu peux mettre des gènes "inexpressifs" qui n’influerons pas sur ta fonction d’évaluation.


As-tu bien défini les gènes de tes individus ?

Es-tu sûr que ton problème d’optimisation peux être modélisé avec un algo génétique ?

+0 -0

Je n’ai rien compris de ce que tu voulais faire :( , mais passons :)

Un truc que je ne comprends pas: ta fonction "grade" ne fait absolument rien. Enfin, ses paramètres sont inutiles, et la seule variable venant d’ailleurs("parameters"), n’est jamais modifiée. Tu récupères juste une valeur randomisée sur cette dernière.

L’algo génétique est juste ignoré dans ton code. Tu appelles evolve, mais tu ne fais rien de ta population finale.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte