Ch’ti Jug: Drools v5 et Drools Planner
Jeudi 21 janvier s’est tenu dans les locaux de l’Université de Lille 1 une session du Ch’ti Jug sponsorisée par Cylande sur Drools: Drools, avec Cylande et l’Université Lille 1
Pour ceux qui ne savent pas ce qu’est le Ch’ti Jug ou ce qu’est un Jug, voir l’introduction de mon article sur la première session à laquelle j’ai participé: Ch’ti Jug: les technologies Google
Cette session été animée par Mark Proctor, Project Leader de Drools et Geoffrey De Smet créateur de Drools Planner.
Le première partie nous as donc parlé de Drools version 5, en commençant par une explication de ce qu’est un moteur de règle et des spécificité de Drools. La conférence été d’un niveau technique très élevé, je ne vais pas ici tout vous rapporter. Si vous désirez savoir ce qu’est un moteur de règle et comment marche Drools je vous conseil de lire l’excellent article du blog de Xebia: Drools et les moteurs de règles
Pour ne pas parait trop paresseux, je vais quand même vous donner, pêle-mêle, quelques informations glané lors de la conférences:
- Intégration avec Hibernate: on peut accéder directement à la session depuis un pattern via $hbm, par exemple $hbm.getNamesQuery(“myQuery”);
- Timers: permet de mettre des contraintes de temps sur une règle. Utilisation d’expression de type crontab possible.
- Calendars: permet d’exécuter une règles à une date données uniquement.
- logicalInsert: permet d’enlever automatiquement un objet quand la règle devient fausse. Par exemple, une règle ajoute un permis de novice quand on a moins de deux ans de permis, le permis de novice est ajouté avec un logicalInsert, dès qu’on a plus de deux ans de permis, le permis de novice est automatiquement enlevé.
- CEP: Complex Event Processing: système d’évènement proche de CEP avec la possibilité de gérer des évènement changeant dans le temps.
- DSL: possibilité de définir son propre langage (DSL: Domain Specific Language)
- self-monitoring, adaptive, capacité de debug, …
La deuxième partie de la conférence été dédiée à Drools Planner: un outils de planification basé sur le moteur de règle Drools. L’intervenant a commencé par nous expliquer ce qu’est la planification en partant d’exemple simple (faire rentrer 5 cartons de tailles différentes dans un box) en arrivant à l’exemple type: faire la planification de session d’examen.
Pourquoi un logiciel de planification? Calculons tout d’abord le nombre de possibilité qu’il existe pour la planification de 80 examen dans 40 salles avec 1000 élève on en arrive à … 1000 exp (80 * 40), ce qui donne plus de possibilité que le nombre d’atomes de l’univers … et il faudrait à un super calculateur plusieurs milliers d’années pour arriver à tous les tester! Pour résoudre ce type de problématique la solution naïve de tester toutes les combinaisons possible (aussi appeler brute force) n’est donc pas possible. Arrive alors les algorithme qui permettent de trouver une solution “acceptable” qui ne sera bien sur pas la meilleur (qui ne peut être trouvée que en testant toutes les combinaison) mais une solution quand même! Dans ces problème, une solution n’est même pas assuré!
Tout d’abord, on doit définir les contraintes que l’on sépare en deux catégories:
- Les contraintes dure (hard): que l’on ne peut enfreindre
- les contrainte légère (soft): que l’on peut enfreindre
Puis on pondère les contrainte. L’algorithme essayera ensuite de trouver une solution avec le score le moins élevé … donc qui viole le moins de contraintes possible (et si possible aucune contrainte dure).
Pour cela, Drools Planner utilise un ensemble d’algorithme déterministique (pour baisser le nombre de solution à tester) puis heuristique (pour trouver la meilleur … ou la moins pire) basé sur l’algorithme de RETE. Le résultat est une planification qui n’est pas parfaite mais qui est optimisé à un point qu’un humain aurais été incapable de faire (même si l’algorithme du “bon sens” n’existant pas, l’être humain peut parfois simplement optimiser encore le résultat obtenu …) . Pour éviter de dire trop de bétise (j’espère ne pas avoir fait d’erreur jusqu’ici), je ne vais pas m’étaler plus.
Pour conclure: une conférence de très haut niveau technique et très intéressant.
2 thoughts on “Ch’ti Jug: Drools v5 et Drools Planner”
Merci pour cet article plutôt sympa, mais attention aux fautes ! Ça gâche un peu la qualité de l’article.
Ahhh, les fautes d’orthographe! J’en fait depuis que j’ai écrit mes premiers mots et je n’y peut rien. Donc mon choix est de ne pas écrire ou d’écrire et d’en faire. J’ai choisit le deuxième choix (que je trouve plus courageux) mais je suis d’accord avec vous quand même …