3 t drools

29
2012-07-02 Soat: Drools Expert 1

Upload: jeansoat

Post on 05-Jul-2015

516 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3 t drools

2012-07-02 Soat: Drools Expert 1

Page 2: 3 t drools

2012-07-02 Soat: Drools Expert 2

Page 3: 3 t drools

De quoi allons nous parler?

⦿Quand le moteur de règles vous sauve ?

⦿ Et quand il ne vous sauvera pas…

⦿Comment écrire un moteur?

⦿Comment écrire des règles?

⦿Au delà des règles standards?

2012-07-02 Soat: Drools Expert 3

Page 4: 3 t drools

IA: symboliste VS connexioniste

⦿Symboliste:

⦿ Raisonnement logique

⦿ Apogée: systèmes expert

⦿ Nuance: la logique floue

⦿Connexioniste:

⦿ Emergence

⦿ Réseaux de neurones

2012-07-02 Soat: Drools Expert 4

Page 5: 3 t drools

JBoss Drools

⦿Drools Expert: le moteur

⦿Drools Guvnor: le BRMS

⦿Drools jBPM: ordonnancer les packages

⦿Drools Fusion: gestion des événements

⦿Drools Planner: planifier (NP Complet donc heuristique)

2012-07-02 Soat: Drools Expert 5

Page 6: 3 t drools

JBoss Drools

2012-07-02 Soat: Drools Expert 6

Page 7: 3 t drools

JBoss Drools

2012-07-02 Soat: Drools Expert 7

Page 8: 3 t drools

Quand s’en servir?

⦿Le rêve du BA autonome:⦿ Change oriented Application

⦿ IT pour le socle, BA pour les règles

⦿Adapté aux gros volumes:⦿ Algorithme de RETE

⦿ Peu de modifications de faits

⦿Exemple: AAPT⦿ Développé par Sungard

⦿ Validation Back office

2012-07-02 Soat: Drools Expert 8

Page 9: 3 t drools

Quand ne pas s’en servir?

⦿Peu de faits peu de règles

⦿Quand chaque octet compte

⦿Quand les faits changent

⦿Quand les règles interagissent les unes avec les autres (working memory)

⦿Quand les seuils sont stratégiques

⦿NE PAS utiliser les DSL

⦿NE PAS utiliser la version .Net

2012-07-02 Soat: Drools Expert 9

Page 10: 3 t drools

Présentation de l’application

2012-07-02 Soat: Drools Expert 10

Page 11: 3 t drools

Avengers: des gens bien

⦿Données de référentiel:⦿ Valider les informations

⦿ Ajouter une erreur fonctionnelle

⦿Une initiative éthique:⦿ Prendre la moyenne M des salaires

⦿ Pour chaque personne P⦿Si le salaire est inférieur à 0,5M

⦿Si le salaire est supérieur à 2M

⦿Ajouter une erreur fonctionnelle

2012-07-02 Soat: Drools Expert 11

Page 12: 3 t drools

Première étape: Ecrire le moteur

2012-07-02 Soat: Drools Expert 12

Page 13: 3 t drools

Première étape: Ecrire le moteur

⦿KnowledgeBuilder:

⦿ Ajouter les règles

⦿ Vérifier la compilation

⦿KnowledgeBase:

⦿ Définir les packages à exécuter

⦿Les sessions:

⦿ Stateless: un seul déclenchement

⦿ Statefull: les faits restent en mémoire

2012-07-02 Soat: Drools Expert 13

Page 14: 3 t drools

Deuxième étape: coder les règles

⦿ Import⦿ Déclarations et global⦿ LHS:

⦿ Ne pas penser en terme de boucles⦿ $var : Class( conditions, $var: attribute)

⦿ RHS:⦿ Java⦿ Accès à la working memory

⦿ Fonctions⦿ Utilisation de function

2012-07-02 Soat: Drools Expert 14

Page 15: 3 t drools

Sélection des éléments

⦿Moyens:

⦿ Class (conditions)

⦿ Eval et fonctions externes

⦿Autres utilisations:

⦿ Calcul de moyenne

⦿ Construction d’ensembles

⦿ Vérifier qu’une règle n’a pas été exécutée

2012-07-02 Soat: Drools Expert 15

Page 16: 3 t drools

Interfaces avec les règles

⦿Utilisation de global:

⦿ Objets déclarés dans la knowledge base

⦿ Récupérables après exécution

⦿Passer des faits en paramètres:

⦿Déclarer des structures:

⦿ POJO utilisables

⦿ Manipulables avec FactType

2012-07-02 Soat: Drools Expert 16

Page 17: 3 t drools

Utilisation de la working memory

⦿Mémoire partagée:

⦿ Chaque règle peut l’utiliser

⦿ On utilise un FactHandler, pas un objet

⦿Arbre de RETE:

⦿ Alpha node. Ex: getName().equals(« Stark »)

⦿ Beta node: a.getName().equals(b.getName())

⦿ Global node: not exists

⦿ Reconstruit à chaque modification de la WM

2012-07-02 Soat: Drools Expert 17

Page 18: 3 t drools

From

⦿From accumulate: le couteau suisse

⦿ Conditions sur une seule classe

⦿ Initialisations

⦿ Boucle for

⦿ Retract

⦿ Result

⦿Autres from

⦿ From collect, from

2012-07-02 Soat: Drools Expert 18

Page 19: 3 t drools

Les pièges à considérer

⦿Boucler:

⦿ Ajouter un fait en WM

⦿ Risque de boucle au delete

⦿Coder deux règles (si alors sinon)

⦿ Prendre l’ensemble des faits qui matchent

⦿ Dans le then, séparer les cas

⦿Attention: des surprises avec l’Agenda

⦿ Utiliser la salience

2012-07-02 Soat: Drools Expert 19

Page 20: 3 t drools

A suivre… L’arbre de Rete

2012-07-02 Soat: Drools Expert 20

Page 21: 3 t drools

Les types de noeuds

⦿ Les nœuds alpha⦿ Sélection de faits individuels⦿ Object Type Node: Choisir sa classe⦿ Hiérarchie de classes par condition

⦿ Les nœuds Beta:⦿ Nœuds de jointure⦿ Exemple: Person(name == p.name)

⦿ Memory Node:⦿ Alpha: référence vers les faits qui matchent⦿ Beta: référence vers les tuples qui matchent

2012-07-02 Soat: Drools Expert 21

Page 22: 3 t drools

RETE: le graphe des noeuds

2012-07-02 Soat: Drools Expert 22

Page 23: 3 t drools

Attendez, si vous êtes encore réveillés, il reste la logique floue

2012-07-02 Soat: Drools Expert 23

Page 24: 3 t drools

D’autres façons de penser

2012-07-02 Soat: Drools expert 24

Page 25: 3 t drools

Utilisation de la logique floue

⦿Exemple: Validation d’un référentiel BO⦿ Evolution du forex EUR/USD

⦿ Règle: ramené sur 5j, évolution < 1,0%

⦿ Quelle différence entre 0,99 et 1,01?

⦿Exemple: stratégie momentum⦿ Vendre les titres qui ont un faible rendement

depuis longtemps

⦿ Acheter les titres ayant un rendement élevédepuis peu de temps

2012-07-02 Soat: Drools Expert 25

Page 26: 3 t drools

Les contrôleurs flous

2012-07-02 Soat: Drools Expert 26

⦿ Source: Franck Dernoncourt (developpez.com)

Page 27: 3 t drools

Fuzzification: la partie difficile

⦿Trouver les fonctions de fuzzyfication idoines

⦿Solutions:

⦿ Ranking, modèles

⦿ Apprentissage (réseaux de neurones)

⦿Exemple:

2012-07-02 Soat: Drools Expert 27

Page 28: 3 t drools

Raisonner en logique floue

2012-07-02Soat: Drools Expert. Source: Franck

Dernoncourt, developpez.com28

Page 29: 3 t drools

Merci

2012-07-02 Soat: Drools Expert 29