SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
PI2T Développement informatique
Séance 7
Algorithmique II : Techniques
de recherche en intelligence artificielle
Sébastien Combéfis, Quentin Lurkin 14 mars 2016
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
Objectifs
Techniques de recherche de solution en intelligence artificielle
Espace d’états, état du jeu et coups
Recherche non informée
Recherche informée
Librairies et framework d’IA en Python
Librairie Simple IA
Framework easyAI
3
Problème de recherche
État
L’état d’un système le décrit à un instant donné
Typiquement décrit par un ensemble de variables avec leur valeur
Modification de l’état selon le type d’environnement
Environnement de type discret ou continu
Au départ, le système est dans un état initial
5
Action
Une action est effectuée sur l’environnement
Modification de l’état de l’environnement suite à l’action
Ensemble d’actions possibles pour chaque état
Des actions peuvent être indisponibles dans certains états
Définition d’une action par une fonction successeur
État de départ État d’arrivée
action
6
Robot nettoyeur (1)
Robot dans une pièce qui doit la nettoyer
Démarre de sa base et doit y retourner après avoir tout inspecté
Description de l’état composée de deux éléments
Contenu de chaque case (robot, déchet)
Direction courante du robot
7
Robot nettoyeur (2)
Quatre actions possibles
move avance d’une case dans la direction courante
left tourne sur lui-même de 90 degrés vers la gauche
right tourne sur lui-même de 90 degrés vers la droite
clean nettoie la case sur laquelle il se trouve
L’objectif est d’avoir nettoyé toutes les cases
Et d’éventuellement être revenu à la case de départ
8
Arbre d’exécution
L’arbre d’exécution reprend toutes les exécutions possibles
Cet arbre peut éventuellement être infini
État dans les nœuds et actions sur les arêtes
Nombre maximum de fils correspond au nombre d’actions
Un chemin dans l’arbre représente une exécution donnée
L’arbre représente donc bien toutes les exécutions
9
Espace d’états
Représentation compacte sous forme d’un graphe
On ne duplique plus les états égaux
Espace d’états complètement défini par
l’état initial
et la fonction successeur
Un chemin dans le graphe représente une exécution donnée
Une boucle indique une exécution infinie possible
10
Robot nettoyeur (3)
Ensemble d’actions possibles dépend de l’état
Le robot ne peut pas avancer une fois au bord du terrain
move left right clean
11
Robot nettoyeur (4)
Les états équivalents de l’arbre d’exécution sont fusionnés
Forme beaucoup plus compacte avec 32 états en tout
move
left right
right
left
clean
clean cleanclean
12
Cout et objectif
Possibilité d’ajouter un cout pour les actions
Cout pour effectuer une action qui mène d’un état à un autre
Minimiser cout du chemin d’exécution de la solution
Différence entre solution et solution optimale
L’objectif est l’ensemble des états à atteindre
Une solution est un chemin de l’état initial à un objectif
13
Robot nettoyeur (5)
La solution optimale pour le robot fait six actions
Cette solution n’est pas unique
right move
clean
left
leftmove
14
Formalisation
Formalisation mathématique d’un problème de recherche
Ensembles des états et des actions : Q et A
État initial : q0 ∈ Q
Fonction successeur : succ : Q × A → Q
Fonction de cout : c : Q × A → R
Objectif : G ⊆ Q
Permet de raisonner sur les problèmes de recherche
Raisonnement abstrait applicable sur des instances
15
Formalisation du robot nettoyeur (1)
Définition formelle de l’exemple du robot nettoyeur
Q = {α, β, γ, δ} × {N, S, W , E} × 2{α,β,γ,δ}
et
A = {move, left, right, clean}
q0 = (α, N, {B})
succ(q, a) = ... (∀q ∈ Q, a ∈ A)
c(q, a) = 1 (∀q ∈ Q, a ∈ A)
G = {(α, N, ∅), (α, S, ∅), (α, W , ∅), (α, E, ∅)}
α β
γδ
16
Formalisation du robot nettoyeur (2)
Définition de la fonction successeur
Au maximum 4 actions pour chacun des 32 états différents
(qs, a) qe
((α, N, {B}), move) (δ, N, {B})
((α, N, {B}), left) (α, W , {B})
((α, N, {B}), right) (α, E, {B})
((α, N, {B}), clean) (α, N, {B})
((α, S, {B}), left) (α, E, {B})
((α, S, {B}), right) (α, W , {B})
((α, S, {B}), clean) (α, S, {B})
(qs, a) qe
((α, W , {B}), left) (α, S, {B})
((α, W , {B}), right) (α, N, {B})
((α, W , {B}), clean)
((α, E, {B}), move) (β, E, {B})
((α, E, {B}), left) (α, N, {B})
((α, E, {B}), right) (α, S, {B})
((α, E, {B}), clean) (α, E, {B})
...etc.
17
Exemple : 8-puzzle
Plateau de jeu 3 × 3 avec 8 blocs numérotés de 1 à 8
Le dernier bloc est le blanc (ou le trou)
Les actions consistent à déplacer un bloc numéroté vers le trou
Le but est de réordonner tous les blocs numérotés
4
2
8
1
6
5
3
7
7
4
1
8
5
2
6
3
18
Exemple : 8-queens
Plateau de jeu 8 × 8 de type échecs
Les règles du jeu pour la reine s’appliquent
Les actions consistent à placer une reine sur une case libre
Le but est de placer 8 reines sans qu’aucune soit en danger
Q
Q
Q
Q
Q
Q
Q
Q
19
Algorithme de recherche
Mesure de performance
Quatre critères pour évaluer les performances d’un algorithme
Complétude : l’algorithme trouve-t-il toujours une solution ?
Optimalité : la solution trouvée est-elle la meilleure ?
Complexité temporelle : temps pour trouver la solution
Complexité spatiale : mémoire pour trouver la solution
Selon la situation, certains critères seront ignorés
Parfois, l’algorithme boucle et ne termine donc jamais
21
Recherche non informée
Recherche non informée ou recherche aveugle
Exploration complète de l’espace d’états
Recherche basée uniquement sur la définition du problème
Génération d’états avec la fonction successeur
Test de si un état fait partie de l’objectif ou non
Distinction entre algorithmes selon l’ordre d’exploration
Peut conduire à atteindre plus ou moins vite une solution
22
Breadth-First Search (1)
Exploration successives des successeurs en largeur
D’abord les successeurs d’un nœuds avant leurs successeurs...
Exploration de l’arbre d’exécution par niveaux
Algorithme complet, mais pas forcément optimal
1
2
5
12 13
6
3
7 8 9
4
10 11
23
Breadth-First Search (2)
Complexité temporelle de l’algorithme en O(bd+1)
b facteur de branchement (nombre maximum de fils)
d la profondeur d’une solution (de la moins profonde)
b + b2
+ b3
+ ... + bd
+ (bd+1
− b)
Même complexité spatiale
Peut très vite être problématique pour les grosses instances
Optimal lorsque tous les couts sont identiques
Exploration du nœud non exploré le moins profond
24
Uniform-Cost Search
Exploration via l’action qui a le cout le plus faible
Permet d’explorer d’abord le chemin de cout total minimal
Complétude et optimalité assurées si c(q, a) > ε pour ε > 0
Nœuds parcourus en ordre croissant du cout du chemin associé
Complexité temporelle et spatiale en O(b1+ C∗/ε )
Avec C∗
le cout optimal et ε > 0 (souvent plus grand que bd
)
25
Depth-First Search (1)
Exploration d’abord en profondeur
D’abord explorer le nœud non exploré le plus profond
Descente jusqu’à une feuille de l’arbre
Pas complet (peut être coincé dans une boucle), ni optimal
1
2
5
7 8
6
3 4
26
Depth-First Search (2)
Complexité temporelle de l’algorithme en O(bm)
b facteur de branchement (nombre maximum de fils)
m la profondeur maximale dans l’arbre
b + b2
+ b3
+ ... + bm
Complexité spatiale de l’algorithme en O(bm + 1)
La variante recherche backtracking ne nécessite que O(m)
27
Depth-Limited Search
Ajout d’une profondeur maximale d’exploration
Pas complet si < d (solution hors de portée)
Pas optimal si > d (peut rater la solution la moins profonde)
Complexité temporelle en O(b ) et spatiale en O(b )
Cas particulier de Depth-First Search avec = ∞
Deux types d’échecs différents
Failure lorsque pas de solutions
Cutoff lorsque pas de solutions dans la limite
28
Iterative Deepening Depth-First Search
Augmentation progressive de la profondeur maximale
Depth-Limited Search avec successivement = 0, = 1...
Solution optimale trouvée lorsque = d
Algorithme complet et optimal
Complexité temporelle en O(bd ) et spatiale en O(bd)
Algorithm 1: Iterative-Deepening-Search
Function IDS(problem)
for depth ← 0 to ∞ do
result ← DLS(problem, depth)
if result = cutoff then
return result
29
Bidirectional Search
Effectuer deux recherches en parallèle
Une depuis l’état initial et une depuis le(s) objectif(s)
Nécessite que la fonction prédécesseur soit disponible
Facile si les actions sont réversibles
Solution trouvée lorsque les deux recherches se croisent
30
Recherche informée
Recherche informée utilise des connaissances spécifiques
Beaucoup plus efficace que les recherches non informées
Stratégie générale de type Best-First Search
Choix du meilleur nœud à explorer à chaque étape
Fonction d’évaluation f (n)
Choix du nœud à explorer avec la plus faible valeur
Fonction heuristique h(n)
Cout estimé du chemin le moins cher vers l’objectif
31
Greedy Best-First Search
Choix du nœud le plus proche de l’objectif
En utilisant f (n) = h(n)
L’heuristique est choisie en fonction du problème
Souvent une mesure de distance vers l’objectif
Similaire à Depth-First Search (exploration d’un chemin)
Pas complet et pas optimal
Complexité temporelle en O(bm) et spatiale en O(bm)
Réduit en fonction du problème et de la qualité de l’heuristique
32
A∗
Search
A∗ (prononcé « A-star ») combine deux fonctions
g(n) donne le cout d’avoir atteint n
h(n) heuristique du cout pour atteindre l’objectif depuis n
Fonction d’évaluation f (n) = g(n) + h(n)
Cout estimé pour atteindre l’objectif en passant par n
Complet et optimal si h(n) est admissible
h(n) ne surestime jamais le cout pour atteindre l’objectif
33
Adversarial Search
Recherche de solution pour des jeux avec deux adversaires
Deux joueurs appelés MIN et MAX (joue en premier)
Définition comme un problème de recherche
État initial : position sur le plateau et joueur qui commence
Fonction successeur : liste de paires (move, state)
Test terminal : teste si le jeu est terminé (état terminaux)
Fonction d’utilité : donne une valeur aux états terminaux
Arbre du jeu défini par l’état initial et les mouvements légaux
34
Stratégie optimale
MAX veut atteindre un état gagnant (terminal)
Tout en sachant que MIN a son mot à dire
Proposition d’une stratégie pour MAX qui définit
Le mouvement dans l’état initial
Le mouvement suite à chaque mouvement possible de MIN
...
Jouer le meilleur coup possible à chaque tour
En supposant que le joueur en face suit une stratégie parfaite
35
Caractéristiques des jeux (1)
Jeu de somme nulle lorsque la somme des gains vaut 0
Le gain de l’un correspond obligatoirement à une perte de l’autre
Jeu avec information parfaite pour les joueurs
Toute l’information du plateau est accessible aux deux joueurs
Pas de chance impliquée dans le jeu
Valeur d’un état terminal
Évaluation de la situation pour un joueur donné
36
Caractéristiques des jeux (2)
Déterministe Chance
Information parfaite Échecs
Dames
Go
Othello
Backgammon
Monopoly
Information imparfaite Stratego Bridge
Poker
Scrabble
Nuclear War
37
Valeur minimax
Fonction MinimaxValue associe une valeur à chaque nœud n
Définition récursive de cette fonction
Hypothèse que les deux joueurs jouent parfaitement
MAX préfère aller vers une situation de plus grande valeur
et MIN de plus petite valeur
MinimaxValue(n) =



Utility(n) si n est un nœud terminal
maxs∈Successors(n) MinimaxValue(s) si n est un nœud MAX
mins∈Successors(n) MinimaxValue(s) si n est un nœud MIN
38
Algorithme minimax
Arbre du jeu avec pour MAX et pour MIN
MAX choisit toujours le coup qui maximise la valeur minimax
5 6 2 1 4 7 2
39
Algorithme minimax
Arbre du jeu avec pour MAX et pour MIN
MAX choisit toujours le coup qui maximise la valeur minimax
5
5 6 2 1 4 7 2
39
Algorithme minimax
Arbre du jeu avec pour MAX et pour MIN
MAX choisit toujours le coup qui maximise la valeur minimax
5
5 6
1
2 1 4
2
7 2
39
Algorithme minimax
Arbre du jeu avec pour MAX et pour MIN
MAX choisit toujours le coup qui maximise la valeur minimax
5
5
5 6
1
2 1 4
2
7 2
39
Jeu des bâtonnets (1)
À chaque tour, le joueur retire 1, 2 ou 3 bâtonnets
Le joueur qui retire le dernier bâtonnet a perdu
40
Jeu des bâtonnets (2)
• • • • •−1
• • ••−1
• • •+1
••−1
•−1
−1
+1
•+1
+1
−1
••+1
•+1
+1
−1
•−1
−1
• • •−1
••+1
•+1
+1
−1
•−1
−1
+1
••−1
•−1
−1
+1
Le joueur MAX perd tout le temps !
41
Alpha-Beta pruning (1)
Éviter d’explorer un sous-arbre lorsque ce n’est pas nécessaire
On ne sait pas faire mieux que la valeur minimax actuelle
Deux situations de simplification possibles
α plus grande borne inférieure pour MAX
β plus petite borne supérieure pour MIN
Mémorisation des bornes durant l’exploration de l’arbre
42
Alpha-Beta pruning (2)
On peut raisonner sur la situation actuelle de l’exploration
La racine sera ≥ 2 puisque c’est un MAX
Le fils droit de la racine sera ≤ 1 car c’est un MIN
≥ 2
= 2
2 7
≤ 1
1
... ... ...
Exemple animé : http://alphabeta.alekskamko.com/
43
Alpha-Beta pruning (2)
On peut raisonner sur la situation actuelle de l’exploration
La racine sera ≥ 2 puisque c’est un MAX
Le fils droit de la racine sera ≤ 1 car c’est un MIN
≥ 2
= 2
2 7
≤ 1
1
... ... ...
Exemple animé : http://alphabeta.alekskamko.com/
43
Alpha-Beta pruning (3)
Mémorisation de deux bornes par nœud
α(n) plus grande valeur trouvée actuellement (−∞ au départ)
β(n) plus petite valeur trouvée actuellement (+∞ au départ)
Deux situations de pruning
Beta cutoff sur nœud MAX n
si α(n) ≥ β(i) pour i ancêtre MIN de n
Alpha cutoff sur nœud MIN n
si β(n) ≤ α(i) pour i ancêtre MAX de n
44
Framework
Simple AI (1)
Librairie d’implémentation de plusieurs algorithmes d’IA
Algorithmes de recherche
Apprentissage automatique (machine learning)
Librairie open-source disponible sur GitHub
https://github.com/simpleai-team/simpleai
46
Simple AI (2)
Bugs avec la librairie lorsqu’on utilise Python 3
Utilisation d’un fork : https://github.com/combefis/simpleai
Algorithme de recherche d’une librairie par Python
Recherche dans le même dossier
Recherche dans les dossiers de la variable PYTHONPATH
Recherche dans le dossier système
$ echo $PYTHONPATH
$ export PYTHONPATH =/ Users/combefis/Documents/Projects/simpleai
$ echo $PYTHONPATH
/Users/combefis/Documents/Projects/simpleai
47
Définition d’un problème (1)
Création d’une nouvelle classe de type SearchProblem
Représentation du problème de recherche
Plusieurs méthodes à définir dans la classe
actions définit les actions possibles dans un état
result calcule le nouvel état suite à une action effectuée
is_goal teste si un état correspond à l’objectif
48
Définition d’un problème (2)
Exemple d’un problème de recherche d’un mot
Les états sont des mots, les actions sont le choix d’une lettre
1 from simpleai.search import SearchProblem
2
3 GOAL = ’HELLO ’
4
5 class HelloProblem ( SearchProblem ):
6 def actions(self , state):
7 if len(state) < len(GOAL):
8 return list(’ ABCDEFGHIJKLMNOPQRSTUVWXYZ ’)
9 return []
10
11 def result(self , state , action):
12 return state + action
13
14 def is_goal(self , state):
15 return state == GOAL
49
Exécution de la recherche
Création d’une instance du problème
Instance de la nouvelle classe définie pour le problème
Choix d’un algorithme de recherche et lancement de celle-ci
breadth_first, depth_first, greedy...
1 from simpleai.search import breadth_first
2
3 problem = HelloProblem ( initial_state =’’)
4 result = breadth_first (problem)
5 print(result.state) # État atteint
6 print(result.path ()) # Chemin d’exécution pour atteindre l’objectif
HELLO
[(None , ’’), (’H’, ’H’), (’E’, ’HE ’), (’L’, ’HEL ’), (’L’, ’HELL ’)
, (’O’, ’HELLO ’)]
50
Heuristique (1)
Évaluation de la distance avec l’objectif à atteindre
On compte le nombre de lettres différentes et manquantes
Ajout d’une méthode heuristic dans la classe du problème
Va diriger le choix des actions vers la solution
1 from simpleai.search import SearchProblem
2
3 GOAL = ’HELLO ’
4
5 class HelloProblem ( SearchProblem ):
6 # ...
7 def heuristic(self , state):
8 wrong = sum ([1 if state[i] != GOAL[i] else 0 for i in range
(len(state))])
9 missing = len(GOAL) - len(state)
10 return wrong + missing
51
Heuristique (2)
À chaque état, c’est la meilleure lettre qui est choisie
Et au vu de l’heuristique, c’est à chaque fois la bonne
Importance du choix de l’heuristique
Mesure du temps d’exécution pour résoudre le problème
MacBookPro 2.9 GHz Intel Core i7, 8 Go 1600 MHz DDR3
Breadth-First Search Greedy Best-First Search
96.65512 s 0.00274 s
52
easyAI
Framework d’IA pour des jeux à deux joueurs
Negamax avec alpha-beta pruning et table de transposition
Framework open-source disponible sur GitHub
https://github.com/Zulko/easyAI
53
Définition d’un problème (1)
1 from easyAI import TwoPlayersGame , Human_Player , AI_Player , Negamax
2
3 class SimpleNim( TwoPlayersGame ):
4 def __init__(self , players):
5 self.players = players
6 self.nplayer = 1
7 self.__sticks = 5
8
9 def possible_moves (self):
10 return [str(v) for v in (1, 2, 3) if v <= self.__sticks]
11
12 def make_move(self ,move):
13 self.__sticks -= int(move)
14
15 def win(self):
16 return self.__sticks <= 0
17
18 def is_over(self):
19 return self.win()
20
21 def show(self):
22 print(’{} sticks left in the pile ’.format(self.__sticks))
23
24 def scoring(self):
25 return 1 if self.win() else 0
54
Définition d’un problème (2)
1 ai = Negamax (13)
2 game = SimpleNim ([ Human_Player (), AI_Player(ai)])
3 history = game.play ()
5 sticks left in the pile
Player 1 what do you play ? 3
Move #1: player 1 plays 3 :
2 sticks left in the pile
Move #2: player 2 plays 1 :
1 sticks left in the pile
Player 1 what do you play ? 1
Move #3: player 1 plays 1 :
0 sticks left in the pile
55
Livres de référence
ISBN
978-0-130-80302-3
56
Crédits
Photos des livres depuis Amazon
https://www.flickr.com/photos/gsfc/6800387182
https://openclipart.org/detail/168755/cartoon-robot
https://www.flickr.com/photos/grahamvphoto/17479235311
https://www.flickr.com/photos/eilonwy77/9185293834
57

Weitere ähnliche Inhalte

Was ist angesagt?

Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleECAM Brussels Engineering School
 
Chapitre 2 le recuit simulé
Chapitre 2 le recuit simuléChapitre 2 le recuit simulé
Chapitre 2 le recuit simuléAchraf Manaa
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeENSET, Université Hassan II Casablanca
 
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...Jean Rohmer
 
L’intelligence artificielle aujourd’hui (FR)
L’intelligence artificielle aujourd’hui (FR)L’intelligence artificielle aujourd’hui (FR)
L’intelligence artificielle aujourd’hui (FR)thierry tranchina
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning Niji
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...ENSET, Université Hassan II Casablanca
 
Les systèmes experts
Les systèmes expertsLes systèmes experts
Les systèmes expertsBruno Delb
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 

Was ist angesagt? (20)

Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
 
Chapitre 2 le recuit simulé
Chapitre 2 le recuit simuléChapitre 2 le recuit simulé
Chapitre 2 le recuit simulé
 
Algorithme knn
Algorithme knnAlgorithme knn
Algorithme knn
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
 
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
A star
A starA star
A star
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
L’intelligence artificielle aujourd’hui (FR)
L’intelligence artificielle aujourd’hui (FR)L’intelligence artificielle aujourd’hui (FR)
L’intelligence artificielle aujourd’hui (FR)
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Python
PythonPython
Python
 
Les systèmes experts
Les systèmes expertsLes systèmes experts
Les systèmes experts
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 

Andere mochten auch

Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationECAM Brussels Engineering School
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelECAM Brussels Engineering School
 
la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...najwa sabouk
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSECAM Brussels Engineering School
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileDe la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileECAM Brussels Engineering School
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 

Andere mochten auch (20)

Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnel
 
Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
 
Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?
 
la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...
 
Développement informatique : Programmation concurrente
Développement informatique : Programmation concurrenteDéveloppement informatique : Programmation concurrente
Développement informatique : Programmation concurrente
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Développement informatique : Programmation graphique
Développement informatique : Programmation graphiqueDéveloppement informatique : Programmation graphique
Développement informatique : Programmation graphique
 
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileDe la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 

Ähnlich wie Développement informatique : Algorithmique II : Techniques de recherche en intelligence artificielle

chap2 algorithme de recherche.pdf
chap2 algorithme de recherche.pdfchap2 algorithme de recherche.pdf
chap2 algorithme de recherche.pdfdonixwm
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 
Cours-optimisation.pdf
Cours-optimisation.pdfCours-optimisation.pdf
Cours-optimisation.pdfMouloudi1
 
Chapitre i introduction et motivations
Chapitre i introduction et motivationsChapitre i introduction et motivations
Chapitre i introduction et motivationsSana Aroussi
 
optimisation cours.pdf
optimisation cours.pdfoptimisation cours.pdf
optimisation cours.pdfMouloudi1
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabouAchraf Manaa
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfLamissGhoul1
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
Android Optimisations Greendroid
Android Optimisations GreendroidAndroid Optimisations Greendroid
Android Optimisations GreendroidGDG Nantes
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 

Ähnlich wie Développement informatique : Algorithmique II : Techniques de recherche en intelligence artificielle (20)

chap2 algorithme de recherche.pdf
chap2 algorithme de recherche.pdfchap2 algorithme de recherche.pdf
chap2 algorithme de recherche.pdf
 
IA
IAIA
IA
 
Rapport MOGPL
Rapport MOGPLRapport MOGPL
Rapport MOGPL
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
Cours-optimisation.pdf
Cours-optimisation.pdfCours-optimisation.pdf
Cours-optimisation.pdf
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
Chapitre i introduction et motivations
Chapitre i introduction et motivationsChapitre i introduction et motivations
Chapitre i introduction et motivations
 
optimisation cours.pdf
optimisation cours.pdfoptimisation cours.pdf
optimisation cours.pdf
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabou
 
Chapitre5
Chapitre5Chapitre5
Chapitre5
 
chapitre 5.pptx
chapitre 5.pptxchapitre 5.pptx
chapitre 5.pptx
 
Part1
Part1Part1
Part1
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdf
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
09_IA_planif_BB.pdf
09_IA_planif_BB.pdf09_IA_planif_BB.pdf
09_IA_planif_BB.pdf
 
Présentation pfe
Présentation pfePrésentation pfe
Présentation pfe
 
Android Optimisations Greendroid
Android Optimisations GreendroidAndroid Optimisations Greendroid
Android Optimisations Greendroid
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 

Mehr von ECAM Brussels Engineering School (11)

Introduction à la formation Digitalent
Introduction à la formation DigitalentIntroduction à la formation Digitalent
Introduction à la formation Digitalent
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projet
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 

Développement informatique : Algorithmique II : Techniques de recherche en intelligence artificielle

  • 1. PI2T Développement informatique Séance 7 Algorithmique II : Techniques de recherche en intelligence artificielle Sébastien Combéfis, Quentin Lurkin 14 mars 2016
  • 2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
  • 3. Objectifs Techniques de recherche de solution en intelligence artificielle Espace d’états, état du jeu et coups Recherche non informée Recherche informée Librairies et framework d’IA en Python Librairie Simple IA Framework easyAI 3
  • 5. État L’état d’un système le décrit à un instant donné Typiquement décrit par un ensemble de variables avec leur valeur Modification de l’état selon le type d’environnement Environnement de type discret ou continu Au départ, le système est dans un état initial 5
  • 6. Action Une action est effectuée sur l’environnement Modification de l’état de l’environnement suite à l’action Ensemble d’actions possibles pour chaque état Des actions peuvent être indisponibles dans certains états Définition d’une action par une fonction successeur État de départ État d’arrivée action 6
  • 7. Robot nettoyeur (1) Robot dans une pièce qui doit la nettoyer Démarre de sa base et doit y retourner après avoir tout inspecté Description de l’état composée de deux éléments Contenu de chaque case (robot, déchet) Direction courante du robot 7
  • 8. Robot nettoyeur (2) Quatre actions possibles move avance d’une case dans la direction courante left tourne sur lui-même de 90 degrés vers la gauche right tourne sur lui-même de 90 degrés vers la droite clean nettoie la case sur laquelle il se trouve L’objectif est d’avoir nettoyé toutes les cases Et d’éventuellement être revenu à la case de départ 8
  • 9. Arbre d’exécution L’arbre d’exécution reprend toutes les exécutions possibles Cet arbre peut éventuellement être infini État dans les nœuds et actions sur les arêtes Nombre maximum de fils correspond au nombre d’actions Un chemin dans l’arbre représente une exécution donnée L’arbre représente donc bien toutes les exécutions 9
  • 10. Espace d’états Représentation compacte sous forme d’un graphe On ne duplique plus les états égaux Espace d’états complètement défini par l’état initial et la fonction successeur Un chemin dans le graphe représente une exécution donnée Une boucle indique une exécution infinie possible 10
  • 11. Robot nettoyeur (3) Ensemble d’actions possibles dépend de l’état Le robot ne peut pas avancer une fois au bord du terrain move left right clean 11
  • 12. Robot nettoyeur (4) Les états équivalents de l’arbre d’exécution sont fusionnés Forme beaucoup plus compacte avec 32 états en tout move left right right left clean clean cleanclean 12
  • 13. Cout et objectif Possibilité d’ajouter un cout pour les actions Cout pour effectuer une action qui mène d’un état à un autre Minimiser cout du chemin d’exécution de la solution Différence entre solution et solution optimale L’objectif est l’ensemble des états à atteindre Une solution est un chemin de l’état initial à un objectif 13
  • 14. Robot nettoyeur (5) La solution optimale pour le robot fait six actions Cette solution n’est pas unique right move clean left leftmove 14
  • 15. Formalisation Formalisation mathématique d’un problème de recherche Ensembles des états et des actions : Q et A État initial : q0 ∈ Q Fonction successeur : succ : Q × A → Q Fonction de cout : c : Q × A → R Objectif : G ⊆ Q Permet de raisonner sur les problèmes de recherche Raisonnement abstrait applicable sur des instances 15
  • 16. Formalisation du robot nettoyeur (1) Définition formelle de l’exemple du robot nettoyeur Q = {α, β, γ, δ} × {N, S, W , E} × 2{α,β,γ,δ} et A = {move, left, right, clean} q0 = (α, N, {B}) succ(q, a) = ... (∀q ∈ Q, a ∈ A) c(q, a) = 1 (∀q ∈ Q, a ∈ A) G = {(α, N, ∅), (α, S, ∅), (α, W , ∅), (α, E, ∅)} α β γδ 16
  • 17. Formalisation du robot nettoyeur (2) Définition de la fonction successeur Au maximum 4 actions pour chacun des 32 états différents (qs, a) qe ((α, N, {B}), move) (δ, N, {B}) ((α, N, {B}), left) (α, W , {B}) ((α, N, {B}), right) (α, E, {B}) ((α, N, {B}), clean) (α, N, {B}) ((α, S, {B}), left) (α, E, {B}) ((α, S, {B}), right) (α, W , {B}) ((α, S, {B}), clean) (α, S, {B}) (qs, a) qe ((α, W , {B}), left) (α, S, {B}) ((α, W , {B}), right) (α, N, {B}) ((α, W , {B}), clean) ((α, E, {B}), move) (β, E, {B}) ((α, E, {B}), left) (α, N, {B}) ((α, E, {B}), right) (α, S, {B}) ((α, E, {B}), clean) (α, E, {B}) ...etc. 17
  • 18. Exemple : 8-puzzle Plateau de jeu 3 × 3 avec 8 blocs numérotés de 1 à 8 Le dernier bloc est le blanc (ou le trou) Les actions consistent à déplacer un bloc numéroté vers le trou Le but est de réordonner tous les blocs numérotés 4 2 8 1 6 5 3 7 7 4 1 8 5 2 6 3 18
  • 19. Exemple : 8-queens Plateau de jeu 8 × 8 de type échecs Les règles du jeu pour la reine s’appliquent Les actions consistent à placer une reine sur une case libre Le but est de placer 8 reines sans qu’aucune soit en danger Q Q Q Q Q Q Q Q 19
  • 21. Mesure de performance Quatre critères pour évaluer les performances d’un algorithme Complétude : l’algorithme trouve-t-il toujours une solution ? Optimalité : la solution trouvée est-elle la meilleure ? Complexité temporelle : temps pour trouver la solution Complexité spatiale : mémoire pour trouver la solution Selon la situation, certains critères seront ignorés Parfois, l’algorithme boucle et ne termine donc jamais 21
  • 22. Recherche non informée Recherche non informée ou recherche aveugle Exploration complète de l’espace d’états Recherche basée uniquement sur la définition du problème Génération d’états avec la fonction successeur Test de si un état fait partie de l’objectif ou non Distinction entre algorithmes selon l’ordre d’exploration Peut conduire à atteindre plus ou moins vite une solution 22
  • 23. Breadth-First Search (1) Exploration successives des successeurs en largeur D’abord les successeurs d’un nœuds avant leurs successeurs... Exploration de l’arbre d’exécution par niveaux Algorithme complet, mais pas forcément optimal 1 2 5 12 13 6 3 7 8 9 4 10 11 23
  • 24. Breadth-First Search (2) Complexité temporelle de l’algorithme en O(bd+1) b facteur de branchement (nombre maximum de fils) d la profondeur d’une solution (de la moins profonde) b + b2 + b3 + ... + bd + (bd+1 − b) Même complexité spatiale Peut très vite être problématique pour les grosses instances Optimal lorsque tous les couts sont identiques Exploration du nœud non exploré le moins profond 24
  • 25. Uniform-Cost Search Exploration via l’action qui a le cout le plus faible Permet d’explorer d’abord le chemin de cout total minimal Complétude et optimalité assurées si c(q, a) > ε pour ε > 0 Nœuds parcourus en ordre croissant du cout du chemin associé Complexité temporelle et spatiale en O(b1+ C∗/ε ) Avec C∗ le cout optimal et ε > 0 (souvent plus grand que bd ) 25
  • 26. Depth-First Search (1) Exploration d’abord en profondeur D’abord explorer le nœud non exploré le plus profond Descente jusqu’à une feuille de l’arbre Pas complet (peut être coincé dans une boucle), ni optimal 1 2 5 7 8 6 3 4 26
  • 27. Depth-First Search (2) Complexité temporelle de l’algorithme en O(bm) b facteur de branchement (nombre maximum de fils) m la profondeur maximale dans l’arbre b + b2 + b3 + ... + bm Complexité spatiale de l’algorithme en O(bm + 1) La variante recherche backtracking ne nécessite que O(m) 27
  • 28. Depth-Limited Search Ajout d’une profondeur maximale d’exploration Pas complet si < d (solution hors de portée) Pas optimal si > d (peut rater la solution la moins profonde) Complexité temporelle en O(b ) et spatiale en O(b ) Cas particulier de Depth-First Search avec = ∞ Deux types d’échecs différents Failure lorsque pas de solutions Cutoff lorsque pas de solutions dans la limite 28
  • 29. Iterative Deepening Depth-First Search Augmentation progressive de la profondeur maximale Depth-Limited Search avec successivement = 0, = 1... Solution optimale trouvée lorsque = d Algorithme complet et optimal Complexité temporelle en O(bd ) et spatiale en O(bd) Algorithm 1: Iterative-Deepening-Search Function IDS(problem) for depth ← 0 to ∞ do result ← DLS(problem, depth) if result = cutoff then return result 29
  • 30. Bidirectional Search Effectuer deux recherches en parallèle Une depuis l’état initial et une depuis le(s) objectif(s) Nécessite que la fonction prédécesseur soit disponible Facile si les actions sont réversibles Solution trouvée lorsque les deux recherches se croisent 30
  • 31. Recherche informée Recherche informée utilise des connaissances spécifiques Beaucoup plus efficace que les recherches non informées Stratégie générale de type Best-First Search Choix du meilleur nœud à explorer à chaque étape Fonction d’évaluation f (n) Choix du nœud à explorer avec la plus faible valeur Fonction heuristique h(n) Cout estimé du chemin le moins cher vers l’objectif 31
  • 32. Greedy Best-First Search Choix du nœud le plus proche de l’objectif En utilisant f (n) = h(n) L’heuristique est choisie en fonction du problème Souvent une mesure de distance vers l’objectif Similaire à Depth-First Search (exploration d’un chemin) Pas complet et pas optimal Complexité temporelle en O(bm) et spatiale en O(bm) Réduit en fonction du problème et de la qualité de l’heuristique 32
  • 33. A∗ Search A∗ (prononcé « A-star ») combine deux fonctions g(n) donne le cout d’avoir atteint n h(n) heuristique du cout pour atteindre l’objectif depuis n Fonction d’évaluation f (n) = g(n) + h(n) Cout estimé pour atteindre l’objectif en passant par n Complet et optimal si h(n) est admissible h(n) ne surestime jamais le cout pour atteindre l’objectif 33
  • 34. Adversarial Search Recherche de solution pour des jeux avec deux adversaires Deux joueurs appelés MIN et MAX (joue en premier) Définition comme un problème de recherche État initial : position sur le plateau et joueur qui commence Fonction successeur : liste de paires (move, state) Test terminal : teste si le jeu est terminé (état terminaux) Fonction d’utilité : donne une valeur aux états terminaux Arbre du jeu défini par l’état initial et les mouvements légaux 34
  • 35. Stratégie optimale MAX veut atteindre un état gagnant (terminal) Tout en sachant que MIN a son mot à dire Proposition d’une stratégie pour MAX qui définit Le mouvement dans l’état initial Le mouvement suite à chaque mouvement possible de MIN ... Jouer le meilleur coup possible à chaque tour En supposant que le joueur en face suit une stratégie parfaite 35
  • 36. Caractéristiques des jeux (1) Jeu de somme nulle lorsque la somme des gains vaut 0 Le gain de l’un correspond obligatoirement à une perte de l’autre Jeu avec information parfaite pour les joueurs Toute l’information du plateau est accessible aux deux joueurs Pas de chance impliquée dans le jeu Valeur d’un état terminal Évaluation de la situation pour un joueur donné 36
  • 37. Caractéristiques des jeux (2) Déterministe Chance Information parfaite Échecs Dames Go Othello Backgammon Monopoly Information imparfaite Stratego Bridge Poker Scrabble Nuclear War 37
  • 38. Valeur minimax Fonction MinimaxValue associe une valeur à chaque nœud n Définition récursive de cette fonction Hypothèse que les deux joueurs jouent parfaitement MAX préfère aller vers une situation de plus grande valeur et MIN de plus petite valeur MinimaxValue(n) =    Utility(n) si n est un nœud terminal maxs∈Successors(n) MinimaxValue(s) si n est un nœud MAX mins∈Successors(n) MinimaxValue(s) si n est un nœud MIN 38
  • 39. Algorithme minimax Arbre du jeu avec pour MAX et pour MIN MAX choisit toujours le coup qui maximise la valeur minimax 5 6 2 1 4 7 2 39
  • 40. Algorithme minimax Arbre du jeu avec pour MAX et pour MIN MAX choisit toujours le coup qui maximise la valeur minimax 5 5 6 2 1 4 7 2 39
  • 41. Algorithme minimax Arbre du jeu avec pour MAX et pour MIN MAX choisit toujours le coup qui maximise la valeur minimax 5 5 6 1 2 1 4 2 7 2 39
  • 42. Algorithme minimax Arbre du jeu avec pour MAX et pour MIN MAX choisit toujours le coup qui maximise la valeur minimax 5 5 5 6 1 2 1 4 2 7 2 39
  • 43. Jeu des bâtonnets (1) À chaque tour, le joueur retire 1, 2 ou 3 bâtonnets Le joueur qui retire le dernier bâtonnet a perdu 40
  • 44. Jeu des bâtonnets (2) • • • • •−1 • • ••−1 • • •+1 ••−1 •−1 −1 +1 •+1 +1 −1 ••+1 •+1 +1 −1 •−1 −1 • • •−1 ••+1 •+1 +1 −1 •−1 −1 +1 ••−1 •−1 −1 +1 Le joueur MAX perd tout le temps ! 41
  • 45. Alpha-Beta pruning (1) Éviter d’explorer un sous-arbre lorsque ce n’est pas nécessaire On ne sait pas faire mieux que la valeur minimax actuelle Deux situations de simplification possibles α plus grande borne inférieure pour MAX β plus petite borne supérieure pour MIN Mémorisation des bornes durant l’exploration de l’arbre 42
  • 46. Alpha-Beta pruning (2) On peut raisonner sur la situation actuelle de l’exploration La racine sera ≥ 2 puisque c’est un MAX Le fils droit de la racine sera ≤ 1 car c’est un MIN ≥ 2 = 2 2 7 ≤ 1 1 ... ... ... Exemple animé : http://alphabeta.alekskamko.com/ 43
  • 47. Alpha-Beta pruning (2) On peut raisonner sur la situation actuelle de l’exploration La racine sera ≥ 2 puisque c’est un MAX Le fils droit de la racine sera ≤ 1 car c’est un MIN ≥ 2 = 2 2 7 ≤ 1 1 ... ... ... Exemple animé : http://alphabeta.alekskamko.com/ 43
  • 48. Alpha-Beta pruning (3) Mémorisation de deux bornes par nœud α(n) plus grande valeur trouvée actuellement (−∞ au départ) β(n) plus petite valeur trouvée actuellement (+∞ au départ) Deux situations de pruning Beta cutoff sur nœud MAX n si α(n) ≥ β(i) pour i ancêtre MIN de n Alpha cutoff sur nœud MIN n si β(n) ≤ α(i) pour i ancêtre MAX de n 44
  • 50. Simple AI (1) Librairie d’implémentation de plusieurs algorithmes d’IA Algorithmes de recherche Apprentissage automatique (machine learning) Librairie open-source disponible sur GitHub https://github.com/simpleai-team/simpleai 46
  • 51. Simple AI (2) Bugs avec la librairie lorsqu’on utilise Python 3 Utilisation d’un fork : https://github.com/combefis/simpleai Algorithme de recherche d’une librairie par Python Recherche dans le même dossier Recherche dans les dossiers de la variable PYTHONPATH Recherche dans le dossier système $ echo $PYTHONPATH $ export PYTHONPATH =/ Users/combefis/Documents/Projects/simpleai $ echo $PYTHONPATH /Users/combefis/Documents/Projects/simpleai 47
  • 52. Définition d’un problème (1) Création d’une nouvelle classe de type SearchProblem Représentation du problème de recherche Plusieurs méthodes à définir dans la classe actions définit les actions possibles dans un état result calcule le nouvel état suite à une action effectuée is_goal teste si un état correspond à l’objectif 48
  • 53. Définition d’un problème (2) Exemple d’un problème de recherche d’un mot Les états sont des mots, les actions sont le choix d’une lettre 1 from simpleai.search import SearchProblem 2 3 GOAL = ’HELLO ’ 4 5 class HelloProblem ( SearchProblem ): 6 def actions(self , state): 7 if len(state) < len(GOAL): 8 return list(’ ABCDEFGHIJKLMNOPQRSTUVWXYZ ’) 9 return [] 10 11 def result(self , state , action): 12 return state + action 13 14 def is_goal(self , state): 15 return state == GOAL 49
  • 54. Exécution de la recherche Création d’une instance du problème Instance de la nouvelle classe définie pour le problème Choix d’un algorithme de recherche et lancement de celle-ci breadth_first, depth_first, greedy... 1 from simpleai.search import breadth_first 2 3 problem = HelloProblem ( initial_state =’’) 4 result = breadth_first (problem) 5 print(result.state) # État atteint 6 print(result.path ()) # Chemin d’exécution pour atteindre l’objectif HELLO [(None , ’’), (’H’, ’H’), (’E’, ’HE ’), (’L’, ’HEL ’), (’L’, ’HELL ’) , (’O’, ’HELLO ’)] 50
  • 55. Heuristique (1) Évaluation de la distance avec l’objectif à atteindre On compte le nombre de lettres différentes et manquantes Ajout d’une méthode heuristic dans la classe du problème Va diriger le choix des actions vers la solution 1 from simpleai.search import SearchProblem 2 3 GOAL = ’HELLO ’ 4 5 class HelloProblem ( SearchProblem ): 6 # ... 7 def heuristic(self , state): 8 wrong = sum ([1 if state[i] != GOAL[i] else 0 for i in range (len(state))]) 9 missing = len(GOAL) - len(state) 10 return wrong + missing 51
  • 56. Heuristique (2) À chaque état, c’est la meilleure lettre qui est choisie Et au vu de l’heuristique, c’est à chaque fois la bonne Importance du choix de l’heuristique Mesure du temps d’exécution pour résoudre le problème MacBookPro 2.9 GHz Intel Core i7, 8 Go 1600 MHz DDR3 Breadth-First Search Greedy Best-First Search 96.65512 s 0.00274 s 52
  • 57. easyAI Framework d’IA pour des jeux à deux joueurs Negamax avec alpha-beta pruning et table de transposition Framework open-source disponible sur GitHub https://github.com/Zulko/easyAI 53
  • 58. Définition d’un problème (1) 1 from easyAI import TwoPlayersGame , Human_Player , AI_Player , Negamax 2 3 class SimpleNim( TwoPlayersGame ): 4 def __init__(self , players): 5 self.players = players 6 self.nplayer = 1 7 self.__sticks = 5 8 9 def possible_moves (self): 10 return [str(v) for v in (1, 2, 3) if v <= self.__sticks] 11 12 def make_move(self ,move): 13 self.__sticks -= int(move) 14 15 def win(self): 16 return self.__sticks <= 0 17 18 def is_over(self): 19 return self.win() 20 21 def show(self): 22 print(’{} sticks left in the pile ’.format(self.__sticks)) 23 24 def scoring(self): 25 return 1 if self.win() else 0 54
  • 59. Définition d’un problème (2) 1 ai = Negamax (13) 2 game = SimpleNim ([ Human_Player (), AI_Player(ai)]) 3 history = game.play () 5 sticks left in the pile Player 1 what do you play ? 3 Move #1: player 1 plays 3 : 2 sticks left in the pile Move #2: player 2 plays 1 : 1 sticks left in the pile Player 1 what do you play ? 1 Move #3: player 1 plays 1 : 0 sticks left in the pile 55
  • 61. Crédits Photos des livres depuis Amazon https://www.flickr.com/photos/gsfc/6800387182 https://openclipart.org/detail/168755/cartoon-robot https://www.flickr.com/photos/grahamvphoto/17479235311 https://www.flickr.com/photos/eilonwy77/9185293834 57