• Aucun résultat trouvé

Énoncé de TD

N/A
N/A
Protected

Academic year: 2022

Partager "Énoncé de TD"

Copied!
2
0
0

Texte intégral

(1)

Algorithmes Évolutionnaires Master 2 MIAGE IA

2

Travaux dirigés N

o

1 : MaxOne

Andrea G. B. Tettamanzi Université côte d'Azur

[email protected] Année universitaire 2020/2021

Résumé

On va coder en Python (ou un autre langage de programmation de votre choix) un algorithme génétique simple pour résoudre le problème dit MaxOne .

1 Introduction

Le problème dit MaxOne est un problème jouet, qui consiste à maximiser le nombres de 1 dans une chaine de chires binaires de longueur n. Bien évidemment nous connaissons la solution à l'avance (c'est la chaine 111. . .1), mais nous souhaitons que l'algorithme génétique la découvre tout seul, en ayant comme seul indice une fonction de tness qui renvoie le nombre de 1 dans une solution candidate.

2 Consignes

1. Prédisposez la squelette de votre algorithme génétique en suivant ce modèle :

#!/usr/bin/env python3 import random

MAXGEN = 100 # Nombre maximum de générations POPSIZE = 100 # La taille de la population N = 20 # la longueur d'un génome

PMUT = 0.01 # probabilité d'une mutation PX = 0.6 # probabilité d'une recombination random.seed()

pop = []

for i in range(POPSIZE):

# TO DO (initialisation) for g in range(MAXGEN):

pop = selection(pop) for ind in pop:

mutation(ind)

for i in range(0,POPSIZE,2):

if random.random() < PX:

crossover(pop[i],pop[i + 1]) 1

(2)

2. Codez la fonction qui réalise l'opérateur de mutation, qui prend un individu en entrée et inverse chacun de ses gènes avec une probabilité PMUT.

3. Codez la fonction qui réalise l'opérateur de croisement, qui prend deux individus en entrée, choisit un point de croisement au hasard et échange les deux sous-chaînes à sa droite.

4. Codez la fonction de tness, qui prend un individu en entrée et renvoie le nombre de 1 qu'il contient.

5. Codez la fonction qui réalise l'opérateur de sélection proportionnelle à la tness (sugges- tion : simulez une roulette comme expliqué en cours).

6. Instrumentez votre code avec des print à des endroits stratégiques pour pouvoir vérier qu'il marche correctement et suivre l'évolution. Par exemple, achez la tness cumulative à chaque génération, signalez si la solution a été trouvée, achez la population, etc.

7. S'il vous reste du temps, jouez avec les parametres pour étudier leur inuence sur le comportement de l'algorithme.

Rendez votre code et vos observations dans un archive zippé par courriel.

2

Références

Documents relatifs

Son père Louis VIII, qui lui-même n'avait pas été associé à la dignité royale du vivant de son propre père, était mort au loin sans avoir fait encore sacrer son fils aîné

essaie

seul Reconnaître les lettres de l’alphabet et connaître les correspondances entre les trois manières de les écrire.. Écrire son prénom en écriture cursive

Ils cherchent à écrire bien, passent beaucoup de temps avec J'écris tout seul, mais écrivent moins.. J'écris tout seul n'a toujours été utilisé dans ma classe

Au moment des lettres collectives, des textes comptes rendus, chacun a son «Tout seul» et on cherche ensemble comment écrire les mots en les trouvant ou

gouverneur en ladite province de vos bons avis sur toutes affaires, (...) ouïr et entendre les plaintes et doléances de nos sujets de notre dite ville et pays, leur pourvoir ou

gouverneur en ladite province de vos bons avis sur toutes affaires, (...) ouïr et entendre les plaintes et doléances de nos sujets de notre dite ville et pays, leur pourvoir ou

Pour conserver les modifications du contenu de ces tableaux (après les avoir triées ou, après des ajouts, etc.), on recopie ces tableaux dans le fichier original ou