algorithme génétique au problème du voyageur de commerce

download algorithme génétique au problème du voyageur de commerce

of 34

Transcript of algorithme génétique au problème du voyageur de commerce

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    1/34

    MASTER I INFORMATIQUE 2005/2006

    LIU YINAN

    Rapport de Mmoire

    Application des Algorithmes

    Gntiques au Problme duVoyageur de Commerce

    Encadrants :M. NakechbandiJ. Boukachour

    UNIVERSIT DU HAVRE

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    2/34

    Table des matires

    1 Introduction 5

    2 Problme de Voyageur de Commerce 6

    2.1 Thoriquement . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2 Pratiquement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.3 Complexit du Problme . . . . . . . . . . . . . . . . . . . . . . 7

    2.4 Intrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3 Algorithme Gntique 8

    3.1 La Cration de la Population Initiale . . . . . . . . . . . . . . . . 9

    3.2 Lvaluation des Individus . . . . . . . . . . . . . . . . . . . . . 9

    3.3 La Cration de Nouveaux Individus . . . . . . . . . . . . . . . . 9

    3.3.1 Les Selections . . . . . . . . . . . . . . . . . . . . . . . 9

    3.3.1.1 La Selection par Roulette . . . . . . . . . . . . 9

    3.3.1.2 La Selection par Rang . . . . . . . . . . . . . . 10

    3.3.1.3 La Selection par Tournoi . . . . . . . . . . . . 11

    3.3.1.4 Llitisme . . . . . . . . . . . . . . . . . . . . 11

    3.3.2 Les Croisements . . . . . . . . . . . . . . . . . . . . . . 11

    3.3.2.1 Le Croisement CPA . . . . . . . . . . . . . . . 11

    3.3.2.2 Le Croisement 1X . . . . . . . . . . . . . . . . 12

    3.3.2.3 Le Croisement MPX . . . . . . . . . . . . . . . 13

    Master I 2005/2006 1

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    3/34

    TABLE DES MATIRES

    3.3.2.4 Le Croisement OX . . . . . . . . . . . . . . . . 14

    3.3.2.5 Le Croisement CX . . . . . . . . . . . . . . . . 15

    3.3.3 La Mutation . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.3.4 LInsertion des Nouveaux Individus dans la Population . . 16

    3.3.5 Ritration du processus . . . . . . . . . . . . . . . . . . 16

    4 Application de lAG au PVC 18

    4.1 LObjectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4.2 Les Statistics sur les Paramtres de LAG . . . . . . . . . . . . . 18

    5 Conclusion 20

    6 Rfrences 21

    6.1 Site Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    6.2 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    A LInterface Graphiique 22

    B Codage des Oprateurs 25

    B.1 Codage de Selection Par Roulette . . . . . . . . . . . . . . . . . . 25

    B.2 Codage de Selection Par Rang . . . . . . . . . . . . . . . . . . . 26

    B.3 Codage de Selection Par Tournoi . . . . . . . . . . . . . . . . . . 26

    B.4 Codage de Croisement CPA . . . . . . . . . . . . . . . . . . . . 27

    B.5 Codage de Croisement 1X . . . . . . . . . . . . . . . . . . . . . 29

    B.6 Codage de Croisement MPX . . . . . . . . . . . . . . . . . . . . 30

    B.7 Codage de Croisement OX . . . . . . . . . . . . . . . . . . . . . 32

    Master I 2005/2006 2

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    4/34

    TABLE DES MATIRES

    Rsum

    Le problme du voyageur de commerce tant combinatoire (le nombre de so-lutions est de lordre n !, n nombre de villes), le but du projet est dappliquer desalgorithmes gntiques pour trouver le meilleur circuit de cot minimal. La miseen oeuvre de cet algorithme consiste particulirement intgrer des nouveauxoprateurs de slection et de croisement gntique.

    Master I 2005/2006 3

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    5/34

    Remerciements

    Je tiens remercier :

    M. Nakechbandi et M. Boukachour pour leur encadrement et leur nom-breuses explications du sujet.

    Master I 2005/2006 4

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    6/34

    Chapitre 1

    Introduction

    Les algorithmes gntiques ont t invents par Jonh Holland dans les annes60. Repris notamment par Golberg dans les annes 70,Le principe des algorithmesgntiques sinspire directement des lois de la slection naturelle, dcrites parDarwin. cette technique connait aujourdhui un franc succs. On lutilise dans larsolution de problmes complexes, ncessitant des temps de calcul levs.

    Les algorithmes gntiques sont des algorithmes doptimisation sappuyantsur des techniques drives de la gntique et des mcanismes dvolution de lanature : croisements, mutations, slections, etc... Ils appartiennent la classe desalgorithmes volutionnaires.

    Les applications des AG sont multiples : traitement dimage (alignement dephotos satellites, reconnaissance de suspects...), optimisation demplois du temps,optimisation de design, apprentissage des rseaux de neurones [Renders, 1995],etc.

    Le but de ce projet est dappliquer lalgorithme gntique au problme devoyageur de commerce, la mise en uvre de cet algorithme consiste particulire-ment intgrer des nouveaux oprateurs de slection et de croisement gntique.

    Master I 2005/2006 5

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    7/34

    Chapitre 2

    Problme de Voyageur deCommerce

    2.1 Thoriquement

    soit un graphe G = (S, A) , problme est de trouver une parcours qui passe partous les sommets une et une seule fois et qui soit de poids minimal. En general,

    on travaille sur un graphe complet.

    2.2 Pratiquement

    Un voyageur de commerce doit visiter N villes donnes en passant par chaqueville exactement une fois. Il commence par une ville quelconque et termine en re-tournant la ville de dpart. Les distances entre les villes sont connues. Quel che-min faut-il choisir afin de minimiser la distance parcourue ? La notion de distance

    Master I 2005/2006 6

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    8/34

    CHAPITRE 2. PROBLME DE VOYAGEUR DE COMMERCE

    peut-tre remplace par dautres notions comme le temps quil met ou largentquil dpense : dans tous les cas, on parle de cot.

    2.3 Complexit du Problme

    La complexit du problme crot comme la factorielle du nombre de villes. Silon considre des permutations simples, il existe 3 628 000 permutations de 10villes. Pour 100 villes, on passe 10 puissance 158. La complexit du problmecrot de manire plus que polynomiale (problme dit NP).

    n Nombre de possibilits Temps de calcul

    5 12 micro-seconde10 181440 deuxime de seconde15 43 milliards dizaine dheures20 60.1015 milliers dannes25 310.1021 milliards dannes

    2.4 Intrt

    Le PVC fournit un exemple dtude dun problme NP-complets dont lesmthodes de rsolution peuvent sappliquer dautres problmes de mathma-tiques discrte. Nanmoins, il a aussi des applications directes, notamment dansles transports et la logistique. Par exemple, trouver le chemin le plus court pour lesbus de ramassage scolaire ou, dans lindustrie, pour trouver la plus courte distanceque devra parcourir le bras mcanique dune machine pour percer les trous duncircuit imprim (les trous reprsentent les villes).

    Master I 2005/2006 7

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    9/34

    Chapitre 3

    Algorithme Gntique

    Les algorithmes gntiques sinspirent de lvolution des espces dans leurcadre naturel. Les espces sadaptent leur cadre de vie qui peut voluer, lesindividus de chaque espce se reproduisent, crant ainsi de nouveaux individus,certains subissent des modifications de leur ADN, certains disparaissent ....

    Un algorithme gntique va reproduire ce modle dvolution dans le but detrouver des solutions pour un problme donn.

    1. Une population sera un ensemble dindividus.

    2. Un individu sera une rponse un problme donn, quelle soit ou non unesolution valide du problme.

    3. Un gne sera une partie dune rponse au problme, donc dun individu.

    4. Une gnration est une itration de notre algorithme.

    Un algorithme gntique va faire voluer une population dans le but dam-liorer les individus.

    Le droulement dun algorithme gntique peut tre dcoup en cinq parties :

    1. La cration de la population initiale.

    2. Lvaluation des individus.

    3. La cration de nouveaux individus.

    4. Linsertion des nouveaux individus dans la population.

    5. Ritration du processus.

    Master I 2005/2006 8

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    10/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    3.1 La Cration de la Population Initiale

    La population initiale sera cre de manire alatoire condition que chaqueindividus dans la populations cre soit une solution du problme. La taille de lapopulation initiale doit tre raisonnablement grande en tenant compte la fois dela qualit des solutions trouves et du temps dexcution de notre algorithme.

    3.2 Lvaluation des Individus

    Aprs avoir cr la population initiale, nous attribuons une valeur dadaptationou une note chaque individu selon leur performance par rapport le cot dedistance totale. Il faudrait donc crer une fonction dvalution pour valuer laqualit de chaque individu.

    3.3 La Cration de Nouveaux Individus

    Une fois que nous avons fini dvaluer nos individus, nous allons crer denouveaux individus qui seront la nouvelle gnration de notre population, et nousesperons que certain entre eux seront de meilleurs solutions notre problme.

    Dans notre programme, nous allons utiliser des diffrents oprateurs pour cernotre nouvelle gnration.

    3.3.1 Les Selections

    3.3.1.1 La Selection par Roulette

    Les parents sont slectionns en fonction de leur performance. Meilleur estle rsultat cod par un chromosome, plus grandes sont ses chances dtre slec-tionn. Il faut imaginer une sorte de roulette de casino sur laquelle sont placs tousles chromosomes de la population, la place accorde chacun des chromosomestant en relation avec sa valeur dadaptation.

    Ensuite, la bille est lance et sarrte sur un chromosome. Les meilleurs chro-mosomes peuvent ainsi tre tirs plusieurs fois et les plus mauvais ne jamais treslectionns. Cela peut tre simul par lalgorithme suivant :

    Master I 2005/2006 9

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    11/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    FIG . 3.1 Schma dune roulette

    1. On calcule la somme S1 de toutes les fonctions dvaluation dune popula-tion.

    2. On gnre un nombre r entre 0 et S1.

    3. On calcule ensuite une somme S2 des valuations en sarrtant ds que r estdpass.

    4. Le dernier chromosome dont la fonction dvaluation vient dtre ajouteest slectionn.

    3.3.1.2 La Selection par Rang

    La slection prcdente rencontre des problmes lorsque la valeur dadapta-tion des chromosomes varient normment. Si la meilleure fonction dvaluationdun chromosome reprsente 90% de la roulette alors les autres chromosomes au-ront trs peu de chance dtre slectionns et on arriverait une stagnation delvolution.

    La slection par rang trie dabord la population par leur scores. Ensuite, chaquechromosome se voit associ un rang en fonction de sa position. Ainsi le plus mau-vais chromosome aura le rang 1, le suivant 2, et ainsi de suite jusquau meilleurchromosome qui aura le rang N. La slection par rang dun chromosome est lamme que par roulette, mais les proportions sont en relation avec le rang plu-

    tt quavec la valeur de lvaluation. Le tableau suivant fournit un exemple deslection par rang. Avec cette mthode de slection, tous les chromosomes ontune chance dtre slectionns. Cependant, elle conduit une convergence pluslente vers la bonne solution. Ceci est d au fait que les meilleurs chromosomes nediffrent pas normment des plus mauvais.

    Master I 2005/2006 10

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    12/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    Chromosomes 1 2 3 4 5 6 TotalProbabilits initiales 89% 5% 1% 4% 3% 2% 100%

    Rang 6 5 1 4 3 2 21Probabilits finales 29% 24% 5% 19% 14% 9% 9%

    TAB . 3.1 Exemple de slection par rang pour 6 chromosomes.

    3.3.1.3 La Selection par Tournoi

    Sur une population de m chromosomes, on forme m paires de chromosomes.Dans les paramtres de lAG, on dtermine une probabilit de victoire du plus fort.Cette probabilit reprsente la chance qua le meilleur chromosome de chaquepaire dtre slectionn. Cette probabilit doit tre grande (entre 70% et 100%).A partir des m paires, on dtermine ainsi m individus pour la reproduction.

    3.3.1.4 Llitisme

    A la cration dune nouvelle population, il y a de grandes chances que lesmeilleurs chromosomes soient perdus aprs les oprations dhybridation et de mu-

    tation. Pour viter cela, on utilise la mthode dlitisme. Elle consiste copier unou plusieurs des meilleurs chromosomes dans la nouvelle gnration. Ensuite, ongnre le reste de la population selon lalgorithme de reproduction usuel. Cettemthode amliore considrablement les algorithmes gntiques, car elle permetde ne pas perdre les meilleurs solutions.

    3.3.2 Les Croisements

    3.3.2.1 Le Croisement CPA

    Cest une mthode qui sagit un croisement en deux points.

    Nous suivons la mthode suivante :

    1. On choisi alatoirement deux points de dcoupe.

    2. On interverti, entre les deux parcours, les parties qui se trouvent entre cesdeux points.

    3. On supprime, lextrieur des points de coupe, les villes qui sont dj pla-ces entre les points de coupe.

    Master I 2005/2006 11

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    13/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    4. On recense les villes qui napparaissent pas dans chacun des deux parcours.

    5. On remplit alatoirement les trous dans chaque parcours.

    3.3.2.2 Le Croisement 1X

    Il est dsigne par le sigle 1X(ou 1 rappelle quil sagit dun croisement en1 point, X symbolise les croisements ; en toute rigueur, il faudrait le designerpar 1OX pour croisement dordre a 1 point). Il commence comme loprateursimple a un point par une recopie du dbut du pere(resp. de la mere) et il compltela fin du chromosome avec les valeurs numriques manquantes dans lordre dela mere (resp. du pere). En echangeant debut et fin dans la description dece croisement, on peut obtenir un autre fils et une autre fille selon un principesimilaire ; ceci peut permettre, par exemple, de garder les deux meilleurs enfantsobtenus, ce qui amliore la qualit de ce croisement. le tableau illustre les tapesdu croisement 1X.

    p1 = (123|456789) p2 = (452|187693)

    e1 = (123|8xxxxx) e2 = (456|7xxxxx)

    e1 = (123|87xxxx) e2 = (456|78xxxx)

    e1 = (123|876xxx) e2 = (456|789xxx)

    Master I 2005/2006 12

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    14/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    e1 = (123|8769xx) e2 = (456|7891xx)

    e1 = (123|87694x) e2 = (456|78912x)

    e1 = (123|876945) e2 = (456|789123)

    3.3.2.3 Le Croisement MPXLe PMX fut propos par Goldberg et Lingle [GL85]. Le but tait de construire

    un enfant par choix de sous squences dun ordonnancement dun des parents et deprserver lordre et la position dautant de lots que possible des autres parents. Lasous squence de lordonnancement est slectionne par choix de deux points decoupure alatoire, lesquels servent de frontire pour lopration de remplacement.Considrons par exemple les deux parents :

    p1 = (123|4567|89) p2 = (452|1876|93)

    Ces deux parents vont produire deux enfants. Premirement, les segmentscompris entre les points de coupures sont changs :

    e1 = (xxx|1876|xx) e2 = (xxx|4567|xx)

    Lchange dfnit ainsi une srie de permutations pour les autres lots : 1 4,8 5, 7 6, 6 7.

    Certaines positions de lots sont donc inchanges.

    e1 = (x23|1876|x9) e2 = (xx2|4567|93)

    Les deux enfants obtenus sont donc toujours viables (pas deux fois le mmelot dans le vecteur) et on vite ainsi lutilisation dun oprateur de rparation.

    Finalement, le premier x du vecteur enfant e1 est remplac par 4 en raison dela permutation 1 4. De la mme manire, on ralise les permutations pour lesautres x. Les vecteurs enfants finaux sont donc :

    Master I 2005/2006 13

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    15/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    e1 = (423|1876|59) e2 = (182|4567|93)

    Comme nous venons de le voir, cet algorithme prsente lavantage de fournirdes ordonnancements viables. Or, dans cet exemple, nous considrons uniquementdes lots positifs (placement en marche avant). Nous avons donc modifi lalgo-rithme standard pour prendre en compte les deux sens de placement des lots : leplacement en marche arrire et le placement en marche avant.

    3.3.2.4 Le Croisement OX

    Le crossover OX, propos par Davis [Dav85a], construit un enfant par choix desous-squences dun ordonnancement dun des parents et prserve lordre relatifdes lots des autres parents. Par exemple, soit deux parents

    p1 = (123|4567|89) p2 = (452|1876|93)

    Ces deux parents vont produire deux enfants. Premirement, les segmentsentre points de coupures sont copis.

    e1 = (xxx|1876|xx) e2 = (xxx|4567|xx)

    Ensuite, il suffit de partir du point de coupure dun des parents, les lots delautre parent sont copis dans le mme ordre, omettant les symboles dj pr-sents. Lorsque lon atteint la fin du vecteur, on continue depuis le premier empla-cement de la chane. La squence de lots issue du second parent est donc :

    93218

    Cette squence est place dans le premier enfant. Le point de dpart est la

    seconde coupure.

    e1 = (218|4567|93)

    De la mme manire, on obtient le deuxime enfant :

    e2 = (345|1876|92)

    Dans ce cas aussi, les enfants sont toujours viables.

    Master I 2005/2006 14

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    16/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    3.3.2.5 Le Croisement CX

    Le crossover CX, propos par Oliver [OSH87], engendre un enfant dans tousles cas tel que chaque lot provient dun des parents.

    p1 = (123456789) p2 = (412876935)

    Lenfant engendr est obtenu en prenant le premier lot du premier parent

    e1 = (1xxxxxxxx) e2 = (4xxxxxxxx)

    Ensuite, chaque lot doit tre pris dans un des parents, la mme position. Ilny a pas de choix possible. Le prochain lot considrer est le lot 4.

    e1 = (1xx4xxxxx) e2 = (4xx8xxxxx)

    Le lot 4, dans le parent p1, implique le lot 8 dans le parent p2.

    e1 = (1xx4xxx8x) e2 = (4xx8xxx3x)

    On continue ainsi jusqu la fin du cycle et on obtient :

    e1 = (1234xxx8x) e2 = (4128xxx3x)

    On complte alors en changeant les lots restants des deux parents, on obtient :

    e1 = (123476985) e2 = (412856739)

    3.3.3 La Mutation

    La mutation gnre des erreurs de recopie, afin de crer un nouvel individuqui nexistait pas auparavant. Le but est dviter lAG de converger vers des ex-trema locaux de la fonction et de permettre de crer des lments originaux. Si ellegnre un individu plus faible lindividu est limin. La probabilit de mutationreprsente la frquence laquelle les gnes dun chromosome sont muts.

    Master I 2005/2006 15

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    17/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    Sil ny a pas de mutation, le fils est insr dans la nouvelle population sanschangement.

    Si la mutation est applique, une partie du chromosome est change.

    La mutation est prvue pour viter au AG de senliser dans des optima locaux.Mais si elle est trop frquente, le AG est orient vers une recherche alatoire de labonne solution.

    Gnralement, La mthode de mutation consiste en une permutation de deuxvilles. Nous sommes certains que les individus muts auront toujours la formedune solution potentielle car nous ne changeons que lordre des ville. Par exemple :{A,B,C,D,E,F,G,H,I,J} pourra tre mut en {A,B,H,D,E,F,G,C,I,J}.

    3.3.4 LInsertion des Nouveaux Individus dans la Population

    Une fois que nous avons cr de nouveaux individus que ce soit par croisementou par mutation, il nous faut slectionner ceux qui vont continuer participer ldlamlioration de notre population.

    Une mthode relativement efficace consiste insrer les nouveaux individusdans la population, trier cette population selon le score(la valeur dadaptation)de ses membres, et ne conserver que les N meilleurs individus. Ici, dans notre

    programme, nous allons considrer que N soit la taille de la population.

    3.3.5 Ritration du processus

    Au fait, nous ferons les quatre tapes prsdentes en incrementant le nombrede gnration, tant que le nombre de gnration est infrieur au nombre maximumde gnration. Et le nombre maximum de gnration peut tre fix avec un nombreassez grand selon le problme rsoudre.

    Une fois le nombre maximum de gnrations atteint, vous obtenez une popu-lation de solutions. Mais rien ne vous dit que la solution thorique optimale aurat trouve. Les solutions se rapprochent des bonnes solutions, mais sans plus. Cenest pas une mthode exacte.

    Master I 2005/2006 16

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    18/34

    CHAPITRE 3. ALGORITHME GNTIQUE

    FIG . 3.2 Schma du fonctionnement de lalgorithme gntique

    Master I 2005/2006 17

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    19/34

    Chapitre 4

    Application de lAG au PVC

    4.1 LObjectif

    Lobjectif de ce projet est dintgrer lalgorithme gntique avec les nouveauxoprateurs de selection et de croisement dans un ensemble des algorithmes quipeuvent tous tre utilises rsoudre le problme de voyageur de commerce sousune interface graphique dans laquelle on pourra paramtriser et lancer lalgo-

    rithme gntique.

    4.2 Les Statistics sur les Paramtres de LAG

    Comme il y a plusieurs types de loprapteur, et des paramtres, nous prf-rons bien savoir quelle est la diffrences de lun et lautre doprateur, et des choixde paramtre pour un rsultat obtenu. Jai donc ralis une statistique qui sestbas sur le mme problme(le mme plan des villes) et sest stabilis sur vightfois de tests en utilisant exactement les mme paramtres et les mme oprateurs.

    Afin de voir la performance et lfficacit de chaque algorithme, jai galementfait une statistique avec la distance finale et le temps dexcution sur le mmeproblme.

    Master I 2005/2006 18

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    20/34

    CHAPITRE 4. APPLICATION DE LAG AU PVC

    TAB . 4.1 Tableau de Statistique sur les Paramtres de lAGNombre deVilles

    Croisement Probabilitde Croise-ment

    Selection Probabilitde Muta-tion

    DistanceMoyenne

    EcartType

    20 CPA 100% Roulette 0.1 121.4 225320 CPA 60% Roulette 0.1 99.5 2136

    20 CPA 100% Roulette0.02

    151.0 224820 CPA 100% Roulette 0.2 102.2 224420 1X 100% Roulette 0.1 101.9 215920 OX 100% Roulette 0.1 36.7 206820 CPA 100% Rang 0.1 133.0 228920 CPA 100% Tounoi 0.1 193.2 2322

    TAB . 4.2 Application des Algorithmes diffrentsAlgorithmes 20 Villes 50 Villes 100 Villes

    Distance Temps(ms) Distance Temps(ms) Distance Temps(ms)

    PPV 2371 0 3475 0 4607 0Insertion 2025 0 3512 0 4695 10

    2 change 1978 0 3107 0 4098 10

    Prim 2326 11 3678 70 5288 531llastique 1975 3054 3073 45015 4652 580735

    Recuit 1978 2056 3054 140 4213 541Algo D 4315 0 8156 20 11916 40

    AG 1941 1232 3013 3956 5913 17696

    Master I 2005/2006 19

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    21/34

    Chapitre 5

    Conclusion

    Lintrt de ce projet a t pour moi, la mise en uvre de lalgorithme gn-tique qui est largement utilis dans la recherche scientifique.

    Aprs avoir plusieurs tests du programme, jai dcouvert deux points o je mesuis tromp dessus :

    1. Premirement, javait pens que plus le nombre de population est grand,plus on a la chance de trouver la meillieur solution, cependant cette idenest pas correcte.En effet, surtout pour le grand nombre de villes, par exemple 200 villes,comme le nombre de population est trs grand, le temps dexcution estdj archilong, et en mme temps, la distance ne baisse pas rapidement nonplus du fait que on tombe dans une population trs large, et on na pas degrande chance de slectionner les meilleur parents afin de produire la nou-velle gnration. Par consquent, quand le nombre maximum de gnrationatteint, on ne trouve pas une bonne solution que lon a prvue.

    2. En fait, le deuxime point est quil me reste, dans le programme, un pro-

    blme que je narrive pas rsoudre, cest que lorsque le nombre de villesest pass 200, le rsultat de lAG est peu prs deux fois plus grand quecelui de lalgorithme Plus Proche Voisin.Au dpart, javais pens que le nombre maximum de gnration ntait pasassez grand, puis jai mis linfinie pour le nombre maximum de gnration,et jai galement incrment le nombre de stagnation, la solution(distance)a t amliore 45%(par exemple solution ancienne : 18560, solution ac-tuelle : 10506), mais en tout cas, la solution nest jamais infrieur 10000,du coup la solution de plus proche voisin est 6750.

    Master I 2005/2006 20

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    22/34

    Chapitre 6

    Rfrences

    6.1 Site Web

    Algorithme gntique : http://sis.univ-tln.fr/~tollari/TER/AlgoG en1/node5.html

    Chiffrement volutionniste : http://www.revue-eti.net/document.php ?id=858

    Rsolution de problme Voyageur de commerce : http://wwwsi.supelec.fr/yb/projets/algogen/VoydeCom/VoyDeCom.html

    LAlgorithme gntique : http://www.chez.com/produ/badro/ LesAlgorithmes gntiques : http://khayyam.developpez.com/articles/

    algo/genetic/#L3.1.3

    6.2 Documents

    Thse de Doctorat de lUniversit du Havre : TheseJeanPhilippeVacher.pdf(367 pages)

    Algorihthmes de Graphe : chap3_lacomme.pdf (27 pages)

    Master I 2005/2006 21

    http://sis.univ-tln.fr/~tollari/TER/AlgoGen1/node5.htmlhttp://sis.univ-tln.fr/~tollari/TER/AlgoGen1/node5.htmlhttp://www.revue-eti.net/document.php?id=858http://www.revue-eti.net/document.php?id=858http://wwwsi.supelec.fr/yb/projets/algogen/VoydeCom/VoyDeCom.htmlhttp://wwwsi.supelec.fr/yb/projets/algogen/VoydeCom/VoyDeCom.htmlhttp://www.chez.com/produ/badro/http://khayyam.developpez.com/articles/algo/genetic/#L3.1.3http://khayyam.developpez.com/articles/algo/genetic/#L3.1.3http://khayyam.developpez.com/articles/algo/genetic/#L3.1.3http://khayyam.developpez.com/articles/algo/genetic/#L3.1.3http://www.chez.com/produ/badro/http://wwwsi.supelec.fr/yb/projets/algogen/VoydeCom/VoyDeCom.htmlhttp://wwwsi.supelec.fr/yb/projets/algogen/VoydeCom/VoyDeCom.htmlhttp://www.revue-eti.net/document.php?id=858http://www.revue-eti.net/document.php?id=858http://sis.univ-tln.fr/~tollari/TER/AlgoGen1/node5.htmlhttp://sis.univ-tln.fr/~tollari/TER/AlgoGen1/node5.html
  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    23/34

    Annexe A

    LInterface Graphiique

    FIG . A.1 Linterface avant le lancement des algorithmes

    Master I 2005/2006 22

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    24/34

    ANNEXE A. LINTERFACE GRAPHIIQUE

    FIG . A.2 Linterface

    Master I 2005/2006 23

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    25/34

    ANNEXE A. LINTERFACE GRAPHIIQUE

    FIG . A.3 Linterface

    Master I 2005/2006 24

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    26/34

    Annexe B

    Codage des Oprateurs

    B.1 Codage de Selection Par Roulette

    public int[] selectionParRoulette(){

    int[] parents = new int[2];

    double sommeTotale = moyenneScore()*size();double bille = genAleatoire.nextDouble()*sommeTotale;

    double somme=0.0;

    int indice = 0;

    for(int i=0; i

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    27/34

    ANNEXE B. CODAGE DES OPRATEURS

    return parents;

    }

    B.2 Codage de Selection Par Rang

    public int[] selectionParRang(){

    int[] parents = new int[2];

    int RangTotal = 0;

    for(int i=0; i

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    28/34

    ANNEXE B. CODAGE DES OPRATEURS

    int[] parents = new int[2];

    int partenaire;

    parents[0] = genAleatoire.nextInt(nbMaxIndividus);

    parents[1] = genAleatoire.nextInt(nbMaxIndividus);

    partenaire = genAleatoire.nextInt(nbMaxIndividus);

    if(individuAt(parents[0]).getScore()

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    29/34

    ANNEXE B. CODAGE DES OPRATEURS

    inf = random.nextInt(nbVilles);

    sup = inf + random.nextInt(nbVilles - inf);

    for (int i=inf ; i < sup ; i++){

    parcoursFils0[i] = parcours[i];

    villesAPlacerFils0.removeElement((Object)parcours[i]);

    parcoursFils1[i] = partenaire.getPoint(i);

    villesAPlacerFils1.removeElement((Object)partenaire.getPoint(i));

    }

    for (int i=0; i < nbVilles ; i++){

    if(i == inf)

    i = sup;

    if(villesAPlacerFils0.contains(partenaire.getPoint(i))){

    parcoursFils0[i] = partenaire.getPoint(i);

    villesAPlacerFils0.removeElement((Object)partenaire.getPoint(i));

    }

    if(villesAPlacerFils1.contains(parcours[i])){

    parcoursFils1[i] = parcours[i];villesAPlacerFils1.removeElement(parcours[i]);

    }

    }

    int temp;

    for (int i=0; i < nbVilles; i++){

    if(i == inf)

    i = sup;

    if(parcoursFils0[i] == -1){

    temp = random.nextInt(villesAPlacerFils0.size());

    parcoursFils0[i] = (Integer)villesAPlacerFils0.elementAt(temp);

    villesAPlacerFils0.removeElementAt(temp);

    }

    if(parcoursFils1[i] == -1){

    temp = random.nextInt(villesAPlacerFils1.size());

    parcoursFils1[i] = (Integer)villesAPlacerFils1.elementAt(temp);

    villesAPlacerFils1.removeElementAt(temp);

    }

    }

    Master I 2005/2006 28

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    30/34

    ANNEXE B. CODAGE DES OPRATEURS

    fils[0] = new Individu(parcoursFils0);

    fils[1] = new Individu(parcoursFils1);

    return fils;

    }

    B.5 Codage de Croisement 1X

    public Individu[] croisement1X (Individu partenaire){

    Individu[] fils = new Individu[2];

    int[] enfant1 = new int[nbVilles];

    int[] enfant2 = new int[nbVilles];

    int posDecoupage = random.nextInt(nbVilles);

    for(int i=0; i < posDecoupage; i++){

    enfant1[i] = parcours[i];

    enfant2[i] = partenaire.getPoint(i);

    }

    int pos=posDecoupage;

    while(pos

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    31/34

    ANNEXE B. CODAGE DES OPRATEURS

    }

    }

    fils[0] = new Individu(enfant1);

    fils[1] = new Individu(enfant2);

    return fils;

    }

    B.6 Codage de Croisement MPX

    public Individu[] croisementMPX (Individu partenaire){

    Individu[] fils = new Individu[2];

    int[] enfant1 = new int[nbVilles];

    int[] enfant2 = new int[nbVilles];

    int posInf = random.nextInt(nbVilles/2);

    int posSup = posInf + random.nextInt(nbVilles - posInf);

    for(int i=0; i

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    32/34

    ANNEXE B. CODAGE DES OPRATEURS

    enfant1[i] = partenaire.getPoint(j);

    j = posSup;

    }

    }

    }

    }

    for(int i=posSup; i

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    33/34

    ANNEXE B. CODAGE DES OPRATEURS

    }

    for(int i=posSup; i

  • 7/27/2019 algorithme gntique au problme du voyageur de commerce

    34/34

    ANNEXE B. CODAGE DES OPRATEURS

    enfant1[i] = parcours[i];

    enfant2[i] = partenaire.getPoint(i);

    }

    for(int i = 0; i < nbVilles-posSup+posInf; i++){

    for(int j = 0; j < nbVilles; j++){

    if(!exist(enfant1,nbVilles,partenaire.getPoint((posSup+j)%nbVilles))){

    enfant1[(posSup+i)%nbVilles] = partenaire.getPoint((posSup+j)%nbVilles);

    j = nbVilles;

    }

    }

    for(int j = 0; j < nbVilles; j++){if(!exist(enfant2,nbVilles,parcours[(posSup+j)%nbVilles])){

    enfant2[(posSup+i)%nbVilles] = parcours[(posSup+j)%nbVilles];

    j = nbVilles;

    }

    }

    }

    fils[0] = new Individu(enfant1);

    fils[1] = new Individu(enfant2);

    return fils;

    }

    Master I 2005/2006 33