Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1391 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Algo génétique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algo génétique

n°1313826
Chronoklaz​m
Posté le 26-02-2006 à 18:11:56  profilanswer
 

Salut,
 
   Voilà j'ai un souci pour mon algo génétique. Je n'utilise aucune lib spéciale, je fait tout à la maign ...  
J'ai donc une population constitué de chromosomes (gênes : 1,0) j'arrive a calculer leurs fitness respectives puis a séléctionner la population pour les croisements.
 
  Mais je ne pige pas trop comment choisir les sites des croisements cad l'indice a partir duquel va s'effectuer le cross-over :
 
Cross-over( 11100, 11010, 2 ) =>  ( 11110,  11000 ).
 
Dois je le choisir aléatoirement ?

mood
Publicité
Posté le 26-02-2006 à 18:11:56  profilanswer
 

n°1314138
Mario_
Vive le pingouiboulga !!
Posté le 27-02-2006 à 11:10:39  profilanswer
 

Je pense que cette question aurait plus sa place dans la catégorie Algo, celle-ci ne s'occupant, théoriquement, que de la partie implémentation en Java.
 
Sinon, pour répondre à ta question, et ne diposant que d'une vague connaissance du sujet, je dirais oui.

n°1314277
rufo
Pas me confondre avec Lycos!
Posté le 27-02-2006 à 13:35:54  profilanswer
 

J'ai eu un cours de biomimétique en école d'ingé il y a qq années. Oui, il faut choisir l'indice aléatoirement. Cela dit, ça peut aussi dépendre de la modélisation de ton pb à résoudre. Des fois, pour faire converger l'algo, on peut être amené à rajouter des conditions sur le choix de cet indice, par ex, une probabilité de sélection pour chaque indice (genre, l'indice 1 à 50% d'être sélectionné, le 2ième 3%, le 3ième 10%, etc.).

n°1314279
rufo
Pas me confondre avec Lycos!
Posté le 27-02-2006 à 13:38:26  profilanswer
 

au fait, est-ce-que tous tes individus subissent le cross-over ou seulement une partie de ta population (mais je pense que c'est ce que tu as appelé la selection de la population? Et as-tu introduit de la mutation? Par contre, c'est quoi le fitness? Ca me dit rien...

n°1314290
Mario_
Vive le pingouiboulga !!
Posté le 27-02-2006 à 13:46:01  profilanswer
 

rufo a écrit :

au fait, est-ce-que tous tes individus subissent le cross-over ou seulement une partie de ta population (mais je pense que c'est ce que tu as appelé la selection de la population? Et as-tu introduit de la mutation? Par contre, c'est quoi le fitness? Ca me dit rien...


Il me semble que c'est l'adéquation de l'individu avec le but à atteindre, la fonction qui doit être maximisée par l'algorithme au bout des n itérations.

n°1314744
Chronoklaz​m
Posté le 27-02-2006 à 19:41:58  profilanswer
 

Mario_ a écrit :

Je pense que cette question aurait plus sa place dans la catégorie Algo, celle-ci ne s'occupant, théoriquement, que de la partie implémentation en Java.
 
Sinon, pour répondre à ta question, et ne diposant que d'une vague connaissance du sujet, je dirais oui.


 
Oui c'est vrai tu a raison mais bon j'avais en vue certaines questions concernant mon implémentation en java ...
 

rufo a écrit :

Oui, il faut choisir l'indice aléatoirement. Cela dit, ça peut aussi dépendre de la modélisation de ton pb à résoudre. Des fois, pour faire converger l'algo, on peut être amené à rajouter des conditions sur le choix de cet indice, par ex, une probabilité de sélection pour chaque indice (genre, l'indice 1 à 50% d'être sélectionné, le 2ième 3%, le 3ième 10%, etc.).


 
Dans mon cas il s'agit d'une simple maximisation d'une fonction, et comme tu le dit on peut être amené a rajouter des conditions ( dans le cas présent un chromosomes sera une décomposition binaire d'un nombre donc faut il simplement privilegier des croisement sur les bits de poid fort au risque d'induire une diminution de la diversité ? )
 

rufo a écrit :

au fait, est-ce-que tous tes individus subissent le cross-over ou seulement une partie de ta population (mais je pense que c'est ce que tu as appelé la selection de la population? Et as-tu introduit de la mutation? Par contre, c'est quoi le fitness? Ca me dit rien...


 
Oui tous mes individus devraient logiquement passer par le cross-over.
Je suis pour l'instant que sur le cross-over et pour la mutation le choix de l'indice sera aléatoire je pense ca me suffira en tout cas.
Chromosomes : Valeurs de x
Fonction de fitness : Valeurs de f(x)
En gros la fitnessd'un chromosome c'est la mesure de la qualité de la solution.
 
Sinon merci pour vos posts les gens.


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1315138
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2006 à 11:22:35  profilanswer
 

Chronoklazm a écrit :

Oui tous mes individus devraient logiquement passer par le cross-over.
Je suis pour l'instant que sur le cross-over et pour la mutation le choix de l'indice sera aléatoire je pense ca me suffira en tout cas.
...


 
Ben non, tous tes individus ne sont pas obligés de passer par le cross-over. Sinon, ça suppose que t'as une population ayant un nb pair d'individus. En +, dans le tas, y'en a surement qui ne méritent pas de continuer à évoluer (ceux dont f(x) est < à un seuil). Du reste, je pense que pour choisir les candidats au cross-over, tu doit définir une probabilité proportionnelle à f(x). Par contre, je ne pense pas que ce soit bon de ne faire que du cross-over que sur les bits de poids forts car tu risques de ne pas arriver au réel maximum de f(x) (risque de te retrouver avec un truc du genre 11110000).
Pour la mutation, il faut définir 2 probas : la fréquence à laquelle survient une mutation, et le choix aléatoire de l'indice sur lequel la mutation intervient.

n°1315141
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2006 à 11:24:01  profilanswer
 

au fait, c'est pour résoudre quel pb ton algo génétique? Moi, je m'en étais servi pour optimiser le remplissage de CDs vierges avec des fichiers (prendre certains fichiers, eventuellement tous si y'a la place, et les répartir sur un nb donné de Cds de différentes capacités).

n°1315782
Chronoklaz​m
Posté le 01-03-2006 à 00:03:03  profilanswer
 

rufo a écrit :

Ben non, tous tes individus ne sont pas obligés de passer par le cross-over. Sinon, ça suppose que t'as une population ayant un nb pair d'individus. En +, dans le tas, y'en a surement qui ne méritent pas de continuer à évoluer (ceux dont f(x) est < à un seuil). Du reste, je pense que pour choisir les candidats au cross-over, tu doit définir une probabilité proportionnelle à f(x). Par contre, je ne pense pas que ce soit bon de ne faire que du cross-over que sur les bits de poids forts car tu risques de ne pas arriver au réel maximum de f(x) (risque de te retrouver avec un truc du genre 11110000).
Pour la mutation, il faut définir 2 probas : la fréquence à laquelle survient une mutation, et le choix aléatoire de l'indice sur lequel la mutation intervient.


 
J'ai une population avec un nombre pair d'individus. Ca facilite grandement la sélection.
 
tu doit définir une probabilité proportionnelle à f(x) => Oui c'est la technique de la roue de la fortune, c'est justement ce que j'utilise. Avec un choix aléatoire de l'indice pour le croisement ça maximise assez rapidement.
 
Pour l'instant je teste avec une petite fonction mathematique genre f(x) = x² ... apres si j'ai le temps et le courage j'aimerais me tapper un TSP.


Message édité par Chronoklazm le 01-03-2006 à 00:13:42

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1315784
Chronoklaz​m
Posté le 01-03-2006 à 00:05:12  profilanswer
 

rufo a écrit :

au fait, c'est pour résoudre quel pb ton algo génétique? Moi, je m'en étais servi pour optimiser le remplissage de CDs vierges avec des fichiers (prendre certains fichiers, eventuellement tous si y'a la place, et les répartir sur un nb donné de Cds de différentes capacités).


 
Bin packing en génétique quoi ... et alors, tu trouvais une solution plus rapidement qu'avec un algo greedy ?


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
mood
Publicité
Posté le 01-03-2006 à 00:05:12  profilanswer
 

n°1316206
rufo
Pas me confondre avec Lycos!
Posté le 01-03-2006 à 14:52:09  profilanswer
 

non, le bin packing en génétique ets l'équivalent du pb du sac à dos : on a un nb donné d'éléments et on veut savoir combien de sacs il faut au minimum pour les ranger. Mon pb était quasi l'inverse : on a n CDs et on doit les remplir avec des fichiers pris dans une liste, mais on n'est pas obligé de tous les prendre.
 
l'algo greedy, je ne connais pas. J'ai regardé dans google, le premier article qui lui est consacré porte sur la détection de contours dans une image (marrant, ça vient d'un stage don le maître était un de mes profs:D). Je vois pas trop l'application sur mon pb.
 
En tout cas, on paramétrant bien mon algo, ça donnait une bonne solution, voire la meilleure solution en qq secondes alors que le brut force métait plusieurs minutes :) Pourtant, la taille du pb portait sur 2 ou 3 CDs et 20-25 fichiers...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Algo génétique

 

Sujets relatifs
Algo du CRCalgo de base
Algo de combinaisonAlgo de tirage de cartes
[Algo] Axes d'un graphiquealgo (qqchose compris entre 2 nombres)
[SGBD] Algo d'une requêteL' algo d' une équation
[Algo] Algorithme d'un Tetris (et programmation)Algo MINI-MAX/ alphabeta
Plus de sujets relatifs à : Algo génétique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR