Colonies d abeilles et SAT parallèle

Dimension: px
Commencer à balayer dès la page:

Download "Colonies d abeilles et SAT parallèle"

Transcription

1 Colonies d abeilles et SAT parallèle MÉMOIRE présenté le 3 juillet 2014 pour l obtention du Master Deuxième Année de l Université d Artois Spécialité Informatique par Nicolas SZCZEPANSKI Encadrants : Gilles Audemard Professeur à l Université d Artois Jean-Marie Lagniez Chercheur Post-Doctorant au CRIL Laurent Simon Professeur à l Université de Bordeaux Sébastien Tabary Maître de conférence à l Université d Artois CENTRE DE RECHERCHE EN INFORMATIQUE DE LENS CNRS UMR 8188 Université d Artois, rue Jean Souvraz, S.P. 18 F-62307, Lens Cedex France Secrétariat : Tél.: +33 (0) Fax : +33 (0)

2 Mise en page avec memcril (B. Mazure, CRIL) et thloria (D. Roegel, LORIA).

3 Table des matières Table des figures Liste des Algorithmes iv vi Remerciements 2 Introduction générale État de l art Chapitre 1 Le probleme SAT La logique propositionnelle Syntaxe de la logique propositionnelle Syntaxe Formules bien formées Sémantique de la logique propositionnelle Sémantique Définitions et théorèmes Formes normales Le problème SAT i

4 Table des matières Chapitre 2 SAT en parallèle Modèles parallèles Préliminaires Modèles d exécution Modèles de programmation Résoudre SAT en parallèle Le modèle concurrentiel Les solveurs concurrentiels Le solveur PENELOPE Le modèle collaboratif Le chemin de guidage Le chemin de guidage : le rééquilibrage des charges Les solveurs de type chemin de guidage Cube And Conquer Algorithme L heuristique de coupure L heuristique de choix de variables La résolution des cubes Conclusion Chapitre 3 Les problèmes de bandits Le problème de bandits classique Multi-armed bandit La stratégie d allocation et regret La stratégie UCB Définition et exemple Exemple d application L algorithme UCT Squelette de l algorithme Explication Conclusion Contribution ii

5 Chapitre 4 Une méta-heuristique des colonies d abeilles butineuses pour SAT Une méta-heuristique massivement parallélisable Le choix du comportement à adopter La communication Hiérarchie Déroulement de l algorithme mémétique Conclusion Chapitre 5 Une adaptation d UCT pour SAT : l algorithme SCOUT Le choix d UCT pour générer des cubes Description de l algorithme SCOUT La descente La descente : Les valeurs UCB La descente : la création de nouveaux fils La descente : les conflits et littéraux déjà affectés La sélection La simulation La remontée La récupération des cubes Conclusion Chapitre 6 Résultats Le programme Expérience sur les variables des cubes Expérimentation Conclusion Conclusion 60 Bibliographie 62 iii

6 Table des figures 1.1 Connecteurs logiques usuels de la logique propositionnelle Schémas de processeurs Parallélisme concurrentiel Diagramme des clauses apprises dans PENELOPE Parallélisme «diviser pour régner» Chemin de guidage rééquilibrage des charges : état initial, F etg travaillent rééquilibrage des charges : F a terminé son sous-arbre,g travaille rééquilibrage des charges : F informe le maître,g travaille rééquilibrage des charges : F récupère un chemin de guidage depuis le maître rééquilibrage des charges : le maître n a plus de chemin à fournir, il stoppeg rééquilibrage des charges : G envoie son chemin de guidage rééquilibrage des charges : les chemins de guidage sont rééquilibrés Cube And Conquer Des bandits manchots Étape de l algorithme UCT Hiérarchie des tâches de chaque solveur SAT inspirée des colonies d abeilles butineuses Déroulement de l algorithme mémétique Structure des nœuds dans notre algorithme SCOUT La descente dans notre algorithme SCOUT Calcul des valeurs UCB dans SCOUT Conflit ou littéral déjà affecté à une valeur opposée lors de la descente dans notre algorithme SCOUT Littéral déjà affecté lors de la descente dans notre algorithme SCOUT La sélection dans notre algorithme SCOUT La remontée dans notre algorithme SCOUT Affinage de l arbre de SCOUT par un algorithme de colonie d abeilles Fichier.cubes Nombre de variables dans les cubes (partie 1) Nombre de variables dans les cubes (partie 2) Nombre de variables dans les cubes (partie 3) : UTI-20-5p1 : clauses et variables Information sur la création des cubes iv

7 6.6 Résultat : Informations sur tous les cubes Information sur les cubes uniquement satisfiables Informations sur le meilleur cube satisfiable uniquement Numéro des cubes satisfiables des instances en possédant v

8 Liste des Algorithmes 1 CC UCT descenteselectionuct(r) remontéeuct(p,r) descentescoutv1(r) descentescoutv2(r) récupcube(r) vi

9 LISTE DES ALGORITHMES 1

10 Remerciements En premier lieu, je tiens à remercier Eric Grégoire de m avoir permis d effectuer ce stage au sein du CRIL. Je remercie aussi mes encadrants Gilles Audemard, Jean-Marie Lagniez, Laurent Simon et Sébastien Tabary pour leurs nombreuses relectures ainsi que leurs précieux conseilles. Je tiens également à remercier mes camarades de promotion pour leur sympathie et pour leur convivialité. Ma famille et plus particulièrement, Élodie, pour ces nombreuses corrections. 2

11 Introduction générale LE PROBLÈME DE SATISFAISABILITÉ BOOLÉENNE, abrégé par SAT, est un problème de décision visant à savoir s il existe un assignement qui satisfait une formule de la logique propositionnelle, ou qui détermine qu un tel assignement n existe pas. Nous classons respectivement ces formules comme satifiables ou insatifiables. SAT est un problème théoriquement important car il a été le premier problème à être prouvé NP-Complet [Coo71]. Malgré une complexité théorique difficile, les solveurs SAT modernes sont devenus étonnamment efficaces et permettent de résoudre de nombreux problèmes venant d applications industrielles (planification, vérification formelle, bio-informatique, etc.). Deux raisons essentielles peuvent justifier cette performance. La première est algorithmique et, est due à l envol des solveurs SAT modernes de type CDCL (apprentissage, VSIDS, watched literal,...). Tandis que la seconde est technologique et, est intrinsèquement liée à un doublement des fréquences de fonctionnement des microprocesseurs qui a lieu tous les dix-huit mois (ce phénomène est nommé la loi de Moore). Ainsi, jusqu à 2005, les solveurs SAT modernes pouvaient profiter de ce gain technologique afin de résoudre des problèmes de plus en plus difficiles. Cependant, à l heure actuelle, à cause de l échauffement important des microprocesseurs à des fréquences avoisinant les 4 GHz, il n a plus été envisageable d accroître les performances des solveurs de cette manière. En effet, les constructeurs ont donc décidé d opter pour une multiplication des unités de calcul afin de toujours doubler la puissance des ordinateurs. De ce fait, le problème SAT doit être repensé par les développeurs de manière à s adapter à un modèle de programmation parallèle. Le problème SAT a longtemps été pensé et codé sur un modèle séquentiel. Une adaptation conséquente est donc nécessaire afin de pouvoir bénéficier du parallélisme. A ce jour, deux méthodes permettent la résolution d un problème SAT en parallèle : une méthode collaborative et une autre concurrentielle exposées au chapitre 2. Ces méthodes peuvent rencontrer deux problèmes technologiques freinant le calcul. Le premier, appelé le goulot d étranglement de Von Neumann, est une surcharge du bus entre les processeurs et la mémoire. Le deuxième est un coût de communication dans les algorithmes parallèles pouvant être trop important. Les tentatives de parallélisation pour SAT ont en majeure partie échouées. En effet, les approches parallèles actuelles limitent au maximum le partage des informations et n arrivent pas à suivre entièrement la loi de Moore comme il était possible dans le passé. De plus, les méthodes ne passent pas à l échelle : le fait d augmenter le nombre de cœurs dégrade les performances [ABK13]. Actuellement, un des meilleurs solveur parallèle est un simple outil lançant en concurrence les meilleurs solveurs de l état de l art [Rou12]. Dans un but massivement parallèle, nous nous inspirons du comportement de la nature (essaim d abeilles, colonie de fourmis, génétique,...) afin de définir un nouveau schéma de parallélisation. En effet, dans la nature, nous retrouvons beaucoup de situations où des tâches doivent être réalisées en collaboration. Par exemple, la coopération des fourmis via des phéromones leur permet de pouvoir faire des tâches complexes comme la recherche de nourriture à plusieurs endroits distincts (tâche qui ne pourrait pas être réalisée pas une seule fourmi). Ainsi, ces fourmis sont capables d obtenir rapidement une bonne 3

12 Introduction générale solution sur le problème du voyageur de commerce [DG97]. Ces algorithmes, nommés algorithmes mémétiques, font partie des d algorithmes d optimisations (algorithme de colonie de fourmis, algorithme d essaim d abeilles,...). Grâce à une adaptation face au problème concerné, ces algorithmes proposent une série de concepts pouvant être exploités afin de définir des algorithmes massivement parallèles. Dans ce manuscrit, nous proposons d utiliser les algorithmes de colonies d abeilles pour résoudre SAT sur une architecture massivement parallèle. Tout d abord, après une présentation de la logique propositionnelle, nous exposons le problème SAT accompagné d un exemple (chapitre 1). Puis, nous expliquons les notions de la parallélisation pour exposer un état de l art des solveurs SAT parallèles. Nous distinguons alors les deux méthodes générales pour paralléliser le problème SAT : le modèle concurrentiel et modèle collaboratif (chapitre 2). Nous abordons ensuite des notions qui sont essentielles dans nos travaux : le dilemme exploitation/exploration ainsi que l algorithme UCB (chapitre 3). Nos contributions commencent par une subtile adaptation de l algorithme des colonies d abeilles butineuses pour une parallélisation massive du problème SAT. Ce modèle nécessite la mise en place de nombreux concepts tournant autour de l organisation des abeilles butineuses. En effet, dans leur recherche de nectar, les abeilles ont chacune leurs propres rôles à exécuter (abeilles scouts, abeilles butineuses, abeilles recrues). De plus, ces abeilles sont de deux types différents : celles sans mémoire et celles en possédant (abeilles expérimentées). Les fonctionnalités nombreuses des abeilles butineuses mettent donc en jeu autant de méta-heuristiques à adapter dans notre contexte. Ce modèle est exposé dans le chapitre 4, il définit chaque rôle distinct des abeilles, et chaque liaison entres elles dans le cadre d une parallélisation massive du problème SAT. Dû aux multiples tâches que représentent ce modèle, nous nous sommes dans un premier temps concentré sur la création d une abeille de type scout. Les abeilles scouts ont pour fonction d explorer les alentours afin de trouver des fleurs possédant un maximum de nectars. Dans le contexte de SAT, nous avons défini qu il s agit d avoir une méthode générant des cubes. Nous entendons par un cube, une interprétation partielle en SAT : une conjonction de littéraux. Sachant que, par la suite, d autres abeilles butineuses pourront toujours affiner ces cubes via notre modèle de colonie d abeilles. Notre deuxième contribution exposée dans le chapitre 5 a donc pour objectif de créer un ensemble de cubes : nous avons nommé cette méthode SCOUT. De plus, nous souhaitons ordonner les cubes du meilleur au moins bon. Néanmoins, estimer la qualité d une interprétation partielle est aussi difficile que de résoudre l instance initiale. À l intérieur du chapitre 2, nous avons choisi de décrire en détail la méthode Cube And Conquer (CC) [HKWB12] pour une bonne raison. Il se trouve que celle-ci possède un point commun avec nos travaux : elle effectue aussi une division en millions de cubes. De plus, dans l optique de choisir les meilleurs cubes dans un arbre de recherche, nous avons été confrontés au dilemme exploitation/exploration : fautil exploiter un cube déjà considéré comme bon en lui rajoutant des littéraux ou retenter notre chance avec un nouveau cube. Récemment, la naissance d un algorithme pour les jeux à deux joueurs nommé UCT traite ce problème : exploiter un état de la partie qui semble être bon, ou explorer d autres états moins bons. Nous avons donc adapté l algorithme UCT afin de générer des cubes dans notre méthode SCOUT. Avant de conclure, nous exposons les résultats apportés par quelques expérimentations afin d étudier la qualité des cubes générés par notre méthode SCOUT. La méthode SCOUT n est qu une première brique utilisée dans notre modèle de colonie d abeilles pour SAT dans un but massivement parallèle. Une thèse suivant ces travaux aura pour acquis le travail fourni pendant ce stage. 4

13 État de l art 5

14 Chapitre 1 Le probleme SAT La logique propositionnelle Sommaire 1.1 Syntaxe de la logique propositionnelle Syntaxe Formules bien formées Sémantique de la logique propositionnelle Sémantique Définitions et théorèmes Formes normales Le problème SAT CE CHAPITRE a pour objectif de présenter brièvement le problème SAT pour boolean SATisfiability problem d une formule propositionnelle. Nous rappelons tout d abord la syntaxe puis la sémantique de la logique propositionnelle. Après quelques définitions et propriétés sur cette logique, nous exposerons ce qu est le problème SAT en l accompagnant d un exemple. Ce chapitre, représentant des notions de base connues dans la littérature, est destiné aux lecteurs ne connaissant pas le problème SAT. 1.1 Syntaxe de la logique propositionnelle Syntaxe Définition (Vocabulaire de la logique propositionnelle). La base de la syntaxe du calcul des propositions sont les variables propositionnelles ou propositions atomiques, notées p, q, x,... qui constituent généralement un ensemble infini dénombrable. Cette syntaxe contient aussi des symboles de ponctuation qui sont souvent notées "(", ")", "[" et "]". De plus, les deux constantes propositionnelles et représentent respectivement le "faux" et le "vrai". Pour finir, elle est constituée de l ensemble des connecteurs logiques usuels, présentés dans la figure

15 1.2. Sémantique de la logique propositionnelle Nom Négation Conjonction Disjonction Implication Equivalence Ou exclusif Arité Unaire Binaire Binaire Binaire Binaire Binaire Symbole FIGURE 1.1 Connecteurs logiques usuels de la logique propositionnelle Formules bien formées La syntaxe permet de distinguer les formules bien formées parmi les assemblages quelconques de symboles. Définition (Formules de la logique propositionnelle). Les phrases du langage de la logique propositionnelle sont obtenues récursivement à partir des propositions et d un ensemble de règles syntaxiques. Ces phrases sont appelées formules : Toute propositionxest une formule (règle de base) ; SiF etg sont des formules, alors F, (F G), (F G), (F G), (F G) et (F G) sont des formules (règle d induction) ; Une formule s obtient uniquement à partir des règles de base et d induction (règle de fermeture). 1.2 Sémantique de la logique propositionnelle Sémantique La sémantique de la logique propositionnelle est compositionnelle : c est-à-dire que la signification d une formule sera en fonction de celle de ses constituants. La valeur de vérité d une formule dépendra uniquement de sa composition. Définition (Sémantique de la logique propositionnelle). Chaque variable propositionnelle (x 1,x 2,...,x n ) est interprétée comme vraie ou fausse ; sif est une formule, alors F est vraie si et seulement sif est fausse ; sif etg sont des formules, alors : (F G) est vraie si et seulement sif etg sont vraies ; (F G) est vraie si et seulement sif oug est vraie ; (F G) est vraie si et seulement sif est fausse oug est vraie ; (F G) est vraie si et seulement sif etg sont soit toutes deux vraies, soit toutes deux fausses ; (F G) est vraie si et seulement si seul F ou seulg est vraie (pas les deux en même temps) Définitions et théorèmes Définition (Interprétation). Une interprétation est une fonction qui associe à toute variable propositionnelle une valeur de vérité. Cette fonction, dont le domaine est l ensemble des propositions, est prolongée à l ensemble des formules au moyen des règles de la sémantique. Le prolongement correspondant est encore appelé interprétation. 7

16 Chapitre 1. Le probleme SAT La logique propositionnelle Définition (Modèle). Un modèle d une formule est une interprétation de cette formule qui la vérifie, c est-à-dire, qui lui associe la valeur vraie. Définition (Falsifie). Par opposition, on dit qu une interprétation falsifie une formule lorsqu elle lui associe la valeur faux. Définition (Satisfiable, Insatisfiable). On dit qu une formule est satisfiable ou consistante si et seulement si il existe au moins un modèle qui la vérifie, sinon elle est insatisfiable. Définition (Conséquence logique). Si tout modèle d une formulef est modèle d une formuleg alors G est une conséquence logique de F, notéf = G. Définition (Logiquement équivalentes). Les formules F et Gsont logiquement équivalentes, si F = G etg = F, noté F G. Définition (Formule valide, Tautologie). Lorsque la formule F est vérifiée par toutes ses interprétations, F est une tautologie. On dit aussi que F est valide et on notera cette assertion F. Définition (Théorème de la déduction). Soit F et G deux formules propositionnelles, on a F = G si et seulement si F G est une formule insatisfiable. Exemple. Voici quelques tautologie de la logique propositionnelle : Nom Expressions Définition de F G F G Définition de (F G) ((F G) (G F)) (( F G) ( G F)) Modus ponens ((F G) F) G Modus tollens ((F G) G) F Contraposition (F G) ( G F) 1.3 Formes normales Définition (Littéral, Clause, Terme). Un littéral est une variable propositionnelle ou bien sa négation : x et x sont des littéraux ; Une clause est une disjonction de littéraux : une formule de la forme (x 1 x 2... x n ) où chaque x n représente un littéral ; Un terme (ou cube) est une conjonction de littéraux : une formule de la forme (x 1 x 2... x n ) où chaque x n représente un littéral. Définition (NNF, DNF, CNF). Nous distinguons trois formes normales particulières : Une formule propositionnelle est dite sous forme normale négative (NNF pour Negative Normal Form) si elle est exclusivement constituée de conjonctions, de disjonctions et de littéraux ; Une formule propositionnelle est dite sous forme normale disjonctive (DNF pour Disjonctive Normal Form) si c est une disjonction de termes ; Une formule propositionnelle est dite sous forme normale conjonctive (CNF pour Conjonctive Normal Form) si c est une conjonction de clauses. 8

17 1.4. Le problème SAT Pour toute formule de la logique propositionnelle, il existe une formule équivalente sous forme normale. 1.4 Le problème SAT Définition (Le problème SAT). Le problème SAT est le problème de décision qui consiste à savoir si une formule sous forme normale conjonctive possède ou pas un modèle (si elle est satisfiable). Le problème SAT occupe un rôle très important en théorie de la complexité puisqu il représente le problème NP-Complet de référence [Coo71]. C est donc un problème théoriquement difficile pour un ordinateur, mais il possède des méthodes de résolution très efficaces en pratique. On peut citer les solveurs SAT modernes de type CDCL qui sont une grande avancée dans l histoire de ces solveurs. De nombreux problèmes s y rapportent naturellement ou le contiennent. Grâce à la performance des solveurs SAT moderne, certains problèmes préfèrent être traduits en SAT (CNF) afin de bénéficier d une efficacité plus accrue comparée à leurs propres méthodes de résolutions. Le problème SAT contient de nombreuses applications en planification classique (ordonnancement de tâches, robot sur mars,...), vérification (model checking,...), diagnostic (d erreurs dans les circuits électroniques,...), bio-informatique, CSP, etc. À présent, nous allons exposer un petit exemple de traduction d un problème CSP en SAT. Exemple. Soit un petit problème ne contenant que deux variables x et y, avec une seule contrainte : x+y = 3. Ces deux variables ont respectivement les domaines suivants : {1,2,3} et {0,1,4}. Le problème consiste à savoir comment attribuer les variables sur leurs domaines respectifs tout en respectant la contrainte. Sachant qu il existe des méthodes de résolutions propres à CSP, nous choisissons de l encoder en CNF afin de comprendre le mécanisme de SAT. Il existe plusieurs encodages possibles, nous choisissons l encodage direct. Tout d abord, nous encodons les variables et leurs domaines en clauses, pour cela, nous aurons de nouvelles variables propositionnelles : x i et y i correspond respectivement à x = i et y = i. x 1 x 2 x 3 représente le domaine dex ; x 1 x 2 la variablexne peut pas prendre pour valeur en même temps 1 et 2 ; x 1 x 3 la variablexne peut pas prendre pour valeur en même temps 1 et 3 ; x 2 x 3 la variablexne peut pas prendre pour valeur en même temps 2 et 3 ; y 0 y 1 y 4 représente le domaine dey ; y 0 y 1 la variabley ne peut pas prendre pour valeur en même temps 0 et 1 ; y 0 y 4 la variabley ne peut pas prendre pour valeur en même temps 0 et 4 ; y 1 y 4 la variabley ne peut pas prendre pour valeur en même temps 1 et 4. Puis nous codons les couples de valeursxety impossibles à cause de la contrainte : x 1 y 0, x 1 y 1, x 1 y 4, x 2 y 0, x 2 y 4, x 3 y 1, x 3 y 4. Toutes ces clauses forment une CNF. Un solveur SAT peut donc trouver un modèle comme : x 2 =, y 1 = et le reste des variables propositionnelles à faux. La solution associée en CSP est x = 2 et y = 1. 9

18 Chapitre 2 SAT en parallèle Sommaire 2.1 Modèles parallèles Préliminaires Modèles d exécution Modèles de programmation Résoudre SAT en parallèle Le modèle concurrentiel Les solveurs concurrentiels Le solveur PENELOPE Le modèle collaboratif Le chemin de guidage Le chemin de guidage : le rééquilibrage des charges Les solveurs de type chemin de guidage Cube And Conquer Algorithme L heuristique de coupure L heuristique de choix de variables La résolution des cubes Conclusion LONGTEMPS étudié dans un contexte séquentiel pour ses nombreuses applications industrielles (planification, vérification formelle, bio-informatique, etc.), le problème SAT a fait éclore des algorithmes efficaces et puissants qui s expliquent à la fois par l envol des solveurs SAT modernes (apprentissage, VSIDS, watched literal) et l accroissement de la puissance de calcul. Ainsi, les solveurs SAT modernes permettent de résoudre des problèmes considérables contenant des millions de variables et de clauses. Cependant, de nombreuses instances restent encore inabordables dues à leur immense dimension et difficulté structurelle. Par ces complications, la parallélisation des algorithmes de résolution pour SAT semble nécessaire. Davantage par le fait qu actuellement la puissance d un ordinateur ne se traduit plus par une amplification des fréquences du microprocesseur mais par l augmentation du nombre de cœurs au sein de celui-ci. Néanmoins, la parallélisation d un problème NP-Complet est une tâche ardue, l efficacité qui en résulte reste atténuée sur de nombreux cœurs. 10

19 2.1. Modèles parallèles Au préalable, afin de comprendre cette accommodation, nous allons présenter les triviales notions de la parallélisation ainsi que ses propres modèles d exécution et de programmation. Cela nous servira à appréhender les deux aspects distincts de la parallélisation du problème SAT : à savoir les méthodes de types «diviser pour régner» dites collaboratives et, à l opposé des méthodes concurrentielles. Après avoir relaté un historique partiel des solveurs représentant ces deux approches, nous présenterons en détail deux techniques se basant sur l approche collaborative : le chemin de guidage (Guiding path) ainsi que la méthode originale Cube And Conquer. En conclusion, nous discuterons du sujet de ce manuscrit ainsi que la voie choisie pour élaborer notre tâche, à savoir, mettre en œuvre un modèle permettant la résolution du problème SAT à l aide des algorithmes de colonies d abeilles dans un but massivement parallèle. 2.1 Modèles parallèles PROCESSEUR MONO-CŒUR Cœur de calcul PROCESSEUR MULTI-CŒUR Cœur 1 Cœur 2 Cœur 3 Cœur 4 Mémoire cache L1 Mémoire cache L2 L1 dédiée L1 dédiée L1 dédiée L1 dédiée L2 partagée FIGURE 2.1 Schémas de processeurs Depuis l invention du premier microprocesseur (intel 4004) en 1971, Gordon Moore observe en 1975 que le nombre de transistors des microprocesseurs sur une puce de silicium se réplique tous les deux ans. Cette observation appelée loi de Moore n est pas une loi physique mais une extrapolation empirique qui s est révélée étonnamment fidèle pour le moment, elle s est traduite par une augmentation des fréquences de fonctionnement des microprocesseurs. Mais depuis environ 2005, à cause de l échauffement important des microprocesseurs à des fréquences avoisinant les 4 GHz, il n a plus été envisageable pour les entreprises de les accroître. En contrepartie, il est aujourd hui possible d ajouter plusieurs cœurs de calcul au sein du même microprocesseur (figure 2.1). De cette manière, les industriels annoncent toujours doubler la puissance de leur microprocesseur pour ainsi honorer la loi de Moore. Néanmoins, les développeurs ne voient pas ce gain directement, et doivent s apprivoiser à un modèle de programmation dit alors parallèle. Une contrainte embarrassante car tous les algorithmes voulant bénéficier du multi-cœur doivent être repensés. La loi de Moore ne sera probablement plus exacte dans le futur, et commence déjà à ne plus l être, certaines entreprises disent ne pas la respecter pour des raisons énergétiques et écologiques (informatique verte, netbook,...). De plus, l industrie approche de plus en plus des limites physiques de la micro-électronique où les transistors ne seront plus constitués que de quelques atomes et l isolant entre eux d un seul. Afin de mieux comprendre les rouages de cette programmation parallèle, nous allons présenter quelques notions élémentaires Préliminaires Définition (Parallélisme). Le parallélisme en informatique donne la possibilité d exécuter plusieurs instructions conjointement. 11

20 Chapitre 2. SAT en parallèle Définition (Exécution séquentielle, exécution parallèle). Une exécution séquentielle est une exécution faite sur une unité de calcul (cœur) tandis qu une exécution parallèle est une exécution faite sur plusieurs unités de calculs. Définition (Temps d exécution séquentiel, temps d exécution parallèle). Le temps d exécution d un programme séquentiel représentant un problème P est le temps écoulé entre le lancement du programme et l obtention du résultat, nous le notons Tsec. P Le temps d exécution d un programme représentant un problème P en parallèle sur n processus est l instant où le dernier processus a terminé son travail, nous le notons Tpar(n). P Définition (Accélération absolue, accélération relative). L accélération absolue représente le nombre de fois que le programme a été accéléré grâce à son exécution en parallèle par rapport au temps d exécution séquentielle du meilleur algorithme connu résolvant un problème P : Acc ab (n)= T P sec T P par(n) L accélération relative représente le nombre de fois que le programme a été accéléré grâce à son exécution en parallèle par rapport au temps d exécution du même programme lancé sur un seul cœur : Acc ab (n)= T P par(1) T P par(n) Définition (Efficacité). L efficacité représente la qualité de la parallélisation en fonction du nombre de processeurs : Eff(n)= Acc(n) n Définition (Extensibilité). L extensibilité d un algorithme parallèle est sa capacité à maintenir son efficacité quelque soit le nombre de processeurs utilisés. Exemple. Les solveurs SAT ont souvent une extensibilité réduite due à la difficulté du probléme NP- Complet. Définition (Accélération super linéaire, accélération linéaire, accélération sous linéaire). Quand une accélération dépasse le gain possible de la parallélisation, cela montre que le programme en question obtient donc aussi un gain algorithmique en plus de ce gain : cette accélération est dite super linéaire. Elle est obtenue lorsque Acc(n) > n pour n processeurs. Dans le cas contraire, si Acc(n) < n (respectivement Acc(n) = n) pour n processeurs, l accélération est dite sous linéaire (respectivement linéaire). Exemple. Pour un algorithme résolvant le problème SAT, des performances super linéaires sur une instance sont possibles si le parallélisme a permis de diminuer fortement la taille de l arbre de recherche en fonction du nombre de cœurs. Cela peut s avérer fréquent pour des problèmes satisfiables, moins pour des problèmes insatisfiables.néanmoins, ce cas n est pas abondant, il est difficile de trouver la bonne manière pour partager l arbre de recherche efficacement Modèles d exécution Il existe plusieurs manières d exécuter plusieurs tâches simultanément, une classification nommée taxinomie de Flynn [Fly72] a été élaborée afin de les distinguer. Elle contient donc l architecture de von 12

21 2.1. Modèles parallèles Neumann : modèle d exécution des machines séquentielles. Définition (SISD, SIMD, MISD, MIMD). La taxinomie de Flynn développe quatre modèles distincts : Single Instruction Single Data (SISD) : machine séquentielle d un seul processeur pouvant traiter un seul flot d instructions accompagné d un seul flot de données ; Single Instruction Multiple Data (SIMD) : machine constituée de plusieurs processeurs pouvant traiter un seul flot d instructions accompagné de plusieurs flots de données ; Multiple Instruction Single Data (MISD) : machine constituée de plusieurs processeurs pouvant traiter plusieurs flots d instructions accompagnés d un seul flot de données ; Multiple Instruction Multiple Data (MIMD) : machine constituée de plusieurs processeurs pouvant traiter plusieurs flots d instructions accompagnés de plusieurs flots de données. Le modèle connu du monde séquentiel SISD n exploite aucun parallélisme, tant au niveau des instructions qu à celui de la mémoire (architecture de von Neumann). SIMD est une machine qui utilise le parallélisme au niveau de la mémoire, comme le processeur vectoriel ou le processeur graphique (Graphics processing unit (GPU)). MISD est un modèle spécifique à certain traitement qui est généralement utilisé pour sa tolérance envers les pannes, ce modèle s exécute plus particulièrement sur des tableaux systoliques de processeur. Pour finir, MIMD est le plus répandu, le plus souple à utiliser, et appliquer par défaut dans le domaine SAT. Dans ce modèle, plusieurs processeurs traitent des données différentes, car chacun d eux possède une mémoire distincte. Les ordinateurs multi-cœurs sont basés sur ce modèle tandis que les supercalculateurs sont en général basés sur un MIMD hybride. Le modèle MIMD peut être exécuté sur différentes architectures selon la façon d accéder à la mémoire, cette classification a été introduite par [Joh88]. Définition (CC-UMA, CC-NUMA, NoRMA). Le modèle MIMD a trois architectures cibles sur lesquelles s exécuter : Cache Coherent - Uniform Memory Access (CC-UMA) : la mémoire est globale et partagée à la même vitesse par tous les processeurs d un ordinateur. Cache Coherent - Non Uniform Memory Access (CC-NUMA) : la mémoire est globale et partagée à des vitesses différentes par tous les processeurs d un ordinateur. No Remote Memory Access (NoRMA) : la mémoire est distribuée sur les processeurs, chaque processeur accède uniquement à sa mémoire locale. Les architectures CC-UMA et CC-NUMA sont Cache Coherent, cela veut dire que la cohérence des mémoires caches est garantie par l ordinateur. Dans l architecture CC-UMA, chaque processeur accède à la mémoire à la même vitesse grâce à un bus d interconnexion, ce qui limite la taille à quelques dizaines de cœurs. Typiquement, un ordinateur multi-cœurs est d architecture CC-UMA. Par contre, l architecture CC-NUMA ne possède pas de bus d interconnexion : chaque cœur possède une mémoire locale qui lui est directement adressable à très grande vitesse et une autre, adressable par tous les cœurs, mais à vitesse réduite. Ce qui permet à cette architecture d accueillir plus de cœurs que CC-UMA mais pour un coût de cohérence des mémoires caches plus important. L architecture NoRMA est très opposée aux deux autres : elle ne possède pas de mémoire globale. Le partage de l information s effectue d une manière différente : l échange de messages entre processeurs à travers le réseau d interconnexion. Néanmoins, cette architecture a l atout de pouvoir compter plusieurs milliers de cœurs grâce à des difficultés de conception moindre. Le sujet de ce manuscrit, étant basé sur une application massivement parallèle de 13

22 Chapitre 2. SAT en parallèle SAT, se doit donc par défaut de choisir cette architecture. Remarquons que les supercalculateurs actuels sont en général constitués d une hybridation des architectures présentées ci-dessus : quasiment tous basés sur une interconnexion NoRMA de nœuds CC-UMA ou CC-NUMA Modèles de programmation Nous venons de voir que la communication entre les processeurs ne se fait toujours pas de la même façon suivant l architecture utilisée, ainsi, cela a un impact sur les algorithmes et la manière de programmer. Nous allons présenter ici, deux modèles conceptuels de communication pour écrire des algorithmes parallèles. Définition (PRAM). Dans le modèle de programmation Parallel Random Access Machine (PRAM), la mémoire est directement accessible par l ensemble des processeurs. Or, les accès concurrents en écriture à la mémoire sont une complication pour le programmeur. Pour cela, il doit explicitement gérer des verrous d accès pour s assurer qu un seul processeur accède à une variable lors de l écriture. Les architectures cibles pour ce type de programmation sont les machines CC-UMA et CC-NUMA. Définition (DRAM). Dans le modèle de programmation Distributed Random Access Machine (DRAM), chaque unité de calcul a seulement accès en temps constant à sa propre mémoire locale. La seule manière de communiquer est de la faire explicitement par l échange de messages. L architecture cible est la machine NoRMA. Utile pour le modèle de programmation DRAM, la bibliothèque de fonctions Message Passing Interface (MPI), conçue en 1993, est une norme utilisable avec les langages C, C++ et Fortran. Elle permet d exploiter des ordinateurs distants ou multiprocesseurs par passage de messages. Le terme calcul parallèle (respectivement distribué) est associé au modèle de programmation PRAM (respectivement DRAM). A ne pas confondre avec la définition d un algorithme distribué (ou réparti) qui est généralement un algorithme parallèle (mais pas toujours, exemple, une communication téléphonique) réparti sur plusieurs sites. Nos approches dans ce manuscrit seront basées sur le modèle de programmation DRAM, qui possède avec les algorithmes de colonies d abeilles le point commun d utiliser un système d échange de messages. Nous allons maintenant étudier les approches pour résoudre SAT en parallèle. 2.2 Résoudre SAT en parallèle Nous présenterons dans cette section les deux modèles permettant de faire travailler les processus en parallèle pour le problème SAT ainsi que quelques solveurs respectifs. D une part, nous avons le modèle collaboratif (coopératif) basé sur le paradigme «diviser pour régner» puis, d un autre côté, le modèle concurrentiel, qui exécute en parallèle plusieurs solveurs séquentiels en concurrence sur le même problème. Nous acheminerons ainsi la notion de chemin de guidage, centrale dans le modèle collaboratif, qui nous permettra de circonscrire une méthode originale nommée Cube And Conquer [HKWB12] étudiée dans la prochaine section Le modèle concurrentiel Le modèle concurrentiel aussi nommé portfolio fait fonctionner les processeurs sur le même problème sans le partager, mais en l exécutant sur différentes stratégies de résolution avec des paramétrages divers et variés. Ainsi, le premier trouvant la solution (SAT ou UNSAT) arrête tous les autres (figure 2.2). 14

23 2.2. Résoudre SAT en parallèle Solveur 1 Solveur 2 Solveur 3 Solveur 4 Solution FIGURE 2.2 Parallélisme concurrentiel Bien sûr, cela n a de sens que pour les problèmes qui possèdent plusieurs algorithmes distincts à leur actif fourmillant de paramètres sensibles ou ayant un comportement aléatoire. Il se trouve que le problème SAT en regorge et qui plus est, les solveurs modernes sont extrêmement sensibles au moindre changement de paramètre : cela s explique par la structure interne des instances que connaît le problème SAT. Il est donc nécessaire que l ensemble des solveurs fasse leurs recherches le plus différemment possible afin de former un ensemble complémentaire. Les solveurs concurrentiels utilisent en général le modèle de programmation PRAM afin de pouvoir partager des informations utiles à tous les processeurs Les solveurs concurrentiels Il existe de nombreux solveurs concurrentiels, nous en mentionnons une liste non exhaustive ayant pour but de voir une certaine évolution. Dans le domaine des solveurs incomplets, citons le parallélisme du solveur GNOVELTY + T [PG09] qui est simplement l exécution concurrentielle et indépendante de plusieurs solveurs GNOVELTY + [PTGS08] utilisant une recherche locale stochastique afin de varier la recherche. Le solveur GNOVELTY + utilise un mécanisme de poids sur les clauses non satisfaites, incrémenté à chaque fois que la clause a été testée non satisfaite. Cela améliore le choix de la prochaine variable dont la valeur sera inversée. Les solveurs complets modernes de type CDCL (ZCHAFF [Her03], MINISAT [SE02], PICOSAT [Bie08],...) sont une extension de la procédure DPLL. La procédure CDCL, d abord introduite par [SS96], a apporté son lot d améliorations au fil du temps : le backjumping, l apprentissage de clauses, l heuristique VSIDS, les restarts et une structure de données efficace nommée Watched literals. Un atout de la procédure CDCL dans le monde parallèle est le partage des clauses apprises parmi les solveurs exécutés. Le solveur complet MANYSAT tente de tirer parti de cet avantage en jouant sur la sensibilisation des paramètres des solveurs CDCL [HS09]. Il procède à un échange des clauses apprises parmi les processeurs. Néanmoins, un coût de communication ralentit la recherche, il faut donc décongestionner un canal de communication trop encombré. Les auteurs mettent en place une limite basée sur la taille des clauses échangées : elles doivent être de taille inférieure ou égale à 8. De plus, afin de réaliser une recherche orthogonale et complémentaire, les auteurs proposent de différencier les solveurs sur leur stratégie de redémarrage, de choix de variables, de choix de polarité et d apprentissage. D un autre côté, le solveur PLINGELING propose d échanger uniquement les clauses unaires avec des solveurs dont la stratégie diffère [Bie10]. 15

24 Chapitre 2. SAT en parallèle Malgré cela, un simple outil de parallélisation statique PPFOLIO fait tourner les meilleurs solveurs en concurrence sans échange de clause, et obtient de meilleurs résultats [Rou12]. A présent, nous allons détailler le solveur PENELOPE, possédant l originalité de s attaquer au surplus de clauses apprises en proposant de «geler» certaines d entre elles [AHJ + 12] Le solveur PENELOPE PENELOPE [AHJ + 12] est un solveur concurrentiel de type portefolio reprenant pour socle le solveur MANYSAT. Intégrant les approches efficaces du cadre séquentiel (propagation unitaire, structure de données paresseuses, heuristique basée sur l activité des variables, apprentissage de clauses, etc.), son atout est d intégrer une technique récente permettant d aménager la base de clauses apprises pour les différencier suivant leur utilité à un instant donné du solveur. Voyons tout d abord la notion du progress saving qui consiste à préserver la dernière polarité de chaque variable dans une interprétation complète notée P. Ainsi quand une décision sera prise, le solveur choisit pour valeur de vérité d une variable de décision cette polarité sauvegardée. Le travail accompli par le solveur pour résoudre les sous-problèmes traversés avant d atteindre un conflit devient donc plus utile [PD07]. Néanmoins, cette technique a le désavantage de ne pas assez diversifier la recherche. Pour gérer la base de clauses apprises, les auteurs de [ALMS11] ont défini une mesure nommée progress saving based quality measure (PSM) définie comme suit : pour une clause C et une interprétation complète P représentant la dernière polarité de chaque variable (le progress saving) : PSM(C) = P C Quand PSM(C)est petit, la clause C a plus de chance de participer à la propagation unitaire, elle est donc pour nous importante et pertinente. A l inverse, si PSM(C)est grand, cela signifie que la clause a plus de chance d être satisfaite par un littéral, elle est donc moins utile à cet instant de la recherche. Cet effet est dû à l interprétationp qui nous donne une image de l état courant de la recherche. L heuristique PSM est utilisée pour classer les clauses apprises des solveurs. On peut distinguer 3 types de clauses apprises : Les clauses actives A : clauses utilisées dans la recherche ; Les clauses gelées G : clauses inutilisées dans la recherche mais encore en mémoire (enlevées de la liste des watched-literals) ; Et les clauses suppriméess de la mémoire. Périodiquement, la mesure PSM est calculée sur toutes les clauses apprises. Suivant un seuil L, les clauses ayant un petit PSM<Lsont activées. A l opposé, les clauses avec un grand PSM>Lsont gelées. Grâce au calcul périodique de PSM, les clauses changent donc de camp, pour devenir gelées ou dégelées (actives), suivant la recherche en cours. De plus, les clauses restant gelées trop longtemps et les clauses actives mais sans participation à la recherche depuis un trop long laps de temps K sont supprimées, ce qui nous donne notre troisième type de clauses apprises (figure 2.3) Le modèle collaboratif Le modèle collaboratif consiste à réduire récursivement l arbre de recherche en plusieurs sousproblèmes du même type (figure 2.4). Pour cela, plusieurs approches ont été proposées souvent bâties 16

25 2.2. Résoudre SAT en parallèle Non utilisée ( ) Non activée ( ) FIGURE 2.3 Diagramme des clauses apprises dans PENELOPE FIGURE 2.4 Parallélisme «diviser pour régner» sur une programmation ne demandant que des échanges minimes : le modèle DRAM. Nous exposerons la plus utilisée, qui découpe l arbre de recherche sous forme de trajet, intitulée chemin de guidage. Néanmoins, bien que cette division semble parfaite pour un solveur de type DPLL, elle pose souci au niveau des backtracks non chronologiques d un solveur CDCL : il se peut qu un processeur travaille pour rien. Un autre désavantage est la charge des processeurs qui est déséquilibrée, en effet, la division de l arbre de recherche nous donne deux sous-problèmes dont les difficultés diffèrent. Il faut donc amener une politique d équilibrage de charge qui peut s avérer coûteuse. De plus, contrairement à la méthode concurrentielle, cette technique doit attendre que tous les solveurs ont terminé leurs recherches pour prouver l intisfaisabilité d une instance Le chemin de guidage Dans cette section, nous présenterons l approche la plus populaire du modèle collaboratif : cette notion appelée chemin de guidage (Guiding path) a été proposée par [ZB94]. Cette approche consiste à conserver des chemins de recherche permettant d indiquer quels sont les sous-arbres à développer pour un processeur. Un tel chemin est représenté par un ensemble de couples(f i,c i ), ou F i est un littéral à propager et C i est une variable booléenne indiquant quelles branches sont en cours de calcul parmi les deux sous-arbres disponibles à partir de la variable provenant du littéralf i. Cette variable booléenne est définie comme suit : C i = les deux sous-arbres sont en cours de traitement ou traités. C i = un seul des deux sous-arbres est en cours de traitement ou traité. 17

26 Chapitre 2. SAT en parallèle Exemple. Le chemin de guidage de la figure 2.5 est ((x 1, ),(x 2, ),( x 3, )). A partir de celui-ci, il est possible d obtenir deux chemins de guidage différents qui permettront d orienter deux processeurs : (( x 1, )) et ((x 1, ),(x 2, ),( x 3, )). Par la suite, si un troisième processeur est inutilisé, nous pouvons appliquer ce même raisonnement sur la variable x 2 pour avoir trois chemins de guidage : (( x 1, )), ((x 1, ),( x 2, )) et ((x 1, ),(x 2, ),( x 3, )) FIGURE 2.5 Chemin de guidage Cette notion présente le défaut de donner au processeur des chemins dont le calcul est déséquilibré, en effet, il se peut qu un chemin soit très long à calculer tandis qu un autre se finisse instantanément. Afin de pallier à ce problème, un modèle d équilibrage de charge doit être installé. De plus, il est possible de diviser le travail en deux sous-chemins, l un contenant le littéral et l autre, son littéral complémentaire Le chemin de guidage : le rééquilibrage des charges Le rééquilibrage des charges est basé sur un modèle maître/esclave comme peut nous montrer la figure 2.6. Un processeur maître est chargé de distribuer les tâches aux esclaves tandis qu un processeur esclave est chargé de calculer une tâche. Le modèle mis en place pour équilibrer la charge par une distribution des chemins de guidage est généralement centralisé au sein du processeur maître. Le maître maintient à jour une liste de chemins de guidage. Un chemin permet de symboliser le futur travail sur un sous-arbre puisque le chemin permet de retrouver la racine d un sous-arbre. Un exemple du rééquilibrage des charges exposé est donné par les figures 2.7, 2.8, 2.9, 2.10, 2.11 et 2.12, partiellement tirés de [VS09]. 18

27 2.2. Résoudre SAT en parallèle FIGURE 2.6 rééquilibrage des charges : état initial, F etg travaillent. FIGURE 2.7 rééquilibrage des charges : F a terminé son sous-arbre,g travaille. FIGURE 2.8 rééquilibrage des charges :F informe le maître,g travaille. 19

28 Chapitre 2. SAT en parallèle FIGURE 2.9 rééquilibrage des charges : F récupère un chemin de guidage depuis le maître. FIGURE 2.10 rééquilibrage des charges : le maître n a plus de chemin à fournir, il stoppeg FIGURE 2.11 rééquilibrage des charges :G envoie son chemin de guidage 20

29 2.3. Cube And Conquer FIGURE 2.12 rééquilibrage des charges : les chemins de guidage sont rééquilibrés Par le fait qu un chemin de guidage peut se représenter par quelques entiers seulement, cette méthode a largement été étudiée en pratique dans un modèle DRAM. À présent, nous présentons brièvement quelques solveurs basés sur ce principe Les solveurs de type chemin de guidage Le premier solveur parallèle utilisant cette technique est PSATO [ZBP + 96] basé sur le solveur séquentiel SATO. Par la suite, certaines bonifications sont apparues, //SATZ [JLU01] avec l intégration de l heuristique basée sur la propagation unitaire (PU), l échange de clauses a été intégré par PASAT [SBK01]. Citons aussi PMINISAT [CSH08] qui est la parallélisation du solveur MINISAT 2.0 [SE08] avec la particularité d exploiter les chemins de guidage des processus pour améliorer la qualité des clauses échangées. A présent, nous allons exposer un solveur collaboratif qui a pour intuition de diviser le problème sans chemin de guidage. 2.3 Cube And Conquer T F CREATION D'UN CUBE CONFLIT T F T F T F T F T F FIGURE 2.13 Cube And Conquer 21

30 Chapitre 2. SAT en parallèle La méthode Cube And Conquer (CC) a été introduite par [HKWB12] et vise à réduire le temps de résolution des instances difficiles. Cette approche divise le problème en deux phases, la première appelée Cube (figure 2.13) consiste à transformer le problème original en million de cubes via un solveur lookahead tandis que la deuxième phase appelée Conquer consiste à résoudre chaque cube dans des solveurs CDCL distincts (spirales de figure 2.13). L intuition est qu un solveur CDCL est très efficace sur de plus petites instances grâce à leur heuristique basée sur l activité des variables alors qu un solveur look-ahead prend de meilleures décisions au début de l arbre de recherche, étant basées sur une heuristique globale. Cette méthode a donc pour but de passer d une résolution look-ahead à une résolution CDCL de type look-back quand un des sous problèmes semble devenir facile. Pour finir, elle a l avantage d être parallélisable par sa nature. Exemple. SoitF une formule sous forme CNF représentant notre instance initiale. La figure 2.13 représente l arbre de recherche par un solveur look-ahead. En parcourant cet arbre de recherche, suivant une heuristique, l algorithme a créé quatre cubes, qu il ajoutera à F pour envoyer chaque formule modifiée F n (représentant nos sous problèmes plus faciles) à des solveurs CDCL distincts : F 1 = F (x 2 x 3 x 1 ) F 2 = F (x 2 x 3 x 1 ) F 3 = F ( x 2 x 1 ) F 4 = F ( x 2 x 1 x 3 ) Algorithme Les auteurs ont donc modifié le solveur look-ahead pour en faire un outil de partitionnement du problème initial. Ils se base sur un solveur DPLL, en lui ajoutant une heuristique look-ahead, nous avons donc un parcours en profondeur d abord avec backtrack via un algorithme récursif. Algorithme 1 : CC Données : F la formule initiale, A l ensemble de cubes,c l ensemble de clauses apprises, l ensemble des littéraux de décisionsl d et l ensemble des littéraux impliqués via la propagation unitairel i. Résultat : A l ensemble des cubes envoyé à des solveurs CDCL distincts 1 Début 2 (F,L i ) simp(f,l d,l i ); 3 sifalsifie(l d,l i ) alors /* Un conflit */ 4 retourner(a,c { L d }); /* Apprend une clause */ 5 sicoupureheuristique() alors 6 retourner(a {L d },C); /* Ajoute le cube */ 7 L decisionheuristique(f,l d,l i ); 8 (A,C) CC(F,A,C,L d {L},L i ); 9 retourner CC(F,A,C,L d { L},L i ); 10 Fin Pour chaque nœud de l arbre de recherche, l algorithme 1 représentant CC va d abord effectuer la propagation unitaire et d autres simplifications, cela peut impliquer d autres littéraux (ligne 2). Ensuite, il regarde s il y a un conflit (ligne 3) : si c est bien le cas, il apprend la clause responsable du conflit (le 22

31 2.3. Cube And Conquer complément du cube représentant les décisions de la racine aux feuilles) dans l ensemble C, puis l algorithme va donc terminer la récurrence (ligne 4). Par la suite, via une heuristique nommée de coupure, l algorithme choisit si il peut envoyer le cube à un solveur CDCL (ligne 5). Dans ce cas, il retient le cube dans l ensemble A et ici aussi, la récurrence se termine (ligne 6). Pour finir, cet algorithme fait les appels récursifs courants d un solveur DPLL (ligne 8 et 9) en décidant un littéral via une heuristique de choix de variables look-ahead (ligne 7). A la fin de la procédure, l ensemble des clauses C et l ensemble des cubes A sont optimisés. Les solveurs CDCL reçoivent F (a A) C, soit la formule accompagnée d un cube a avec optionnellement quelques clauses apprises. Comme nous le montre l exemple suivant, les clauses dec forceront dans certains cas quelques variables, que nous pouvons donc enlever de divers cubes. Exemple. Toujours sur notre figure 2.13, les deux premiers conflits représentés par une croix sont les complémentaires des décisions de la racine à leur feuille, on a donc les clauses apprises x 2 x 3 x 4 et x 2 x 3 x 4. A la fin de l algorithme, une optimisation effectue une résolution sur ces deux clauses pour en faire une seule : x 2 x 3. Ainsi quand x 2 sera affectée, la clause propagera x 3. On peut donc enlever la variablex 3 des cubes qui contiennent la variablex 2 sans oublier d ajouter cette clause apprise aux solveurs CDCL. Cela donne : F 1 = F (x 2 x 1 ) C F 2 = F (x 2 x 1 ) C F 3 = F ( x 2 x 1 ) C F 4 = F ( x 2 x 1 x 3 ) C Remarque. Bien que ces clauses apprises soient utiles à cette optimisation, les auteurs signalent que l envoi de ces clauses apprises à un solveur CDCL est optionnel. En effet, le sous-problème généré étant différent du problème initial, il y a peu de chance que les clauses apprises près de la même branche (celle formant le cube) servent réellement au sous-problème. Néanmoins, une clause apprise d une autre branche (Une branche différente du cube) pourrait servir au sous-problème, surtout si sa taille est petite. Deux heuristiques sont utilisées dans CC : l heuristique de coupure et l heuristique de décision. La première est utilisée pour savoir s il faut couper l arbre de recherche (arrêter de développer une branche) pour envoyer un cube à un solveur CDCL ou alors, ne rien couper et continuer la recherche. Tandis que la deuxième, sert à choisir la prochaine variable à développer au prochain nœud L heuristique de coupure Les auteurs ont implémenté trois heuristiques différentes pour sélectionner celle qui coupe au mieux l arbre, c est la dernière qui s est révélée la plus efficace. La méthodeapropose de couper les branches après un certain nombre de décisionskfixé à l avance, l avantage est de savoir le nombre maximal de cubes : 2 K qui pourront être crées. Un inconvénient majeur : les cubes coupés au même niveau de l arbre sont disproportionnés au niveau de leur difficulté : certains seront très faciles à résoudre tandis que d autres très durs. La méthodeb propose de couper les branches dès qu on a dépassé un pourcentage du nombre des variables assignées. Elle pose principalement problème dans le fait que pour certaines instances, le nombre de cubes devient très grand alors que pour d autres, il devient trop petit. 23

32 Chapitre 2. SAT en parallèle La méthode C est l heuristique intégrée dans CC. Elle utilise un produit avec le nombre de décisions et un autre avec le nombre de variables puis l affine suivant une variable dynamique α. La branche est coupée à la condition de respecter cette inéquation : avec : Nb dec Nb dec imp > α Nb var Nb dec est le nombre de variables de décisions ; Nb dec imp est le nombre de variables de décisions plus le nombre de variables impliquées ; Nb var est le nombre de variables de la formule initiale ; α est la variable dynamique qui est initialisée à A chaque appel, la variableαest augmentée de 5 pour empêcher qu elle ne devienne pas trop petite. Puis lors d un conflit, elle est diminuée de 15 pour essayer de couper les branches voisines avant l apparition d autres conflits : de ce fait, plus il y a de conflits, plus l algorithme crée des cubes. Cela permet aussi de ne pas aller trop en profondeur dans l arbre de recherche. A partir d un certain moment choisi suivant le nombre de décisions, on abaisse toujours α pour couper toute les branches afin de créer tous les cubes en quelques secondes L heuristique de choix de variables Les auteurs ont utilisé une heuristique basée sur la fonction eval(x)comptant le nombre de littéraux assignés grâce à la propagation du littéral X. Le solveur CC choisit ensuite la variable maximisant eval(x) eval( X), les égalités sont brisées par eval(x)+ eval( X). Ils expliquent leur choix en citant deux avantages : le premier est qu elle est simple comparée à une heuristique lourde en calcul, comme celle basée sur les clauses réduites mais non satisfaites. De ce fait, elle ne requière pas la structure de données complexe souvent implémentées dans les solveurs look-ahead. Le deuxième avantage pour les auteurs, est que cette heuristique est meilleure sur des instances qui contiennent beaucoup de clauses binaires comme nous pouvons en trouver dans les instances industrielles. En effet, nous pouvons remarquer que plus une instance contient de clauses binaires, plus l ensemble d arrivée de la fonction eval(x)sera diversifié, ce qui augmentera son efficacité. En contrepartie, quand il n y a pas ou peu de clauses binaires, cela réduira considérablement son efficacité La résolution des cubes Les auteurs se reposent sur un outil de parallélisation appelé TARMO, celui ci se base sur les travaux de la notion Bounded Model Checking (BMC). La technique multijob utilisée pour CC consiste à attribuer un job (cube) dès qu un nœud de calcul est au repos. Quand deux nœuds sont au repos en même temps, l ordre d assignement des cubes est indéfini, mais il est garanti que deux nœuds ne fonctionneront jamais sur le même cube. Les auteurs ont aussi expérimenté une autre stratégie appelée multijob+ qui se base sur multijob excepté qu il peut assigner un cube qui est déjà en train d être résolu par d autres nœuds de calculs à un nœud qui serait de toute façon resté au repos. Cela découle du fait que certains cubes sont très faciles et se résolvent donc rapidement tandis que d autres sont trop longs à résoudre. Grâce à cette amélioration, une fois que les cubes les plus simples ont été résolus, tout les autres sont sur tous les nœuds de calculs plusieurs fois si le nombre de nœuds de calculs le permet. Pour finir, remarquons que le solveur CC ne rivalise pas avec les solveurs actuels, mais il obtient quand même de meilleure performance avec une réelle marge sur quelques instances difficiles. 24

33 2.4. Conclusion 2.4 Conclusion Dans le chapitre 4 de la partie de contribution, nous avons conclu sur le fait que les algorithmes de colonies d abeilles adaptés au problème SAT doivent d abord avoir une base sur laquelle ces métaheuristiques peuvent s appuyer. Comme pour CC, nous proposons donc de diviser notre problème en million de cubes, afin d obtenir le nectar en question. Un cube sera donc considéré comme un sousproblème, et plusieurs cubes seront considérés comme une nourriture pour une méta-heuristique de colonies d abeilles. Nous pouvons considérer cette création de cubes comme l illustration d une abeille scout du chapitre 4 ayant la même fonctionnalité. Néanmoins, nous devons donc trouver les meilleurs cubes, la qualité d un tel cube (interprétation partielle) est difficile à connaître réellement dans une complexité correcte, mais nous pouvons en faire une estimation. Nous entendons par meilleur les cubes qui mènent à une solution pour les instances SAT. Quand aux instances UNSAT, nous ne pouvons que considérer leur facilité ou difficulté à prouver leur insatifaisabilité. Afin d étudier une manière de trouver les meilleurs cubes, nous allons examiner les problèmes de bandits ainsi que l algorithme UCT. En effet, ce problème traite un dilemme d exploration / exploitation, dilemme que nous pouvons retrouver dans la création de cubes. 25

34 Chapitre 3 Les problèmes de bandits Sommaire 3.1 Le problème de bandits classique Multi-armed bandit La stratégie d allocation et regret La stratégie UCB Définition et exemple Exemple d application L algorithme UCT Squelette de l algorithme Explication Conclusion CE CHAPITRE a pour but d initier le lecteur au dilemme exploration / exploitation rencontré lors de nos travaux dans le chapitre 5, ainsi qu une méthode prenant en compte ce dilemme. Pour cela, nous allons tout d abord présenter le problème de bandits (manchots) classique à K bras. Puis, après avoir défini la notion de stratégie et de regret, présenter la stratégie UCB qui respecte intuitivement notre dilemme. Nous finirons par expliquer l algorithme UCT qui applique cette stratégie. Le lecteur intéressé pourra se référer à l introduction de [ACBF02], et [ACBFS03]. 3.1 Le problème de bandits classique Dans de nombreux problèmes, il peut se cacher un dilemme exploration / exploitation (EvsE) : un agent peut être confronté au compromis fondamental entre accumuler de l expérience afin d obtenir des informations sur les récompenses qu il peut avoir grâce à des choix (exploration), ou au contraire, exploiter ces informations pour faire le choix le plus prometteur (exploitation). Les problèmes de bandits illustrent ce dilemme Multi-armed bandit Un bandit manchot (One-armed bandit) est l expression familière d une machine à sous, comme nous pouvons en trouver dans tous les casinos. Le problème de bandits (manchots) classique à K bras (Multi-Armed Bandit (MAB)) originellement proposé par [Rob52] représente K machines à sous ayant 26

35 3.1. Le problème de bandits classique chacune un bras (options, actions, choix) comme nous montre la figure 3.1 : Définition (Multi-armed bandit problem). Un agent choisit à chaque instant une action parmi les K décisions possibles et reçoit une récompense aléatoire tirée selon une distribution déterminée par l action choisie. Le but du joueur est de maximiser son gain : la somme des récompenses qu il reçoit au cours d une séquence des tirages des bras. Dans ce cas, chaque bras est supposé donner des gains qui sont tirés de façon indépendante à partir d une répartition fixe et inconnue. Comme les distributions de récompenses diffèrent de bras à bras, l objectif est de trouver le bras avec le meilleur gain le plus tôt possible, et de ne se focaliser que sur ce dernier. FIGURE 3.1 Des bandits manchots Formellement, ce problème est défini par des variables aléatoires X i,n avec 1 i K et n 1, où i est le numéro d un bras et n dénote l instant considéré. Le tirage successif du bras i rapporte des renforcementsx i,1,x i,2,... selon une loi de moyenne (espérance)µ i La stratégie d allocation et regret Définition (Stratégie d allocation). Une stratégie d allocation est un algorithme déterminant le bras à jouer à l instantn+1 en se basant sur la séquence des bras déjà tirés. Pour évaluer la performance d une stratégie d allocation donnée, nous devons savoir à quelle vitesse cette stratégie permet d atteindre un taux de récompense moyen optimal. Pour cela, nous définissons le regret depuis l instant n comme étant la perte par rapport à la stratégie optimale. La valeur moyenne du meilleur bras est donc le bras qui a l espérance maximale à chaque instant : µ = maxµ i avec 1 i K. Nous devons donc connaître ses probabilités de gain : quand l agent connaît les lois, il choisit alors le meilleur bras à chaque instant et obtiendrait une récompense moyenneµ. Définition (Le regret cumulé). Le regret cumulé à l instantnest alors défini par : r t t=1 R n = nµ n qui représente la différence en récompenses cumulées entre ce qu il a obtenu et ce qu il aurait pu obtenir en moyenne s il avait joué d une façon optimale dès le début. r t est donc le gain obtenu par le bras à l instantt. Exemple. Soit 4 bandits manchots dont les probabilités de gain sont connues : nous venons de tirer 3 fois le deuxième bras qui nous donne les gains 0.3, 0.4 et 0.6. Nous savons que le premier bras a une 27

36 Chapitre 3. Les problèmes de bandits récompense moyenne (espérance)µ = 0.8 qui est maximale. Ce qui nous donne donc un regret cumulé à cet instant de R 3 = ( ) = 1.1. Remarque. Avec de la chance, nous pouvons avoir un regret cumulé négatif si nous jouons le meilleur bras. Définition (Le regret cumulé espéré). Le regret cumulé espéré à l instant n est alors définie par : K Rn e = nµ µ j E[T j (n)] T j (n) est le nombre de fois où le bras j a été tiré depuis l instant n. µ j est l espérance des récompenses des bras tirés par la stratégie, donc liés àe[t j (n)]. Le regret cumulé espéré est ainsi l espérance de perte due au fait que la stratégie d allocation ne joue pas systématiquement le meilleur bras. Le regret cumulé espéré est utilisé pour trouver une bonne stratégie d allocation : en effet, nous nous intéressons à définir des stratégies qui obtiennent un petit regret cumulé espéré. Ainsi, un bon algorithme de bandit devra tirer peu souvent les bras sous-optimaux. j=1 3.2 La stratégie UCB La stratégie Upper Confidence Bounds (UCB), a été introduite à partir des années 2000, les auteurs l ont formalisée dans [ACBF02] Définition et exemple La stratégie UCB résout le compromis exploration/exploitation en choisissant à chaque tour, parmi tous les bras possibles, celle qui maximise la somme d un terme d exploitation, et d un terme exploration. Cette stratégie associe une valeur appelée indice de confiance supérieure (UCB) à chaque bras. Définition (Stratégie UCB). Pour initialiser l algorithme, nous jouons une fois chaque bras, notons tout d abord : T i (n) : le nombre de tirages du brasijusqu à l instant n ; S i (n) : la somme des récompenses obtenues du bras i jusqu à l instantn ; M i (n) = S i(n) est donc la moyenne à l instant n des récompenses obtenues du brasi. T i (n) LorsqueT i (n) > 0, l indice UCB associé au bras i est : UCB i (n) = M 2lnn i (n)+ T i (n) La stratégie UCB pour un instant n choisit le bras tel que : Remarque. 28 UCB(n) = max 1 i K UCB i(n) Le terme d exploitation M i (n) : moyenne des gains obtenue en choisissant cette action ; (3.1)

37 Le terme d exploration élevé. 2lnn T i (n) 3.2. La stratégie UCB : moins l action a été choisie dans le passé, plus ce terme est Nous obtenons ainsi un bon compromis : lorsque nous jouons un grand nombre de fois, la probabilité d explorer tend vers 0 avec une vitesse de convergence vers la stratégie optimale en ln(n) ou n est le n nombre de tirages : nous parlons alors de stratégie optimale dans l incertain. Exemple. Soit 3 bandits manchots, nous venons de tirer deux fois le premier bras qui nous donne les gains 0.3 et 0.4, puis deux fois, le deuxième bras qui nous donne les gains 0.3 et 0.5. Pour finir, le troisième bras n a été joué qu une seule fois avec un gain de 0.5, nous sommes donc à l instant n = 4. Nous cherchons via la stratégie UCB le prochain bras à jouer, calculons : M 1 (4) = ( )/2 = 0.35 M 2 (4) = ( )/2 = 0.4 M 1 (4) = 0.4/1 = 0.4 UCB 1 (4) ,177 1,527 UCB 2 (4) 0.4+1,177 1,577 UCB 3 (4) 0.4+1,665 2,065 Nous choisissons donc le troisième bras. Remarquons que le terme d exploration du troisième bras est plus élevé que les autres (1.665 vs 1,177), UCB cherche donc à explorer, ce qui est normal car nous sommes seulement à l instant n = Exemple d application D autres stratégies de type UCB sont proposées dans [ACBF02] puis dans [AO10]. Dans [JLHS12], les auteurs proposent d utiliser cette approche pour résoudre un compromis exploration/exploitation dans un solveur parallèle. Dans MANYSAT, tous les cœurs partagent et échangent les clauses apprises dont la taille ne dépasse pas un certain seuil. Cependant, étant donné le coût de communication, cette approche est inefficace lorsque le nombre de cœurs de calcul augmente. Ainsi, afin de décongestionner le canal de communication, il est nécessaire de définir quels seront les cœurs autorisés à partager leurs informations. Pour cela, les auteurs ont défini un algorithme : Bandit Ensemble for parallel SAT Solving (BESS) qui s inspire du problème du bandit manchot et de la stratégie UCB. L approche BESS utilise un MAB particulier pour les cœurs récepteurs. Un émetteur est dit vivant dans une certaine période s il est autorisé à envoyer des clauses, autrement, un émetteur est dit dormant. Au commencement de chaque période, le MAB particulier décide si un émetteur vivant reste en vie, sinon, il devient un émetteur dormant, et le plus vieux émetteur dormant est réveillé. Dans chaque période de temps, le MAB a pour tâche : Calcule le gain instantané du récepteur : le gain instantané d un émetteur en vie par rapport à un récepteur est défini en fonction d une heuristique inspirée de Variable State Independant Decaying Sum (VSIDS). Grâce à cette heuristique, les auteurs mettent à jour le gain cumulé de chaque émetteur en vie ; Met à jour un seuil de vitalité inspiré d UCB ; L émetteur vivant devient en sommeil si son gain cumulé est inférieur au seuil de vitalité et, dans ce cas, l émetteur en sommeil qui a été endormi le plus longtemps est réveillé. 29

38 Chapitre 3. Les problèmes de bandits 3.3 L algorithme UCT L algorithme UCB ne peut cependant pas être utilisé tel quel dans les jeux où les gains peuvent subvenir bien après l action, comme certains jeux de stratégie (échec, go) : c est dans l optique de résoudre cette limite que l algorithme Upper Confidence bounds in Trees (UCT) a été mis au point par [KS06] Squelette de l algorithme Répéter N fois REMONTÉE DESCENTE SIMULATION SÉLECTION FIGURE 3.2 Étape de l algorithme UCT. Pour utiliser l algorithme UCT, Il faut tout d abord un arbre de recherche, en l occurrence dans ce chapitre, un arbre de recherche représentant un jeu à deux joueurs (échec, go,...), sachant que cet algorithme peut être adapté dans d autres contextes. De ce fait, l arbre des possibles est donc l arbre de toutes les parties possibles depuis une position donnée. Chaque nœud représente donc un coup à jouer, dans une position donnée sauf le nœud racine. Comme nous montre la figure 3.2, l algorithme UCT se divise en plusieurs étapes répétées N fois : 30

39 3.3. L algorithme UCT La descente dans l arbre de recherche ; La sélection d une feuille ; La simulation d un nœud de l arbre (un état du jeu) ; La remontée dans l arbre de recherche. Algorithme 2 : UCT Données : A un arbre de recherche ne contenant que la racine d une position donnée du jeu et N le nombre de descentes dans l arbre Résultat : L arbreacontenant le prochain coup à jouer : c est le nœud fils de la racine qui a le meilleur UCB 1 Début 2 tant quen > 0 faire 3 P descenteselectionuct(racine(a)); 4 R simulation(p); 5 remontéeuct(a,p,r); 6 N N+1; 7 retournera; 8 Fin L algorithme 2 associé à notre figure 3.2 a l originalité d explorer l arbre de recherche d une manière asymétrique en réalisant un bon compromis pour notre dilemme fondamental exploration/exploitation. L algorithme UCT simule itérativement des parties dans un jeu : les coups de la racine jusqu à des feuilles dans notre arbre de recherche. Une version récursive peut être vue dans [KS06] et [CM10]. Nous allons présenter une version itérative, notons que la version récursive a l atout de faire les étapes descente et remontée d une manière récursive dans l arbre Explication Algorithme 3 :descenteselectionuct(r) Données : R la racine de l arbrea Résultat : Le nœudf sélectionné 1 Début 2 tant quefilsnonexploré(f)= faire 3 F filmaxuct(); 4 JouerCoup(R,F); 5 R F; 6 F FilsNonExploréHasard(R); 7 devientexplorer(f); 8 JouerCoup(R,F); 9 retournerf; 10 Fin L algorithme UCT s adapte suivant le problème en question. Grâce à l indice UCB, il exploite en continuant d explorer les branches qui semblent les meilleures compte tenu des feuilles qu il a déjà explorées 31

40 Chapitre 3. Les problèmes de bandits (exploitation), et il explore des branches encore mal connues (exploration). Dans l algorithme 3 de la fonction descenteselectionuct()(ligne 3 dans l algorithme 2), nous faisons la distinction pour les fils d un nœud entre ceux qui sont explorés et ceux qui ne le sont pas (filsnonexplorer()(ligne 2)), l intersection de ces deux ensembles est donc vide, la fonction devientexplorer()(ligne 7) rend un nœud exploré. filmaxuct()(ligne 3) prend le fils ayant le plus grand indice UCT. La fonction JouerCoup()(ligne 4 et 8) simule le coup d un joueur d un nœud à un autre dans la partie. La fonction FilsNonExplorerHasard()(ligne 6) fait l étape de la sélection qui renvoie, dans notre cas, un fils au hasard. Remarquons que nous pouvons faire la simulation sur chacun des fils puis sélectionner celui ayant le meilleur gain, néanmoins, dans certains jeux (go,...) et problèmes (SAT, CSP,...), il peut y avoir beaucoup trop de fils à chaque nœud pour pouvoir appliquer cette méthode. La simulation dépend du problème, il peut y avoir des jeux, où le nœud sélectionné est une feuille de l arbre, dans ce cas, il n y pas de simulation, et il suffit de regarder l état de la partie pour savoir si la partie est gagnante ou pas. Mais dans la plupart des jeux, les arbres sont tellement immenses qu il faut utiliser une simulation car nous atteignons très rarement les feuilles de l arbre. Cela consiste à trouver une fonction d évaluation qui permet d évaluer l état de la partie. Ainsi, il est très appréciable de trouver une fonction d évaluation permettant d évaluer correctement l état de la partie. En général, pour de nombreuses applications, la fonction utilisé consiste à appliquer une méthode de type sampling (par exemple Monte-Carlo). Cependant, dans le cadre de SAT, une telle approche ne peut pas être utilisée et c est donc des heuristiques usuelles qui sont utilisées. Définition (Algorithme de Monte Carlo). un algorithme de Monte-Carlo est un algorithme probabiliste d une complexité déterministe, parfois dit aussi «randomisé» dont le déroulement fait appel à des données tirées au hasard. Le résultat peut être incorrect avec une certaine probabilité (généralement faible). Exemple. Nous imaginons une course entre 8 athlètes dont les chronos sont modélisés par autant de variables aléatoires. Nous avons besoin de savoir quel temps en moyenne met le plus lent des coureurs : Nous simulons les chronos des 8 coureurs et nous déterminons leur maximum : nous le faisons N fois en tout ; Nous faisons la somme des Nchronos maximum ; Nous divisons cette somme par N. Remarque. La méthode de Monte-Carlo offre un intervalle de confiance calculé grâce au nombre d expériences. La remontée consiste à re-parcourir les nœuds dans le sens inverse, pour remonter le gain de la simulation effectuée. Il existe plusieurs manières de remonter les gains suivant le problème : pour ce chapitre, nous les remontons suivant le joueur en question dans le nœud comme nous montre l algorithme 4. 32

41 3.3. L algorithme UCT Algorithme 4 :remontéeuct(p,r) Données : P le nœud sélectionné et R le résultat de la simulation Résultat : La remontée des poids dans l arbre 1 Début 2 tant quenon(estracine(p)) faire 3 N nombre de passages dans le nœud P; 4 M valeur cumulée du nœudp; 5 N N+1; 6 si Joueur = PremierJoueur alors 7 P P+R; 8 sinon 9 P P R; 10 P père(p) 11 Fin Conclusion Dans [CM10], [GW06] et [CM07], les auteurs présentent des modifications d UCT. La méthode UCT a été très prometteuse dans le jeu de go : elle a permis à l ordinateur de battre des joueurs professionnels, avant cela, ce n était pas possible. Aujourd hui, la plupart des jeux implémente cette IA. Voici quelques références : Sur le jeu de go : [GW06] ; Le programme battant des joueurs professionnels au go (Mogo) : [CTL06] ; Sur un jeu de carte allemand (Doppelkopf) : [Sil12] ; Pour d autres jeux qui implémentent UCT : [Sen14]. Ce chapitre nous a montré une manière de traiter le dilemme Exploitation / Exploration que nous rencontrons dans le problème SAT, plus précisément dans la création d interprétation partielle (cube) pour SAT. L idée est donc d utiliser l algorithme UCT à cette fin : ce que représente le chapitre 5. 33

42 Chapitre 3. Les problèmes de bandits 34

43 Contribution 35

44 Chapitre 4 Une méta-heuristique des colonies d abeilles butineuses pour SAT Sommaire 4.1 Une méta-heuristique massivement parallélisable Le choix du comportement à adopter La communication Hiérarchie Déroulement de l algorithme mémétique Conclusion COMME dans beaucoup d autres problèmes, SAT peut être résolu via le biais d algorithmes d optimisations (Recherche locale, recherche Tabou,...). Grâce à une adaptation face au problème concerné, nous retrouvons une recherche de solutions qui tend vers un optimum. Ainsi nommées méta-heuristiques, ces méthodes se comportent comme des algorithmes de recherche, tentant d apprendre les caractéristiques d un problème afin d en trouver une approximation de la meilleure solution. Elles peuvent être classées suivant leurs idéologies, on distingue ainsi les algorithmes mémétiques s inspirant souvent de la nature (algorithme de colonie de fourmis, de colonie d abeilles, évolutionniste, génétique,...). Ce chapitre a pour vocation de vous présenter notre approche visant à exploiter les méta-heuristiques des colonies d abeilles dans le contexte de SAT. Tout d abord, nous expliquons quelles sont les interactions que nous avons choisies chez les abeilles pour notre intégration au problème SAT. Après une explication sur le type de communication choisi au sein de notre méthode mémétique, nous discutons de chaque tâche à l intérieur de celle-ci. Pour finir, nous expliquons le déroulement de notre méthode ainsi que les travaux à effectuer pour aboutir à nos buts. Nous adaptons donc notre approche en mimant au mieux possible ces hyménoptères pour ainsi fournir un socle théorique solide guidant une parallélisation massive pour SAT. Signalons que ce chapitre n est pas un état de l art sur les colonies d abeilles. Ainsi, le lecteur intéressé pourra se référer à [BOT07] qui dispose d une liste complète des méta-heuristiques des colonies d abeilles puis à [KA09] proposant une analyse de divers algorithmes. 36

45 4.1 Une méta-heuristique massivement parallélisable Le choix du comportement à adopter 4.1. Une méta-heuristique massivement parallélisable Plusieurs comportements ont été étudiés et associés à l algorithmique dans la littérature, mimant chacun un aspect des colonies d abeilles, trois principales catégories sont apparues : le comportement des abeilles au niveau du butinage des fleurs (Foraging Behaviours) ; le comportement au niveau de leur reproduction (Mariage Behaviours) le concept de la reine des abeilles (Queen bee concept). Nous nous focalisons sur le premier aspect, les abeilles butineuses, qui comparé au problème SAT, comporte plusieurs similitudes. D un côté, une fleur à butiner peut être vue comme une interprétation partielle, étant une conjonction de littéraux, une telle interprétation est nommée un cube. Puis, d un autre côté, le travail effectué sur un cube par un solveur est attribué au rôle d une abeille butineuse : elle œuvre sur la fleur tout comme un solveur travaille sur un cube. A présent, nous allons étudier la communication dans notre méta-heuristique La communication Dans le but de construire un algorithme massivement parallèle avec un modèle de programmation DRAM, sur une architecture NoRMA. Nous comparons ici, la communication des abeilles de miel avec celle de l ordinateur : l échange de messages. Dans les études du monde vivant, une abeille communique à d autres abeilles des informations importantes sur les sources de nectar (les fleurs) via une chorégraphie appelée la danse frétillante des abeilles (Waggle Dance). Cette danse apporte trois grandes informations aux observateurs : Le temps de la danse correspond à la distance de la fleur ; L intensité du frétillement correspond à la quantité de nectar présent dans la fleur ; La direction de la danse par rapport au soleil correspond à la direction de la fleur. D une même manière, nos solveurs peuvent échanger des informations, grâce à de simples échanges de messages sur l avancée d une résolution en cours. Un solveur peut donc mimer le comportement d une abeille en incluant ses communications. Cela a l avantage d être parallélisable sur une grande échelle par nature, de plus, notre contrainte due à l architecture NoRMA d échanger des petits messages est respectée. Ainsi, après une telle danse, d autres abeilles vont aider à récupérer le nectar. Cette assistance peut être vue comme l ajout d un nouveau solveur sur le cube en question, d une manière concurrentielle et/ou collaborative. Dans la prochaine section, nous allons voir que les méta-heuristiques des colonies d abeilles butineuses sont affinées suivant leurs fonctionnalités Hiérarchie Les colonies d abeilles ont une hiérarchie graduelle permettant d attribuer une tâche bien précise à chaque abeille. Nous utiliserons donc ce modèle hiérarchique pour nos solveurs SAT. Comme pour les abeilles butineuses, distinguons tout d abord les solveurs avec mémoire contre ceux sans mémoire. 37

46 Chapitre 4. Une méta-heuristique des colonies d abeilles butineuses pour SAT Définition (Solveur avec mémoire, Solveur sans mémoire). Les solveurs avec mémoire possèdent un historique des tâches effectuées ainsi que d autres informations, cette mémoire est donc partagée, et chaque solveur la possédant peut accéder aux informations de la mémoire des autres. Cette mémoire, ayant un coût, même chez les abeilles, s associe donc à une population faible. Nous qualifierons ces solveurs d expérimentés. A l opposée, les solveurs sans mémoire n ont aucun souvenir de leur fait et geste. Avec Mémoire Sans Mémoire Solveur Scout (S) Solveur Scout Expérimenté (S E ) Solveur Recrut (R) Solveur Inspecteur Expérimenté (I E ) Solveur Butineur (B) Solveur Butineur Expérimenté (B E ) FIGURE 4.1 Hiérarchie des tâches de chaque solveur SAT inspirée des colonies d abeilles butineuses La figure 4.1 nous montre les spécificités de ces deux types de solveurs, ou chaque rôle a été fidèlement inspiré des abeilles. D un côté, les solveurs sans mémoire sont dissociés en trois catégories ayant chacune leur propre tâche et leur propre population. Nous les nommons solveurs scouts (S), recrus (R), et butineurs (B). Définition (Solveur Scout (S)). Un solveur scout a pour but de chercher des cubes dans le problème original le mieux possible : les cubes qu il qualifie de meilleurs par rapport à d autres cubes. La population des solveurs scout varie suivant la recherche, cela grâce à l association d une méta-heuristique propre à ce type de solveurs. Au début de la recherche, cette population est très élevée, par la suite, suivant la qualité de la recherche et des cubes déjà en jeu, elle diminue. Définition (Solveur Recrut (R)). Un solveur recrut est un solveur en attente d une danse frétillante : d une communication de la part d un autre solveur. Prêt à travailler dès qu il reçoit les informations nécessaires, il devient un solveur butineur. Au départ, un grand nombre de solveurs est en attente, la méta-heuristique associée a pour but de diminuer un maximum le nombre de solveurs recrus. Définition (Solveur Butineur (B)). Un solveur butineur exploite un cube, qu il a reçu de la part d un autre solveur. Via une méta-heuristique calculant la qualité de la recherche en cours, il peut effectuer trois actions : Si la qualité est faible ou nulle alors il devient un solveur recrut. Si la qualité est normale alors il reste solveur butineur puis continue la recherche. Si la qualité est élevée alors il communique à d autres solveurs le cube en question afin de faire travailler ces solveurs sur le même sous-problème. Un solveur butineur peut être de n importe quel type : recherche complète ou incomplète, solveur parallèle ou séquentiel. De plus, rappelons que lorsqu une communication active un tel solveur, il peut travailler en concurrence (sans changer le cube) ou collaborativement (en décidant de(s) nouveau(x) littéral(aux)). Remarque. Estimer la qualité d un cube, autrement dit, d une interprétation partielle pour SAT est un probléme difficile, une telle estimation est NP-Complet, le lecteur intéressé est invité à se reporter à l article [KSTW06a]. 38

47 4.2. Déroulement de l algorithme mémétique D un autre côté, nous avons les solveurs avec mémoire dits expérimentés, ils ont trois rôles possibles. Nous les nommons solveurs inspecteurs expérimentés (I E ), scouts expérimentés (S E ) et butineurs expérimentés (B E ). Définition (Solveur Inspecteur Expérimenté (I E ), Solveur Scout Expérimenté (S E ), Solveur Butineur Expérimenté (B E )). Ces solveurs ont donc une mémoire partagée permettant de s échanger des informations et de connaître l historique de chacun. Les solveurs inspecteurs expérimentés (I E ) contrôlent les cubes en cours de résolution, les communications (les danses frétillantes), puis met à jour la mémoire partagée. Les solveurs scouts expérimentés (S E ) trouvent de nouveaux cubes grâce à la mémoire partagée en vérifiant leur bonne qualité. Les solveurs butineurs expérimentés (B E )) résolvent les cubes qu ils évaluent être les meilleurs grâce à la mémoire partagée. La population de ces solveurs est réduite afin de ne pas encombrer le canal de communication. En effet, il ne s agit pas là du modèle de programmation DRAM mais d un modèle PRAM, nous l intégrerons dans notre méthode tout en minimisant la population des solveurs à mémoires. Chaque type de solveur devra être associé à une heuristique spécifique à leur tâche. Une métaheuristique globale gérera les populations de chaque solveur comme nous pouvons en retrouver dans certains algorithmes sur les colonies d abeilles. La prochaine section présentera le déroulement de cette algorithme mémétique. 4.2 Déroulement de l algorithme mémétique La figure 4.2 représente une vue globale des tâches se produisant pendant la recherche, le but est alors d exploiter les meilleurs cubes afin de résoudre une instance SAT. Au début, seul les solveurs scouts travaillent en cherchant les meilleurs cubes (S sur la figure). Une fois quelques cubes trouvés, ce solveur va alors communiquer («danse pour rose» sur la figure) un cube à des solveurs recrus (R sur la figure), ils vont devenir des solveurs butineurs (B sur la figure) afin de résoudre le cube en question. Le solveur inspecteur expérimenté (I E sur la figure) met à jour la mémoire partagée tandis que le solveur scout expérimenté (S E sur la figure) essaye de trouver de meilleurs cubes. Par la suite, un solveur butineur expérimenté (B E sur la figure) travaille sur le meilleur cube (la tulipe sur la figure). Plus la recherche avance, plus les populations changent suivant des heuristiques, si la recherche est fructueuse, la présence de solveurs scouts sera diminuée. A l inverse, quand l état de la recherche se dégrade, une augmentation des solveurs scouts essayera de débloquer la situation. Cette tâche sera accordée au solveur inspecteur. Nos travaux se concentrent essentiellement sur la création d un tel solveur scout : ce qui nous amène à la conclusion de ce chapitre. 39

48 Chapitre 4. Une méta-heuristique des colonies d abeilles butineuses pour SAT FIGURE 4.2 Déroulement de l algorithme mémétique 4.3 Conclusion L algorithme de colonie d abeilles adapté à SAT précédemment énoncé comporte de nombreuses tâches qui demandent une bonne organisation des solveurs. Nous avons décidé de commencer par la création d un solveur scout. Ce solveur générera ainsi les cubes nécessaires au bon fonctionnement de notre algorithme mémétique. La qualité de ces cubes est importante : si les cubes sont tous insatifiables pour une instance satisfiable, c est que nous avons généré de mauvais cubes. Estimer la qualité d un cube est autant difficile que de résoudre l instance initiale. Pour cela, nous avons étudié dans le chapitre 3, les méthodes de Monte-Carlo ainsi qu une méthode permettant de traiter le dilemme exploitation/exploration : UCT. Nous avons adapté UCT afin de créer des cubes pour SAT : ceci sera notre solveur scout. Nous estimerons donc la qualité des cubes pendant leur création pour guider la recherche. Le prochain chapitre expliquera en détail cette création du cube, dans la suite de ce manuscrit, des expérimentations vérifieront la qualité de ces cubes. 40

49 Chapitre 5 Une adaptation d UCT pour SAT : l algorithme SCOUT Sommaire 5.1 Le choix d UCT pour générer des cubes Description de l algorithme SCOUT La descente La descente : Les valeurs UCB La descente : la création de nouveaux fils La descente : les conflits et littéraux déjà affectés La sélection La simulation La remontée La récupération des cubes Conclusion LE PRÉCÉDENT CHAPITRE donne une vision précise de l adaptation d un algorithme mémétique reposant sur les abeilles butineuses dans le cadre de SAT. Il se conclut par le besoin de créer un programme possédant la spécificité de générer des cubes afin de suivre le comportement d une abeille butineuse de type scout. Un tel programme doit donc faire une recherche arborescente, afin de trouver plusieurs interprétations partielles en SAT. De plus, les cubes générés doivent être meilleurs que d autres : le but est d avoir beaucoup de cubes satisfiables dans un temps correct pour une instance satisfaisable puis de les différencier avec un critère donné afin de les ordonner. Nous avons donc implémenté une nouvelle méthode de création des cubes pour SAT que nous nommons SCOUT pour sa représentation d une abeille scout. Deux méthodes de la littérature peuvent nous donner des idées sur la conception algorithmique d un tel programme : elles ont été étudiées dans notre état de l art au chapitre 2. La première est la méthode collaborative appelée chemin de guidage (Guiding path) qui joue avec des interprétations partielles afin de distribuer la recherche sur les nœuds de calculs. La deuxième, nommée Cube And Conquer (CC) génère des cubes exactement comme nous pourrions le souhaiter à un petit détail près, elle n obtient pas d ordre sur les cubes permettant de savoir si les cubes générés sont plus ou moins utiles. 41

50 Chapitre 5. Une adaptation d UCT pour SAT : l algorithme SCOUT Nous allons tout d abord expliquer le choix d UCT afin de générer des cubes. Après une description sur la structure des nœuds utilisée dans SCOUT, nous expliquerons, étape par étape, l algorithme qui en découle avec ses subtilités. Par la suite, nous parlerons des heuristiques utilisables dans notre algorithme et celles implémentées. Pour finir, nous conclurons et étudierons les améliorations possibles. 5.1 Le choix d UCT pour générer des cubes Dans l optique de choisir les meilleurs cubes dans un arbre de recherche, nous avons été confronté au dilemme exploitation/exploration : faut-il exploiter un cube déjà considéré comme bon en lui rajoutant des littéraux ou retenter notre chance avec un nouveau cube. Récemment, la naissance d un algorithme pour les jeux à deux joueurs nommé UCT traite ce problème : exploiter un état de la partie qui semble être bon, ou explorer d autres états moins bons. Ce dilemme est très connu en intelligence artificielle, il a été abordé ainsi que l algorithme UCT dans le chapitre 3. Cet algorithme a prouvé son efficacité en permettant pour la première fois à une intelligence artificielle de battre un joueur humain professionnel dans le jeu de Go. Néanmoins, UCT a le besoin de faire une simulation difficilement adaptable à SAT. Cependant, deux raisons essentielles nous ont poussées à choisir UCT afin de l adapter à notre recherche de cubes par un solveur scout. La première est qu il est capable de traiter d une manière efficace le dilemme exploration/exploitation que nous retrouvons au niveau de la création des cubes. La deuxième raison vient du fait que l algorithme UCT est utilisé dans des problèmes possédant un immense arbre de recherche, comme c est le cas pour le problème SAT. 5.2 Description de l algorithme SCOUT Tout d abord, distinguons un fait primordial à la compréhension de notre méthode SCOUT : nous avons deux arbres de recherche différents en coopération. Le premier, est celui associé à un solveur SAT pouvant revenir à la racine de son arbre binaire, via un redémarrage. Le second est notre arbre n-aire de recherche représentant un UCT modifié pour SAT : il représente la fouille de cubes dans notre algorithme SCOUT. Ces deux arbres sont étroitement liés via les cubes : celui représentant UCT les garde en mémoire tandis que le solveur SAT les simule. Dans la suite de ce manuscrit, quand aucune précision n est apportée sur la nature de l arbre, nous considérons que nous parlons de l arbre n-aire représentant UCT. Comme pour la méthode UCT, notre algorithme se divise en quatre étapes, vues au chapitre 3 : la descente, la sélection, la simulation et la remontée (figure 3.2). Ces étapes sont réitérées dans cet ordre à plusieurs reprises suivant le nombre d itérations UCT que nous désirons appliquer. Chacune de ces étapes a été adaptée avec un solveur SAT afin de générer les cubes demandés. Après quelques informations globales sur la structure de données à l intérieur de SCOUT, nous allons adapter l algorithme UCT au problème SAT pour ces quatre étapes. Les nœuds de notre arbre, excepté la racine, contiennent distinctement trois informations essentielles : la première est un littéral de la formule propositionnelle tandis que les deux autres proviennent de l algorithme UCT : la moyenne pondérée du nœud par rapport à ses fils (average) et le nombre de passages dans ce nœud par UCT (passing). L attribut average est une valeur compris entre 0 et 1 exprimant la qualité d un cube. En plus de ces attributs, chaque nœud possède deux méthodes utilisées dans l étape de descente : calculucb() et calculucbspéciale(). Ces deux méthodes sont expliquées dans les prochaines sous-sections. Par contre, le nœud racine possède uniquement les attributs average et passing, ainsi qu une seule méthode : calculucb(). En effet, la racine n est associé à aucun littéral. De ce fait, certaines fonctionnalités et informations ne sont pas utiles. La figure 5.1 représente un aperçu de 42

51 5.2. Description de l algorithme SCOUT notre arbre ainsi que la structure des nœuds après plusieurs itérations UCT. FIGURE 5.1 Structure des nœuds dans notre algorithme SCOUT. Contrairement à l algorithme UCT de base qui considère l ensemble des états atteignables à chaque ouverture de nœud (il crée donc potentiellement autant de noeuds que d états atteignables), notre algorithme ne considère qu une seule une variable x lors de l ajout d un noeud et crée deux fils. L un représente le littéral x et l autre, son opposé x. Cette solution a été choisie afin de limiter l explosion de la taille de l arbre considéré, nous l expliquons en détail dans l étape de la sélection. Le fait que l arbre soit n-aire provient de la descente qui peut choisir un nœud contenant déjà des fils, la section nous explique en détail ce phénomène. À présent, nous allons expliquer avec minutie chaque étape La descente Algorithme 5 :descentescoutv1(r) Données : R la racine de l arbre SCOUT Résultat : Le nœud utilisé pour l étape de la sélection 1 Début 2 tant quepossèdefils(r) faire 3 simaxucbspéciale(r) alors 4 retourner R; 5 SolveurSATdécide(R); 6 R filmaxucb(r); 7 passing(r) passing(r)+ 1; 8 retournerr; 9 Fin La première étape provenant d UCT a pour but de descendre dans l arbre de recherche en choisissant pour chaque nœud parcouru, la branche maximisant les valeurs UCB de ses fils (via calculucb()) ou la valeur UCB spéciale (via calculucbspéciale()). L algorithme 5 représente une première version de la descente que nous affinerons dans la suite de ce manuscrit. Tant que le nœud courant n est pas une feuille (ligne 2), l algorithme descend dans le fils possédant la valeur UCB (calculucb()) la 43

52 Chapitre 5. Une adaptation d UCT pour SAT : l algorithme SCOUT plus grande (ligne 6). Nous avons deux cas d arrêts dont un dans cette boucle. Ce premier, nous dit que si la valeur UCB spéciale est plus grande que les valeurs UCB des fils (ligne3), alors nous retournons le nœud en cours. Tandis que le second arrive une fois que nous sommes arrivés sur une feuille de l arbre. A chaque fois que nous descendons dans un nœud, un solveur SAT associé à notre algorithme SCOUT affecte comme variable de décision le littéral en question (ligne 5) et effectue aussi les propagations unitaires possibles. À présent, nous allons voir sur un exemple concret ces deux cas d arrêts via la figure 5.2. (a) Arrêt normal (b) Arrêt via la valeur UCB spécial FIGURE 5.2 La descente dans notre algorithme SCOUT Exemple. Cette figure se décompose en deux sous-figures : à gauche (sous-figure 5.2a), nous retrouvons le retour normal (ligne 15 de l algorithme 5) tandis que sur notre droite (sous-figure 5.2b), nous avons le retour à l intérieur de la boucle (ligne 4). La première sous-figure (sous-figure 5.2a) nous montre une situation où la valeur UCB spéciale n est jamais plus grande que les valeurs UCB des fils. Sur la sous-figure de gauche, nous comparons la valeur UCB spéciale (0.106) avec les valeurs UCB des fils (0.113,0.112,0.115,0.126,0.090,0.106) de la racine. La plus grande valeur étant celle du nœud possédant le littéral x 2 (0.126), nous réitérons la descente sur ce nœud qui n est pas une feuille. Itérativement, nous continuons de descendre dans les nœuds représentés par les littéraux x 6, x 3 et x 5. Ce dernier étant une feuille, la descente renvoie ce nœud. Pendant cette descente, le solveur SAT associé effectue donc les décisions suivantes x 2,x 6,x 3 et x 5. 44

53 5.2. Description de l algorithme SCOUT La seconde sous-figure (sous-figure 5.2b) nous montre le cas d arrêt via la valeur UCB spéciale. Comme précédemment, la plus grande valeur est celle du nœud x 2 (0.126), nous suivons donc ce dernier. Par la suite, nous comparons la valeur UCB spéciale (0.312) avec les valeurs UCB des fils (0.712,0.678) du nœud x 2. Le nœud représentant le littéral x 6 (0.712) est donc choisi. Toujours de la même manière, nous comparons la valeur UCB spéciale du littéral x 6 (0,950) avec les valeurs UCB de ses fils (0.878,0.700). Cette fois-ci, c est la valeur UCB spéciale qui est la maximale. L algorithme renvoie donc le nœud représenté par le littéralx 6. De plus, le solveur SAT associé effectue donc les décisions suivantes x 2 et x 6. La valeur UCB spéciale permet de générer des arbres n-aires car elle arrête la descente sur un nœud qui en contient déjà des fils. Nous en reparlerons dans la section La descente : Les valeurs UCB Pour bien comprendre UCB dans SCOUT, nous ne parlerons pas dans cette sous-section des valeurs UCB spéciales (5.2.3). Nous choisissons de calculer les valeurs UCB des fils via une adaptation de l équation 3.1. Ce calcul est réalisé par la méthode calculucb. Nous avons choisi l adaptation suivante. Lorsquepassing > 0, l indice UCB associé au nœud i est : UCB i = average i } {{ } Terme Exploitation + K ln(passing pere(i) ) } passing i {{ } Terme Exploration (5.1) Nous avons réglé la valeur K à 0.009, ce réglage est dû à la moyenne choisie ainsi qu à la nature du problème pour un nœud. Or, chaque nœud a des fils qui différent, représentant donc des problèmes distincts. Chaque nœud devrait calculer les valeurs UCB de ses fils avec son propre réglage K. Autrement dit, il ne faut pas que K diffère suivant les fils d un père, mais qu il se distingue par rapport au nœud choisi lors de la descente. FIGURE 5.3 Calcul des valeurs UCB dans SCOUT Exemple. La figure 5.3 représente le choix de la branche à choisir pour descendre dans l arbre : le nœud qui a le plus grand UCB. Pour chaque filsidu nœud racine, la valeur UCB i est calculée suivant ce tableau en prenant K à De plus,passing pere(i) = 50 est le nombre d itérations UCT à cet instant. 45

54 Chapitre 5. Une adaptation d UCT pour SAT : l algorithme SCOUT Littéral passing average Terme Exploration UCB i x , , x , , x , , x , , x , , x , , Nous remarquons que le terme exploration varie principalement en fonction de passing et de la variable K : plus passing est élevé, plus le terme exploration devient petit. De même, plus le nombre d itérations UCT est grand, plus ce même terme diminue, cela permet de tendre pendant la recherche vers une exploration nulle. Dans notre exemple, la variable K est trop petite, elle devrait s ajuster dynamiquement suivant l écart des moyennes. Une variable K mal réglée nous donne un terme d exploration trop petit pour avoir un impact sur la recherche. Cette valeur devrait donc dans l idéal s adapter dynamiquement. Nous reparlerons de ce réglage dans le chapitre La descente : la création de nouveaux fils L étape de la descente peut nous renvoyer un nœud pour la sélection dans deux situations différentes. Rappelons que pour chaque nœud, nous descendons dans le fils ayant la plus grande valeur UCB associée, ou nous sélectionnons la valeur UCB spéciale. Cette valeur spéciale représente un autre dilemme exploration/exploitation et est calculée par la méthodecalculucbspéciale(). L étape de la descente peut s arrêter si la valeur UCB spéciale est plus grande que celle des fils. Remarquons que même la racine peut calculer cette valeur UCB spéciale via la méthode calculucbspéciale(). L idée derrière cette fonctionnalité est de pouvoir diversifier les cubes. On peut à présent créer dans notre arbre un nouveau cube qui commence par un littéral différent : sans cette valeur UCB spéciale, cela n est pas possible. Cet ajout permet d avoir un arbre n-aire car il crée lors de l étape de la sélection des fils sur un nœud qui en contient déjà. Nous voulons beaucoup de cubes, qui se ressemblent le moins possible. Et nous voulons éviter le plus possible d avoir des cubes inclus dans d autres, ce que nous appellerons sous-cubes par la suite. Le dilemme n est plus le même : faut-il ajouter à un nœud des nouveaux fils (pour explorer) ou exploiter ceux déjà présents? Nous adaptons l équation 3.1 pour calculer la valeur UCB spéciale. Nous ne considérons plus le nombre de passages dans le nœud (passing) mais le nombre de fils que nous avons. Moins nous avons de fils, plus la valeur UCB spéciale sera grande, augmentant alors la possibilité d explorer. UCB special i = average i } {{ } Terme Exploitation ln(passingi ) + K } {{ nbfils } Terme Exploration (5.2) Notons tout de même que cette UCB spéciale a dû être multipliée par une constante afin de l associer aux autres valeurs UCB. Retenons que pour un nœud, nous calculons donc les valeurs UCB de ses fils puis la valeur UCB spéciale de ce nœud pour récupérer la valeur qui maximise toutes les autres. Si la valeur maximale appartient à un fils, nous descendons dans ce fils, sinon nous nous arrêtons sur ce nœud pour passer à l étape de la sélection. 46

55 5.2. Description de l algorithme SCOUT Algorithme 6 :descentescoutv2(r) Données : R la racine de l arbre SCOUT Résultat : Le nœud utilisé pour l étape de la sélection 1 Début 2 tant quepossèdefils(r) faire 3 simaxucbspéciale(r) alors 4 retourner R; 5 SolveurSATdécide(R); 6 F filmaxucb(r); 7 siestconflit(f) oudéjàaffectévaleuropposée(f) alors 8 supprime(f); 9 remontée(r); 10 return NULL; 11 sidéjàaffectémêmevaleur(f) alors 12 supprime( F); 13 passing(r) passing(r)+ 1; 14 R F; 15 retournerr; 16 Fin La descente : les conflits et littéraux déjà affectés L algorithme 6 ajoute des cas particuliers à l algorithme général 5. Tout d abord, le solveur associé redémarre en gardant les clauses apprises : il est donc à la racine de son arbre de recherche et n a encore décidé d aucun littéral. Rappelons qu à chaque descente dans l arbre, le solveur SAT associé effectue des points de choix (variables de décisions associés au nœuds choisis) et les propagations unitaires qui en résulte. A partir de là, plusieurs cas peuvent survenir : Un conflit survient ; Le solveur essaie d affecter un littéral qui l est déjà ; Aucun des deux cas précédents ne survient, et le solveur SAT se retrouve dans un état fixe, tel qu il le serait avant un point de choix. FIGURE 5.4 Conflit ou littéral déjà affecté à une valeur opposée lors de la descente dans notre algorithme SCOUT Dans le cas d un conflit, le solveur SAT analyse ce dernier et apprend une nouvelle clause. De plus, nous élaguons simplement le nœud en question dans l arbre UCB (figure 5.4 et ligne 7 de l algorithme). 47

56 Chapitre 5. Une adaptation d UCT pour SAT : l algorithme SCOUT En effet, ce nœud amenant à un conflit génère un cube inutile car inconsistant. De plus, nous remontons alors les poids de l arbre UCB comme dans l étape de la remontée (sous-section 5.2.7). Par la suite, nous passons simplement à une nouvelle itération UCT. Si un littéral est déjà affecté, nous avons deux situations possibles : soit ce littéral est affecté à une valeur égale à celle présente dans notre arbre, soit à son opposé. FIGURE 5.5 Littéral déjà affecté lors de la descente dans notre algorithme SCOUT Dans le premier cas, nous élaguons simplement le nœud représentant le littéral opposé dans le même niveau de l arbre s il est présent (figure 5.5 et ligne 11 de l algorithme). Dans le second cas, nous élaguons ce nœud comme pour un conflit (figure 5.4 et ligne 7 de l algorithme), puis nous faisons une remontée des poids. En réalisant ce traitement, nous nous assurons de ne pas retomber sur ce même nœud à la prochaine itération UCT. Rappelons que dans les cas où nous supprimons un nœud, nous redémarrons le solveur et notre algorithme, cela correspond respectivement à un redémarrage à la racine de l arbre binaire pour le solveur en gardant les clauses apprises et au passage de la prochaine itération UCT pour notre algorithme SCOUT. Il en va de soi que lorsque nous élaguons un tel nœud, nous supprimons récursivement tous ses descendants. Une amélioration possible est de ne pas remonter le poids des nœuds. Ce fait nous permet de ne pas revenir à la racine de notre arbre mais de continuer à choisir un autre littéral pour descendre. On accorderait alors à une itération UCT de faire son travail complètement afin de passer à l étape de la sélection. Cela sans devoir retourner au début d une itération UCT par la faute d un conflit ou d un littéral déjà affecté. On éviterait par là-même un travail inutile au solveur en supprimant le redémarrage de ce dernier. En contrepartie, la descente serait quelque peu faussée, car les poids n auraient pas été mis à jour La sélection La figure 5.6 nous montre deux ajouts de nœuds différents : à gauche (sous-figure 5.6a), nous avons un ajout standard sur une feuille de l arbre tandis que sur la droite (sous-figure 5.6b), nous avons un ajout sur un nœud possédant déjà des fils. Ce dernier ajout est dû à notre valeur UCB spéciale calculée durant la descente. Cette figure montre la sélection d une variable suivant la descente représentée par la figure 5.2. Cette étape demande simplement au solveur SAT associé de lui fournir une nouvelle variable à ajouter dans l arbre UCB sur le nœud choisi. Nous avons choisi d utiliser l heuristique VSIDS utilisé par les démonstrateurs CDCL (sur l exemple de la figure 5.6, la variablex n a été choisie). Nous avons utilisé l heuristique VSIDS basée sur l activité des conflits, pour choisir la prochaine variable à ajouter lors de l étape de la sélection. Cette heuristique guide la recherche vers les conflits afin d essayer de se focaliser sur une partie difficile du problème. Nous espérons ainsi récolter des cubes les plus utiles possibles. En contrepartie, nous pouvons générer plus de conflits (voir figure 5.4) et réduire ainsi le nombre de cubes 48

57 5.2. Description de l algorithme SCOUT (a) Arrêt normal (b) Arrêt via la valeur UCB spécial FIGURE 5.6 La sélection dans notre algorithme SCOUT générés. Contrairement à nous, la méthode Cube And Conquer (CC) expliquée au chapitre 2 utilise une heuristique de type look-ahead : la variable choisie est celle produisant le plus de propagations unitaires. L utilisation d une telle heuristique est une de nos perspectives de travail La simulation La simulation a pour but de calculer la première valeur (average) au(x) nœud(s) venant d être sélectionné(s). Une telle simulation va donc être faite sur le cube représenté par les littéraux du chemin de la racine de l arbre à ce nœud. Elle doit évaluer la qualité de ce cube (plus le cube est supposé intéressant, plus la valeur average du noeud est proche de 1). Différents travaux ont été réalisés ces dernières années pour évaluer la taille d un arbre de recherche [KSTW06b]. Dans un premier temps, nous avons choisi pour première heuristique de simulation de prendre tout simplement le nombre de littéraux assignés au moment de la simulation d un cube. Elle a l avantage d être simple et rapide, mais a pour inconvénient majeur de n être pas assez précise sur la qualité d un tel cube. Les tests effectués avec cette heuristique, pourront servir de base dans le futur. Nous prévoyons des simulations en faisant appel à des solveurs en parallèle qui seront beaucoup plus précises. 49

58 Chapitre 5. Une adaptation d UCT pour SAT : l algorithme SCOUT FIGURE 5.7 La remontée dans notre algorithme SCOUT La remontée Lorsque un nœud a été créé, nous avons calculé la valeur average via la simulation expliquée dans la section précédente. Il nous faut maintenant propager cette valeur sur les nœuds ascendants, et ce, jusqu à la racine de l arbre UCT. Cela est schématisé dans la figure 5.7. Lors du choix de la variable x n, nous avons donc en règle générale deux nœudsx n et x n. Nous calculons alors une nouvelle valeuraverage pour x 5, puis x 3 et ainsi de suite jusqu à la racine (dans le cas où nous avons créé des nouveaux fils (voir section 5.2.3), le même processus est réalisé). 5.3 La récupération des cubes Une fois un bon nombre total d itérations UCT effectuées, nous trions les cubes via leur moyenne dans l arbre (average). Il existe de nombreuses méthodes dans la littérature pour récupérer les chemins de la racine aux feuilles dans un arbre n-aires. Plusieurs méthodes sur des arbres binaires sont représentées dans l article [MdWH14]. L algorithme 7 illustre notre méthode, elle se contente de prendre le cube contenant la meilleure moyenne (ligne 4 à 6) puis d effacer la feuille en question. Quand nous effaçons cette feuille, nous effaçons aussi récursivement ses ascendants quand ils deviennent des feuilles (ligne 8 à 11). Nous réitérons ce procédé afin de récupérer les cubes par rapport à leur moyenne. Nous obtenons donc notre ordre sur les interprétations partielles. 50

59 5.4. Conclusion Algorithme 7 :récupcube(r) Données : R la racine de l arbre Résultat : C l ensemble ordonné des cubes récupérés 1 Début 2 tant quepossèdefils(r) faire 3 N R; 4 tant quepossèdefils(n) faire 5 N filmaxuct(n); 6 C C récupcubefeuille(n); 7 P père(n); 8 tant quepossèdeunseulfils(p) faire 9 delete(n); 10 N P; 11 P père(p); 12 retournerc; 13 Fin 5.4 Conclusion Nous avons exposé une nouvelle méthode de construction de cubes pour SAT nommée SCOUT. Notre méthode a l originalité de s attaquer pour la première fois à ce problème en utilisant l algorithme UCT, qui tente de trouver un bon compromis entre l exploitation et l exploration. De plus, cette méthode a été faite dans le but de créer un solveur massivement parallèle grâce à l utilisation de méta-heuristique sur les colonies d abeilles butineuses. La méthode SCOUT respecte donc très bien son rôle. Par la suite, les cubes contenus dans notre arbre représenté par la méthode SCOUT seront encore plus affinés par des abeilles butineuses. Ces solveurs pourront améliorer la qualité de cet arbre (figure 5.8). FIGURE 5.8 Affinage de l arbre de SCOUT par un algorithme de colonie d abeilles 51

60 Chapitre 5. Une adaptation d UCT pour SAT : l algorithme SCOUT Beaucoup d améliorations sont possibles dans notre algorithme, notamment au niveau des heuristiques choisies. En effet, il est préférable de tester plusieurs heuristiques pour ainsi sélectionner la meilleure : cela est un but pour d autres projets. Une amélioration possible est de transformer notre méthode en utilisant la puissance de la parallélisation, afin d affiner les simulations faites dans SCOUT. Par ailleurs, il se trouve que les méta-heuristiques des colonies d abeilles n utilisent pas tous les cœurs au début de la recherche, ces cœurs pourraient donc servir à notre méthode SCOUT. La partie UCB de notre algorithme peut être grandement améliorée, en effet, nous verrons dans le chapitre suivant qu il est difficile de régler ces valeurs UCB, et qu un réglage statique ne suffit pas. La création des fils spéciaux hérite aussi ce problème car elle est basée sur une valeur de type UCB. Dans le chapitre suivant, nous allons voir les résultats des tests effectués sur notre méthode ainsi que quelques détails concernant l implémentation. 52

61 Chapitre 6 Résultats Sommaire 6.1 Le programme Expérience sur les variables des cubes Expérimentation Conclusion LE PROGRAMME nommé SCOUT a été développé en C++. Nous avons pris pour base le solveur MINISAT V2 [SE02] qui offre plusieurs avantages. Tout d abord, il est aussi développé en C++ simplifiant par la-même la mise en oeuvre. Très bien écrit et très bien documenté, il contient de plus toutes les fonctionnalités d un solveur moderne (propagation unitaire, VSIDS,...) utiles pour notre SCOUT. Malgré tout, notre programme est modulaire (héritage, interface...) et il est extrêmement facile d interfacer un autre solveur SAT dans la mesure où celui-ci est adapté pour évaluer une interprétation partielle. Tout d abord, nous exposerons notre programme et les interfaces utilisées. Ensuite, nous allons décrire les résultats d une expérience visant à savoir si nos cubes sont assez diversifiés. Puis, nous donnerons des informations sur les cubes (sous-cubes, temps de génération,...). Après avoir exposé des résultats basés sur sept instances, nous allons conclure ce chapitre. Nous avons sélectionné sept instances satisfiables issues de la compétition SAT 2013 pour nos expérimentations. Notre objectif est de tester les cubes créés par notre méthode SCOUT pour ces instances. Ces expérimentations permettront d avoir une idée sur la qualité des cubes. 6.1 Le programme Le programme SCOUT a été développé sur une interface nommée IMainSimulatorSolver et définie comme l union de deux interfaces : ISolver et ISimulator. La première définit les méthodes utiles au solveur SAT principal accompagnant la descente ainsi que la sélection de notre algorithme tandis que la seconde accompagne un solveur SAT permettant de simuler un cube. Par exemple, il est donc possible d adapter séparément un solveur de recherche locale afin de faire l étape de simulation et d utiliser un solveur standard pour les autres étapes, et vice-versa. Il faut tout de même programmer les interfaces en question. Comme nous l avons déjà dit, nous avons choisi d utiliser MINISAT. ldans cette étude expérimentale, nos tests sont uniquement basés sur l heuristique VSIDS pour le choix de variables lors de 53

62 Chapitre 6. Résultats la sélection et sur la propagation unitaire pour la simulation. Une fois que le programme a fini son exécution sur une instance donnée, un fichier.cubes portant le nom de l instance est créé. Ce fichier contient toutes les interprétations partielles générées dans un ordre suivant la moyenne (average) de chaque nœud de notre arbre de recherche SCOUT (voir section 5.3). La figure 6.1 représente un tel fichier dans lequel le nombre de la première ligne est le nombre de cubes. CUBES FIGURE 6.1 Fichier.cubes Pour pouvoir effectuer nos tests, nous avons modifié un solveur MINISAT afin de le rendre capable de charger un cube : une ligne d un fichier.cubes. Le solveur en question affecte les littéraux présents sur la ligne d un fichier.cubes donnée en paramètre et effectue aussi les propagations unitaires possibles. Le solveur affecte chaque littéral du cube en les considèrant comme des hypothèses, comme cela est fait en SAT incrémental [ALS13]. Une fois l ensemble des littéraux du cube affectés, le solveur se comporte comme un solveur classique. Afin de réaliser nos expérimentations, nous utilisons plusieurs programmes : Le programme SCOUT ; Un programme qui charge un cube afin de le résoudre ; Un programme comptant le nombre de sous-cubes dans un fichier.cubes ; Un programme comptant le nombre d occurrence des variables dans un fichier.cubes. 6.2 Expérience sur les variables des cubes Les figures 6.2, 6.3 et 6.4 nous montrent pour nos sept instances combien de fois chaque variable est apparue dans les cubes. Afin de mieux diversifier ces variables, nous avons augmenté la graine aléatoire de l heuristique VSIDS. Les résultats associés nous montrent alors une diversification convenable. En effet, la plupart des variables apparaissent que très peu de fois, et seul un petit pourcentage d entre elles apparraissent dans la majorité des cubes. Ceci est un peu moins vrai pour les instances 003 et aes641keyfind1. Le défaut de ces deux instances est dû au nombre de variables totales (respectivement 4128 et 596 variables) qui est petit par rapport aux autres instances. En effet, elles possèdent un petit nombre de variables mises en jeu dans les cubes (respectivement 23 et 69 variables). 54

63 6.2. Expérience sur les variables des cubes Apparitions 4830 Apparitions Variables (a) 003 : clauses et 4128 variables (b) aes641keyfind1 : 2632 clauses et 596 variables 69 Variables Apparitions 910 Apparitions Variables (c) bob12m06 : clauses et variables 205 Variables (d) pb20003lb03 : clauses et variables FIGURE 6.2 Nombre de variables dans les cubes (partie 1) 55

64 Chapitre 6. Résultats Apparitions 4041 Apparitions 4846 (a) pb30001lb00 : clauses et variables 607 Variables 345 Variables (b) pb30002lb06 : clauses et variables FIGURE 6.3 Nombre de variables dans les cubes (partie 2) Apparitions Variables FIGURE 6.4 Nombre de variables dans les cubes (partie 3) : UTI-20-5p1 : clauses et variables 6.3 Expérimentation A cause d un trop grand nombre de cubes (environ 5000 pour chaque instance), il est difficile de tester tous ces cubes sur un cluster car cela prendrait trop de temps. Nous avons donc choisi de limiter le nombre de cubes à tester. De ce fait, sur ces sept instances, nous avons testé les 100 meilleurs cubes puis 100 autres cubes répartis au hasard parmi les autres. Nous avons exécuté notre programme SCOUT sur 5000 itérations UCT, puis sur itérations UCT. Nous discuterons uniquement des tests effectués sur 5000 itérations UCT sachant que ceux sur 20000, nous apportent à peu près les mêmes résultats. Tout d abord, la figure 6.5 nous présente des informations sur la création des cubes effectuée par notre programme SCOUT. 56 la colonne «Cubes» présente le nombre de cubes générés tandis que la colonne «% de sous-cubes»

65 6.3. Expérimentation Instances Clauses Variables Cubes % sous-cubes UCB Conflits Fils Spéciaux Explore souvent aes641keyfind Bien bob12m Fait qu explorer pb30001lb Bien pb30002lb Bien pb20003lb Bien UTI205p Bien 70 7 FIGURE 6.5 Information sur la création des cubes. est le pourcentage du nombre de cubes étant sous-cubes parmi les cubes (un sous-cube est un cube inclus dans un autre). Un programme indépendant s occupe de vérifier ce pourcentage pour une instance donnée. Ce pourcentage est correct sauf pour l instance 003. En effet, les résultats de la section précédente ont montré que cette instance possède dans ces cubes, un trop petit nombre de variables mises en jeu. Les résultats de la colonne «% de sous-cubes» confirme les résultats de la section précédente. Par la suite, la colonne «UCB» nous dit si l arbre de cube généré par notre programme a été construit sur des valeurs UCB bien réglées. C est à dire, à quel point l étape de la descente préfère exploiter un cube de qualité ou explorer un autre cube moins bon. Pour avoir cette information, nous regardons l attribut passing de chaque nœud de l arbre. En effet, pour une profondeur donnée de l arbre, plus les attributs passing des nœuds sont égaux, plus nous explorons d autres cubes. Par contre, toujours pour une profondeur donnée, si l algorithme de l étape de la descente est toujours passée (passing) dans le même nœud, c est qu il n a fait qu exploiter ce nœud. Quand nous marquons «bien» dans une case de cette colonne, c est que les valeurs UCB sont bien réglées. Dans ce cas, l algorithme n explore ou n exploite jamais tous le temps un nœud, mais trouve un compromis. Nous pouvons donc conclure que deux instances ont un UCB mal réglé (003 et bob12m06). La colonne «Conflits» est le nombre total de conflits rencontrés, on peut remarquer qu il est assez faible. Cela est dû à l exploration qui empêche l heuristique VSIDS d appliquer correctement sa tâche (orienter la recherche vers les conflits). Le nombre de fois que nous ajoutons de nouveaux fils sur un nœud qui en possède déjà est le nombre de fils spéciaux de la dernière colonne : ce nombre est proportionnel à l exploration de la recherche. En effet, plus il est élevé, plus l arbre de recherche a été exploré plutôt qu exploité. À présent, la figure 6.6 nous montre les résultats des 200 cubes testés sur chaque instance. Instance NbCube SAT NbCube UNSAT NbCube TIMEOUT aes641keyfind bob12m pb30001lb pb30002lb pb20003lb UTI205p FIGURE 6.6 Résultat : Informations sur tous les cubes. Notons que le timeout est de deux heures et rappelons que ces sept instances proviennent de la com- 57

66 Chapitre 6. Résultats pétition SAT Nous avons donc quatre instances sur les sept qui nous ont donné des cubes satisfiables parmi les 200 cubes choisis. Ces résultats pourront être comparés avec de futures versions de notre programme : d autres heuristiques. Ne ne pouvons pas comparer ces résultats avec d autres méthodes car notre méthode SCOUT n est pas un solveur SAT. Néanmoins, nous espérons avoir plus de cubes satisfiables en changeant les heuristiques. Pour nous donner une idée sur la qualité des cubes satisfiables, la figure 6.7 nous donne des informations sur les cubes satisfiables. Instance Moyenne Temps CPU Moyenne % Assigné Moyenne Taille 003.log s 0% 8.15 aes641keyfind bob12m pb30001lb s 9% pb30002lb s 0% 6 pb20003lb % 5.27 UTI205p FIGURE 6.7 Information sur les cubes uniquement satisfiables. La colonne «Moyenne Temps CPU» est le temps moyen CPU de la résolution des cubes satisfiables. La colonne «Moyenne % Assigné» est la moyenne des variables assignées des cubes satisfiables tandis que «Moyenne Taille» représente les longueurs en moyenne. Afin de se faire une idée plus précise sur la qualité des cubes, nous allons analyser le meilleur des cubes (en temps CPU) pour chaque instance. Instance Numéro Taille Assignement % Assignement Temps MINISAT Temps création Temps résolution % s 0.26s 62.22s aes641keyfind s 0.05s - bob12m TIME OUT 2h 7.71s - pb30001lb % 17.10s 22.56s 1.95s pb30002lb % 4.97s 12.4s 45.75s pb20003lb % 13.48s 4.81s 3.15s UTI205p s 11.21s - FIGURE 6.8 Informations sur le meilleur cube satisfiable uniquement. La figure 6.8 nous donne d autres informations. Si une instance ne possède aucun cube satisfiable sur les 200 testés, nous le signalons par un tiret. Le «Temps MINISAT» est présent à titre de comparaison, c est le temps de MINISAT sur l instance initiale. La colonne «Temps Création» est le temps de création des cubes sur l instance par notre programme SCOUT. La colonne «Temps Résolution» représente le temps de résolution du premier cube satisfiable. La colonne «Assignement» montre le nombre de variables assignées par le cube. En général, le meilleur cube ne rivalise pas avec MINISAT, sauf pour les instances pb20003lb03 et 003. Ces expériences sont un moyen de comparer les heuristiques de notre programme SCOUT dans le futur. La figure 6.9 s intéresse à l ordre des cubes. Nous espérons voir si les cubes satisfiables sont en majeure partie dans les 100 premiers cubes ou, au contraire, dans les 100 pris aléatoirement. Or, ces résultats nous montrent qu ils sont un peu partout. Une solution serait de faire des tests sur une plus grande quantité de cubes. 58

67 6.4. Conclusion 003.log : pb30001lb00 : 4660 pb30002lb06 : pb20003lb03 : FIGURE 6.9 Numéro des cubes satisfiables des instances en possédant. 6.4 Conclusion Nos résultats montrent que nos cubes sont assez diversifiés. Cela nous prouve que l adaptation de l algorithme UCT afin de générer des cubes pour SAT est fonctionnelle. Nous observons aussi que le calcul des valeurs UCB est mal réglé sur certaines instances. Une solution consisterait à calculer les valeurs UCB dynamiquement. Les tests sur la qualité des cubes nous montrent qu il est envisageable de faire une telle division de l arbre de recherche en SAT dans un cadre massivement parallèle. En effet, nous trouvons quelques cubes satisfiables dont certains d une bonne qualité, sans avoir testé tous les cubes d une instance mais seulement 200. De futures recherches permettront de tester différentes heuristiques et de faire une simulation plus précise des cubes. Rappelons que cette génération de cubes n est que la première brique de notre algorithme de colonie d abeilles adapté à SAT. Nous pouvons considérer que le solveur de type SCOUT est prêt à être utilisé dans notre algorithme mémétique. 59

68 Conclusion Les travaux réalisés durant ce stage concernent la mise en place d une approche massivement parallèle pour la résolution pratique du problème de satisfaisabilité de contraintes (SAT). Dans ce cadre, nous proposons un nouveau schéma de parallélisme basé sur un paradigme inspiré des colonies d abeilles. En effet, dans la nature, nous retrouvons de nombreuses situations où des tâches sont réalisées efficacement en collaboration (colonies de fourmis, colonies d abeilles,...). Après avoir introduit, dans les chapitres 1 à 3, les différents éléments nécessaires à la compréhension de ce manuscrit. Nous avons présenté dans les chapitres 4 et 5, nos contributions puis, dans le chapitre 6, des résultats expérimentaux préliminaires. La première contribution exposée dans ce rapport concerne une définition formelle d une instanciation de l algorithme mémétique des colonies d abeilles au cadre de la résolution parallèle du problème SAT. Nous avons constaté que ce schéma s adapte naturellement à la définition d une approche collaborative. En effet, nous avons pu voir qu il était possible de diviser la recherche d une solution de manière à assigner à chaque type d abeilles un travail bien spécifique : des abeilles pour la gestion des clauses apprises (le nectar), des abeilles pour une exploration collaborative (les abeilles scouts) et des abeilles pour la recherche concrète d une solution (les abeilles butineuses). Ce schéma algorithmique étant complexe, nous nous sommes dans un premier temps focalisés sur la mise en place des abeilles scouts. Ce type d abeilles a pour but d explorer l espace de recherche afin de trouver les parties intéressantes. Dans le cadre de SAT, cela consiste à la génération d un arbre de recherche incomplet où les chemins de la racine à une feuille représentent une conjonction de littéraux (aussi appelée cube), permettant la considération d un sous problème. Ici, nous avons principalement étudié la mise en place d une abeille scout pour la résolution d instances satisfiables, cette méthode est nommée SCOUT. Ainsi, le but du scout sera de générer des cubes conduisant à une solution. La génération d un tel cube est aussi difficile que de résoudre le problème initial. De ce fait, nous avons choisi de nous appuyer sur une méthode nommée UCT permettant de traiter le dilemme exploitation/exploration. En effet, dans l optique de choisir les meilleurs cubes dans un arbre de recherche, nous avons été confrontés à ce dilemme : faut-il exploiter un cube déjà considéré comme bon en lui rajoutant des littéraux ou retenter notre chance avec un nouveau cube. Les résultats exposées au chapitre 6 sur la méthode SCOUT nous montre qu une telle adaptation est envisageable dans le cadre de SAT. Nos contributions ouvrent de nombreuses perspectives, notamment au niveau des heuristiques choisies. En effet, il est préférable de tester plusieurs heuristiques pour ainsi sélectionner la meilleure. Notre programme est capable d adapter plusieurs solveurs pour les heuristiques. Une amélioration possible est de transformer notre méthode en utilisant la puissance de la parallélisation, afin d affiner les simulations faites dans SCOUT. Pour l instant, nous n utilisons pas une véritable simulation. Par ailleurs, il se trouve que les méta-heuristiques des colonies d abeilles n utilisent pas tous les cœurs au début de la recherche, 60

69 ces cœurs pourraient donc servir à notre méthode SCOUT. Nous pouvons donc utiliser un solveur pour faire la simulation. N oublions pas aussi que les abeilles continueront à travailler sur l arbre contenant les cubes créés par la méthode SCOUT via notre algorithme général sur les colonies d abeilles butineuses. La partie UCB de notre algorithme peut être grandement améliorée, en effet, ces valeurs UCB sont difficiles à régler : un réglage statique ne suffit pas. La création des fils spéciaux possède aussi ce problème car elle est basée sur une valeur de type UCB. Toutes ces améliorations s inscrivent dans un avenir proche. En effet, une thèse sur ce même sujet poursuivra la construction de notre méthode mémétique. Les problèmes alors rencontrés par les résultats nous ont permis d avancer dans cette construction. 61

70 Bibliographie [ABK13] M. AIGNER, A. BIERE, et C.M. KIRSCH. «Analysis of Portfolio-Style Parallel SAT Solving on Current Multi-Core Architectures». Dans Submitted, (document) [ACBF02] Peter AUER, Nicolò CESA-BIANCHI, et Paul FISCHER. «Finite-time Analysis of the Multiarmed Bandit Problem.». Machine Learning, 47(2-3) : , , 3.2, [ACBFS03] Peter AUER, Nicolo CESA-BIANCHI, Yoav FREUND, et Robert E. SCHAPIRE. «The Nonstochastic Multiarmed Bandit Problem». SIAM J. Comput., 32(1) :48 77, janvier [AHJ + 12] [ALMS11] [ALS13] Gilles AUDEMARD, Benoît HOESSEN, Saîd JABBOUR, Jean-Marie LAGNIEZ, et Cédric PIETTE. «PeneLoPe, a Parallel Clause-Freezer Solver». Dans Proceedings of SAT Challenge 2012 : Solver and Benchmarks Descriptions, pages 43 44, Lens, may https ://helda.helsinki.fi/handle/10138/ , Gilles AUDEMARD, Jean-Marie LAGNIEZ, Bertrand MAZURE, et Lakhdar SAIS. «On Freezing and Reactivating Learnt Clauses.». Dans Karem A. SAKALLAH et Laurent SIMON, éditeurs, SAT, volume 6695 de Lecture Notes in Computer Science, pages Springer, Gilles AUDEMARD, Jean-Marie LAGNIEZ, et Laurent SIMON. «Improving Glucose for Incremental SAT Solving ith Assumptions : Application to MUS Extraction» [AO10] Peter AUER et Ronald ORTNER. «UCB revisited : Improved regret bounds for the stochastic multi-armed bandit problem.». Periodica Mathematica Hungarica, 61(1-2) :55 65, [Bie08] Armin BIERE. «PicoSAT Essentials». Journal on Satisfiability, Boolean Modeling and Computation (JSAT), 4(2-4) :75 97, [Bie10] Armin BIERE. «Lingeling, Plingeling, PicoSAT and PrecoSAT at SAT Race 2010». Rapport technique, [BOT07] Adil BAYKASOGLU, Lale OZBAKIR, et Pinar TAPKAN. «Artificial Bee Colony Algorithm and Its Application to Generalized Assignment Problem». Dans Swarm Intelligence, Focus on Ant and Particle Swarm Optimization, FelixT.S.Chan and Manoj KumarTiwari (Ed.). InTech, DOI : /5101, [CM07] Pierre-Arnaud COQUELIN et Rémi MUNOS. «Bandit Algorithms for Tree Search». CoRR, abs/cs/ , [CM10] Antoine CORNUEJOLS et Laurent MICLET. Apprentissage artificiel : Concepts et algorithmes. Eyrolles, juin , [Coo71] Stephen A. COOK. «The Complexity of Theorem-proving Procedures». Dans Proceedings of the Third Annual ACM Symposium on Theory of Computing, STOC 71, pages , New York, NY, USA, ACM. (document),

71 [CSH08] Geoffrey CHU, Peter J. STUCKEY, et Aaron HARWOOD. «PMiniSAT : A Parallelization of MiniSAT 2.0». Rapport technique, [CTL06] CMAP, TAO, et LRI. «Programme MoGo : http ://senseis.xmp.net/?mogo», [DG97] Marco DORIGO et Luca Maria GAMBARDELLA. «Ant Colony System : A cooperative learning approach to the traveling salesman problem». IEEE TRANSACTIONS ON EVO- LUTIONARY COMPUTATION, (document) [Fly72] [GW06] Michael J. FLYNN. «Some Computer Organizations and Their Effectiveness». IEEE Trans. Comput., 21(9) : , septembre Sylvain GELLY et Yizao WANG. «Exploration exploitation in Go : UCT for Monte-Carlo Go». Dans NIPS : Neural Information Processing Systems Conference On-line trading of Exploration and Exploitation Workshop, Canada, décembre [Her03] Marc HERBSTRITT. «zchaff : Modifications and Extensions», [HKWB12] [HS09] [JLHS12] [JLU01] [Joh88] M. HEULE, O. KULLMANN, S. WIERINGA, et A. BIERE. «Cube and Conquer : Guiding CDCL SAT Solvers by Lookaheads» :50 65, Best paper award, reported 2011 too, now formally published. (document), 2.2, 2.3 Youssef HAMADI et Lakhdar SAIS. «ManySAT : a parallel SAT solver». JOURNAL ON SATISFIABILITY, BOOLEAN MODELING AND COMPUTATION (JSAT), 6, Saïd JABBOUR, Nadjib LAZAAR, Youssef HAMADI, et Michelle SEBAG. «Cooperation control in Parallel SAT Solving : a Multi-armed Bandit Approach». dec dans le cadre de NIPS Bernard JURKOWIAK, Chu Min LI, et Gil UTARD. «Parallelizing Satz Using Dynamic Workload Balancing». Dans In Proceedings of Workshop on Theory and Applications of Satisfiability Testing (SAT 2001, pages Elsevier Science Publishers, Eric E. JOHNSON. «Completing an MIMD Multiprocessor Taxonomy». SIGARCH Comput. Archit. News, 16(3) :44 47, juin [KA09] Dervis KARABOGA et Bahriye AKAY. «A survey : algorithms simulating bee swarm intelligence.». Artif. Intell. Rev., 31(1-4) :61 85, [KS06] Levente KOCSIS et Csaba SZEPESVÁRI. «Bandit Based Monte-carlo Planning». pages , , 8 [KSTW06a] Philip KILBY, John K. SLANEY, Sylvie THIÉBAUX, et Toby WALSH. «Estimating Search Tree Size.». Dans AAAI, pages AAAI Press, [KSTW06b] Philip KILBY, John K. SLANEY, Sylvie THIÉBAUX, et Toby WALSH. «Estimating Search Tree Size.». Dans AAAI, pages AAAI Press, [MdWH14] Sid MIJNDERS, Boris de WILDE, et Marijn HEULE. «Symbiosis of Search and Heuristics for Random 3-SAT». CoRR, abs/ , [PD07] Knot PIPATSRISAWAT et Adnan DARWICHE. «A Lightweight Component Caching Scheme for Satisfiability Solvers». Dans Proceedings of the 10th International Conference on Theory and Applications of Satisfiability Testing, SAT 07, pages , Berlin, Heidelberg, Springer-Verlag [Pey12] Rémi PEYRE. «Méthodes probabilistes pour la simulation» [PG09] Duc-Nghia PHAM et Charles GRETTON. «gnovelty+ (v. 2)». Dans SAT 2009 Competitive Events Booklet,

72 Bibliographie [PTGS08] [Rob52] [Rou12] [SBK01] [SE02] Duc Nghia PHAM, John THORNTON, Charles GRETTON, et Abdul SATTAR. «Combining Adaptive and Dynamic Local Search for Satisfiability». 4 : , July Herbert ROBBINS. «Some aspects of the sequential design of experiments». Bull. Amer. Math. Soc., 58(5) : , Olivier ROUSSEL. «ppfolio». http :// roussel/ppfolio/, Accessed May (document), Carsten SINZ, Wolfgang BLOCHINGER, et Wolfgang KÜCHLIN. «PaSAT - parallel SATchecking with lemma exchange : Implementation and applications». Dans LICS 2001 Workshop on Theory and Applications of Satisfiability Testing (SAT 2001), volume 9 of Electronic Notes in Discrete Mathematics. Elsevier Science Publishers, Niklas SÖRENSSON et Niklas EEN. «MiniSat v A SAT solver with conflict-clause minimization SAT-2005 Poster. 1 Perhaps under a generous notion of part-time, but still concurrently taking a statistics course and leading a normal life». Rapport technique, , 6 [SE08] Niklas SÖRENSSON et Niklas EÉN. «MiniSat 2.1 and MiniSat SAT Race 2008 Editions». Rapport technique, [Sen14] SENSEIS. «Jeu qui implémente UCT : http ://senseis.xmp.net/?uct» [Sil12] Sievers SILVAN. «Implementation of the UCT Algorithm for Dopp elkopf» [SS96] João P. Marques SILVA et Karem A. SAKALLAH. «GRASP&Mdash ;a New Search Algorithm for Satisfiability». Dans Proceedings of the 1996 IEEE/ACM International Conference on Computer-aided Design, ICCAD 96, pages , Washington, DC, USA, IEEE Computer Society [VS09] Pascal VANDER-SWALMEN. «Aspects parallèles des problèmes de satisfaisabilité», [ZB94] Hantao ZHANG et Maria Paola BONACINA. «Cumulating Search in a Distributed Computing Environment : A Case Study in Parallel Satisfiability». pages , [ZBP + 96] Hantao ZHANG, Maria Paola BONACINA, Maria PAOLA, BONACINA, et Jieh HSIANG. «PSATO : a Distributed Propositional Prover and Its Application to Quasigroup Problems». volume 21, pages ,

73 Résumé Le but de ce stage consiste tout d abord à étudier les méthodes de parallélisation du problème SAT et les algorithmes de types essaims d abeilles ou colonies de fourmis. Une fois cette étude faite, nous proposons une nouvelle approche de parallélisation du problème SAT basé (bien évidemment) sur les essaims d abeilles. Chaque abeille sera associée à un démonstrateur SAT (de type CDCL, recherche locale, look ahead..) et à chaque étape un certain nombre d informations seront échangées afin d améliorer les insectes pour l étape suivante. Nous proposons alors une méthodes représentant une abeille de type SCOUT permettant de générer des cubes pour SAT. On peut noter que cette approche peut être générique et appliquée à d autres paradigmes combinatoires comme les problèmes CSP, les pseudo booléens... Mots-clés: SAT parallèle, Algorithmes de Colonies d abeilles 65

74 66

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Parallélisme et Répartition

Parallélisme et Répartition Parallélisme et Répartition Master Info Françoise Baude Université de Nice Sophia-Antipolis UFR Sciences Département Informatique [email protected] web du cours : deptinfo.unice.fr/~baude Septembre 2009 Chapitre

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...

Plus en détail

Programmation Par Contraintes

Programmation Par Contraintes Programmation Par Contraintes Cours 2 - Arc-Consistance et autres amusettes David Savourey CNRS, École Polytechnique Séance 2 inspiré des cours de Philippe Baptiste, Ruslan Sadykov et de la thèse d Hadrien

Plus en détail

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall L utilisation d un réseau de neurones pour optimiser la gestion d un firewall Réza Assadi et Karim Khattar École Polytechnique de Montréal Le 1 mai 2002 Résumé Les réseaux de neurones sont utilisés dans

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Systèmes et traitement parallèles

Systèmes et traitement parallèles Systèmes et traitement parallèles Mohsine Eleuldj Département Génie Informatique, EMI [email protected] 1 Système et traitement parallèle Objectif Etude des architectures parallèles Programmation des applications

Plus en détail

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI. Facultés Universitaires Notre-Dame de la Paix, Namur Institut d Informatique Année académique 2003-2004 Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de

Plus en détail

VIII- Circuits séquentiels. Mémoires

VIII- Circuits séquentiels. Mémoires 1 VIII- Circuits séquentiels. Mémoires Maintenant le temps va intervenir. Nous avions déjà indiqué que la traversée d une porte ne se faisait pas instantanément et qu il fallait en tenir compte, notamment

Plus en détail

Modernisation et gestion de portefeuilles d applications bancaires

Modernisation et gestion de portefeuilles d applications bancaires Modernisation et gestion de portefeuilles d applications bancaires Principaux défis et facteurs de réussite Dans le cadre de leurs plans stratégiques à long terme, les banques cherchent à tirer profit

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Leçon 1 : Les principaux composants d un ordinateur

Leçon 1 : Les principaux composants d un ordinateur Chapitre 2 Architecture d un ordinateur Leçon 1 : Les principaux composants d un ordinateur Les objectifs : o Identifier les principaux composants d un micro-ordinateur. o Connaître les caractéristiques

Plus en détail

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2) Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter

Plus en détail

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1 INF6500 : Structures des ordinateurs Sylvain Martel - INF6500 1 Cours 4 : Multiprocesseurs Sylvain Martel - INF6500 2 Multiprocesseurs Type SISD SIMD MIMD Communication Shared memory Message-passing Groupe

Plus en détail

Programmation par contraintes. Laurent Beaudou

Programmation par contraintes. Laurent Beaudou Programmation par contraintes Laurent Beaudou On se trouve où? Un problème, une solution : la solution est-elle une solution du problème? simulation, vérification 2 On se trouve où? Un problème, une solution

Plus en détail

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique Architecture d ordinateur : introduction Dimitri Galayko Introduction à l informatique, cours 1 partie 2 Septembre 2014 Association d interrupteurs: fonctions arithmétiques élémentaires Elément «NON» Elément

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire 2008-2009. Gérard Verfaillie ONERA/DCSD/CD, Toulouse Gerard.Verfaillie@onera.

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire 2008-2009. Gérard Verfaillie ONERA/DCSD/CD, Toulouse Gerard.Verfaillie@onera. Cours Optimisation Partie Optimisation Combinatoire 3ième année ISAE Année scolaire 2008-2009 Gérard Verfaillie ONERA/DCSD/CD, Toulouse [email protected] Septembre 2008 Résumé Ce document couvre

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas [email protected] Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

Plus en détail

Stratégie de recherche adaptative en programmation par contrainte

Stratégie de recherche adaptative en programmation par contrainte Université Paul Sabatier École Nationale de l Aviation Civile Master 2 Recherche Informatique et Télécommunication parcours Intelligence Artificielle Simon Marchal Stratégie de recherche adaptative en

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 [email protected] PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Tests de performance du matériel

Tests de performance du matériel 3 Tests de performance du matériel Après toute la théorie du dernier chapitre, vous vous demandez certainement quelles sont les performances réelles de votre propre système. En fait, il y a plusieurs raisons

Plus en détail

Jean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux

Jean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux Colonies de fourmis Comment procèdent les colonies de fourmi pour déterminer un chemin presque géodésique de la fourmilière à un stock de nourriture? Les premières fourmis se déplacent au hasard. Les fourmis

Plus en détail

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1 Exemples de problèmes et d applications INF6953 Exemples de problèmes Sommaire Quelques domaines d application Quelques problèmes réels Allocation de fréquences dans les réseaux radio-mobiles Affectation

Plus en détail

TD n o 8 - Domain Name System (DNS)

TD n o 8 - Domain Name System (DNS) IUT Montpellier - Architecture (DU) V. Poupet TD n o 8 - Domain Name System (DNS) Dans ce TD nous allons nous intéresser au fonctionnement du Domain Name System (DNS), puis pour illustrer son fonctionnement,

Plus en détail

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de

Plus en détail

Gé nié Logiciél Livré Blanc

Gé nié Logiciél Livré Blanc Gé nié Logiciél Livré Blanc Version 0.2 26 Octobre 2011 Xavier Blanc [email protected] Partie I : Les Bases Sans donner des définitions trop rigoureuses, il faut bien commencer ce livre par énoncer

Plus en détail

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11) 1/ Généralités : Un ordinateur est un ensemble non exhaustif d éléments qui sert à traiter des informations (documents de bureautique, méls, sons, vidéos, programmes ) sous forme numérique. Il est en général

Plus en détail

Problèmes d ordonnancement dans les systèmes de production. Journée Automatique et Optimisation Université de Paris 12 20 Mars 2003

Problèmes d ordonnancement dans les systèmes de production. Journée Automatique et Optimisation Université de Paris 12 20 Mars 2003 Problèmes d ordonnancement dans les systèmes de production Michel Gourgand Université Blaise Pascal Clermont Ferrand LIMOS CNRS UMR 6158 1 Le LIMOS Laboratoire d Informatique, de Modélisation et d Optimisation

Plus en détail

UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES. THÈSE présentée par :

UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES. THÈSE présentée par : UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES Laboratoire d Informatique Fondamentale d Orléans THÈSE présentée par : Hélène COULLON

Plus en détail

Intelligence Artificielle Planification

Intelligence Artificielle Planification Intelligence Artificielle Planification Bruno Bouzy http://web.mi.parisdescartes.fr/~bouzy [email protected] Licence 3 Informatique UFR Mathématiques et Informatique Université Paris Descartes

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Nom de l application

Nom de l application Ministère de l Enseignement Supérieur et de la Recherche Scientifique Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Gafsa Département Technologies de l Informatique

Plus en détail

AXES DE RECHERCHE - DOMAINE D'INTERET MAJEUR LOGICIELS ET SYSTEMES COMPLEXES

AXES DE RECHERCHE - DOMAINE D'INTERET MAJEUR LOGICIELS ET SYSTEMES COMPLEXES 1 AXES DE RECHERCHE - DOMAINE D'INTERET MAJEUR LOGICIELS ET SYSTEMES COMPLEXES 2 Axes de recherche L activité du DIM LSC concerne la méthodologie de la conception et le développement de systèmes à forte

Plus en détail

Programmation parallèle et distribuée (Master 1 Info 2015-2016)

Programmation parallèle et distribuée (Master 1 Info 2015-2016) Programmation parallèle et distribuée (Master 1 Info 2015-2016) Hadoop MapReduce et HDFS Note bibliographique : ce cours est largement inspiré par le cours de Benjamin Renaut (Tokidev SAS) Introduction

Plus en détail

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7 PROCÉDURE D INSTALLATION Cegid Business V9 COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7 Sommaire 1. Introduction 2. Installation de SQL Server 2005 ou 2008 3. Installation de Cegid Business

Plus en détail

Chapitre 1 Qu est-ce qu une expression régulière?

Chapitre 1 Qu est-ce qu une expression régulière? Chapitre 1 Qu est-ce qu une expression régulière? Les ordinateurs n ont pas du tout la même conception des textes que nous : pour nous, un texte est un ensemble d idées couchées sur papier. Nous nous en

Plus en détail

«clustering» et «load balancing» avec Zope et ZEO

«clustering» et «load balancing» avec Zope et ZEO IN53 Printemps 2003 «clustering» et «load balancing» avec Zope et ZEO Professeur : M. Mignot Etudiants : Boureliou Sylvain et Meyer Pierre Sommaire Introduction...3 1. Présentation générale de ZEO...4

Plus en détail

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique NOM DE L'UE : Algorithmique et programmation C++ LICENCE INFORMATIQUE Non Alt Alt S1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques) MASTER INFORMATIQUE Non

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Utilisation des tableaux sémantiques dans les logiques de description

Utilisation des tableaux sémantiques dans les logiques de description Utilisation des tableaux sémantiques dans les logiques de description IFT6281 Web Sémantique Jacques Bergeron Département d informatique et de recherche opérationnelle Université de Montréal [email protected]

Plus en détail

Apprentissage par renforcement (1a/3)

Apprentissage par renforcement (1a/3) Apprentissage par renforcement (1a/3) Bruno Bouzy 23 septembre 2014 Ce document est le chapitre «Apprentissage par renforcement» du cours d apprentissage automatique donné aux étudiants de Master MI, parcours

Plus en détail

Système de stockage IBM XIV Storage System Description technique

Système de stockage IBM XIV Storage System Description technique Système de stockage IBM XIV Storage System Description technique Système de stockage IBM XIV Storage System Le stockage réinventé Performance Le système IBM XIV Storage System constitue une solution de

Plus en détail

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme? Exercices Alternatifs Quelqu un aurait-il vu passer un polynôme? c 2004 Frédéric Le Roux, François Béguin (copyleft LDL : Licence pour Documents Libres). Sources et figures: polynome-lagrange/. Version

Plus en détail

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme? Exercices Alternatifs Quelqu un aurait-il vu passer un polynôme? c 2004 Frédéric Le Roux, François Béguin (copyleft LDL : Licence pour Documents Libres). Sources et figures: polynome-lagrange/. Version

Plus en détail

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique DOMAINE P3.C3.D1. Pratiquer une démarche scientifique et technologique, résoudre des

Plus en détail

La surveillance réseau des Clouds privés

La surveillance réseau des Clouds privés La surveillance réseau des Clouds privés Livre blanc Auteurs : Dirk Paessler, CEO de Paessler AG Gerald Schoch, Rédactrice technique de Paessler AG Publication : Mai 2011 Mise à jour : Février 2015 PAGE

Plus en détail

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service 10 tâches d administration simplifiées grâce à Windows Server 2008 R2 Faire plus avec moins. C est l obsession depuis plusieurs années de tous les administrateurs de serveurs mais cette quête prend encore

Plus en détail

Cryptographie et fonctions à sens unique

Cryptographie et fonctions à sens unique Cryptographie et fonctions à sens unique Pierre Rouchon Centre Automatique et Systèmes Mines ParisTech [email protected] Octobre 2012 P.Rouchon (Mines ParisTech) Cryptographie et fonctions

Plus en détail

Introduction à la méthodologie de la recherche

Introduction à la méthodologie de la recherche MASTER DE RECHERCHE Relations Économiques Internationales 2006-2007 Introduction à la méthodologie de la recherche [email protected] Les Etapes de la Recherche Les étapes de la démarche Etape

Plus en détail

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG Exploitations pédagogiques du tableur en STG Académie de Créteil 2006 1 EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG Commission inter-irem lycées techniques contact : [email protected] La maquette

Plus en détail

THÈSE. Pour obtenir le grade de. Spécialité : Informatique. Arrêté ministériel : 7 août 2006. Présentée et soutenue publiquement par.

THÈSE. Pour obtenir le grade de. Spécialité : Informatique. Arrêté ministériel : 7 août 2006. Présentée et soutenue publiquement par. THÈSE Pour obtenir le grade de DOCTEUR DE L UNIVERSITÉ DE GRENOBLE Spécialité : Informatique Arrêté ministériel : 7 août 2006 Présentée et soutenue publiquement par Fabien GAUD le 02 Décembre 2010 ÉTUDE

Plus en détail

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

Multiprogrammation parallèle générique des méthodes de décomposition de domaine Multiprogrammation parallèle générique des méthodes de décomposition de domaine Andréa Schwertner-Charão To cite this version: Andréa Schwertner-Charão. Multiprogrammation parallèle générique des méthodes

Plus en détail

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar [email protected]

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar bbm@badr-benmammar.com Intelligence Artificielle et Systèmes Multi-Agents Badr Benmammar [email protected] Plan La première partie : L intelligence artificielle (IA) Définition de l intelligence artificielle (IA) Domaines

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

À qui s adresse cet ouvrage?

À qui s adresse cet ouvrage? Introduction Bienvenue dans le Guide de l administrateur de Microsoft Windows Server 2008. En tant qu auteur de plus de 65 livres, j écris des ouvrages professionnels sur la technologie depuis 1994. Au

Plus en détail

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL J. TICHON(1) (2), J.-M. TOULOTTE(1), G. TREHOU (1), H. DE ROP (2) 1. INTRODUCTION Notre objectif est de réaliser des systèmes de communication

Plus en détail

Eric Bertrand [email protected]. 08/11/06 Maître de conférence 1

Eric Bertrand ebertrand@ixis-cib.com. 08/11/06 Maître de conférence 1 Calcul parallèle des options MC. Eric Bertrand [email protected] 1 Plan Contexte du calcul parallèle Qualités requises Architecture Outillage Problèmes rencontrés perspectives 2 Contexte du calcul

Plus en détail

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» Du cours Modélisation Semi -Formelle de Système d Information Du Professeur Jean-Pierre GIRAUDIN Décembre. 2002 1 Table de matière Partie 1...2 1.1

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

Rapport d activité. Mathieu Souchaud Juin 2007

Rapport d activité. Mathieu Souchaud Juin 2007 Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix

Plus en détail

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges? Compétences générales Avoir des piles neuves, ou récentes dans sa machine à calculer. Etre capable de retrouver instantanément une info dans sa machine. Prendre une bouteille d eau. Prendre CNI + convocation.

Plus en détail

Fondements de l informatique Logique, modèles, et calculs

Fondements de l informatique Logique, modèles, et calculs Fondements de l informatique Logique, modèles, et calculs Cours INF423 de l Ecole Polytechnique Olivier Bournez Version du 20 septembre 2013 2 Table des matières 1 Introduction 9 1.1 Concepts mathématiques........................

Plus en détail

Les indices à surplus constant

Les indices à surplus constant Les indices à surplus constant Une tentative de généralisation des indices à utilité constante On cherche ici en s inspirant des indices à utilité constante à définir un indice de prix de référence adapté

Plus en détail

Francis BISSON (06 794 819) Kenny CÔTÉ (06 836 427) Pierre-Luc ROGER (06 801 883) IFT702 Planification en intelligence artificielle

Francis BISSON (06 794 819) Kenny CÔTÉ (06 836 427) Pierre-Luc ROGER (06 801 883) IFT702 Planification en intelligence artificielle Francis BISSON (06 794 819) Kenny CÔTÉ (06 836 427) Pierre-Luc ROGER (06 801 883) PLANIFICATION DE TÂCHES DANS MS PROJECT IFT702 Planification en intelligence artificielle Présenté à M. Froduald KABANZA

Plus en détail

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters AVANTAGES

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters AVANTAGES FAMILLE EMC VPLEX Disponibilité continue et mobilité des données dans et entre les datacenters DISPONIBLITÉ CONTINUE ET MOBILITÉ DES DONNÉES DES APPLICATIONS CRITIQUES L infrastructure de stockage évolue

Plus en détail

1 ère partie : tous CAP sauf hôtellerie et alimentation CHIMIE ETRE CAPABLE DE. PROGRAMME - Atomes : structure, étude de quelques exemples.

1 ère partie : tous CAP sauf hôtellerie et alimentation CHIMIE ETRE CAPABLE DE. PROGRAMME - Atomes : structure, étude de quelques exemples. Référentiel CAP Sciences Physiques Page 1/9 SCIENCES PHYSIQUES CERTIFICATS D APTITUDES PROFESSIONNELLES Le référentiel de sciences donne pour les différentes parties du programme de formation la liste

Plus en détail

Chapitre 2. Eléments pour comprendre un énoncé

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

Plus en détail

ASR1 TD7 : Un microprocesseur RISC 16 bits

ASR1 TD7 : Un microprocesseur RISC 16 bits {Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit

Plus en détail

Competence Management System (Système de Gestion de Compétences)

Competence Management System (Système de Gestion de Compétences) Dispositif :... 3 Qu est-ce qu un CMS?... 3 Quels sont les dispositifs intégrés à un CMS... 3 Comment envoyer des emails?... 3 Puis-je envoyer des emails seulement à un groupe de personnes?... 4 Comment

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli [email protected] Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Model checking temporisé

Model checking temporisé Model checking temporisé Béatrice Bérard LAMSADE Université Paris-Dauphine & CNRS [email protected] ETR 07, 5 septembre 2007 1/44 Nécessité de vérifier des systèmes... 2/44 Nécessité de vérifier

Plus en détail

Mises en relief. Information supplémentaire relative au sujet traité. Souligne un point important à ne pas négliger.

Mises en relief. Information supplémentaire relative au sujet traité. Souligne un point important à ne pas négliger. Cet ouvrage est fondé sur les notes d un cours dispensé pendant quelques années à l Institut universitaire de technologie de Grenoble 2, au sein du Département statistique et informatique décisionnelle

Plus en détail

COMPTABILITÉ. Cap vers une gestion simplifiée. www.mercator.eu POUR LES UTILISATEURS COMPTABLES ET LES PROFESSIONNELS DE LA COMPTABILITÉ

COMPTABILITÉ. Cap vers une gestion simplifiée. www.mercator.eu POUR LES UTILISATEURS COMPTABLES ET LES PROFESSIONNELS DE LA COMPTABILITÉ COMPTABILITÉ Cap vers une gestion simplifiée POUR LES UTILISATEURS COMPTABLES ET LES PROFESSIONNELS DE LA COMPTABILITÉ www.mercator.eu EDITO «Et si vous voyiez la comptabilité de votre entreprise comme

Plus en détail

IFT1215 Introduction aux systèmes informatiques

IFT1215 Introduction aux systèmes informatiques Introduction aux circuits logiques de base IFT25 Architecture en couches Niveau 5 Niveau 4 Niveau 3 Niveau 2 Niveau Niveau Couche des langages d application Traduction (compilateur) Couche du langage d

Plus en détail

Alchin Couderc Flambard TBSEID 2

Alchin Couderc Flambard TBSEID 2 Alchin Couderc Flambard Lycée Charles Blanc TBSEID 2 2008/2009 Depuis le début de notre formation en électronique en lycée professionnel nous avons vu plusieurs domaines d'intervention tel que le brun,

Plus en détail

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Seconde Généralités sur les fonctions Exercices. Notion de fonction. Seconde Généralités sur les fonctions Exercices Notion de fonction. Exercice. Une fonction définie par une formule. On considère la fonction f définie sur R par = x + x. a) Calculer les images de, 0 et

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

Processus d Informatisation

Processus d Informatisation Processus d Informatisation Cheminement de la naissance d un projet jusqu à son terme, deux grandes étapes : Recherche ou étude de faisabilité (en amont) L utilisateur a une idée (plus ou moins) floue

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters FAMILLE EMC VPLEX Disponibilité continue et mobilité des données dans et entre les datacenters DISPONIBILITE CONTINUE ET MOBILITE DES DONNEES DES APPLICATIONS CRITIQUES L infrastructure de stockage évolue

Plus en détail

CloudBees AnyCloud : Valeur, Architecture et Technologie cloud pour l entreprise

CloudBees AnyCloud : Valeur, Architecture et Technologie cloud pour l entreprise CloudBees AnyCloud : Valeur, Architecture et Technologie cloud pour l entreprise Alors que les plates-formes PaaS (Platform as a Service) commencent à s imposer comme le modèle privilégié auprès des entreprises

Plus en détail

Hibernate vs. le Cloud Computing

Hibernate vs. le Cloud Computing Hibernate vs. le Cloud Computing Qui suis-je? Julien Dubois Co-auteur de «Spring par la pratique» Ancien de SpringSource Directeur du consulting chez Ippon Technologies Suivez-moi sur Twitter : @juliendubois

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Chapitre 1. L intérêt. 2. Concept d intérêt. 1. Mise en situation. Au terme de ce chapitre, vous serez en mesure de :

Chapitre 1. L intérêt. 2. Concept d intérêt. 1. Mise en situation. Au terme de ce chapitre, vous serez en mesure de : Chapitre 1 L intérêt Au terme de ce chapitre, vous serez en mesure de : 1. Comprendre la notion générale d intérêt. 2. Distinguer la capitalisation à intérêt simple et à intérêt composé. 3. Calculer la

Plus en détail

Chapitre 2 Le problème de l unicité des solutions

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail

Modélisation multi-agents - Agents réactifs

Modélisation multi-agents - Agents réactifs Modélisation multi-agents - Agents réactifs Syma cursus CSI / SCIA Julien Saunier - [email protected] Sources www-lih.univlehavre.fr/~olivier/enseignement/masterrecherche/cours/ support/algofourmis.pdf

Plus en détail

ACCESSNET -T IP Technique système TETRA d Hytera. www.hytera.de

ACCESSNET -T IP Technique système TETRA d Hytera. www.hytera.de Technique système TETRA d Hytera est la solution complète et performante pour toutes les applications de la téléphonie mobile professionnelle. www.hytera.de Bref aperçu Pour une communication TETRA professionnelle

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail