mercredi 17 mai 2017

Et si on calculait un gouvernement ?

On lit partout dans la presse qu’Emmanuel Macron, nouveau Président, s’était donné un certain nombre de contraintes pour faire son gouvernement : parité entre hommes et femmes, ministres jeunes et vieux, de droite et de gauche et d’ailleurs encore... Il se trouve qu’en matière de contraintes comme en tout, l’informatique se révèle bien utile. Qu'aurait donné la programmation par contraintes, une méthode d'intelligence artificielle, si elle avait dû faire un gouvernement ?


Edouard Philippe n'annonçant
pas un gouvernement

Crédit : Philippe Alès [CC BY-SA 4.0],
via Wikimedia Commons
Scientifiques, membres d’une équipe spécialisée dans un domaine appelé Programmation par Contraintes, nous nous sommes amusés à composer un gouvernement avec Choco, l’outil que nous développons, et qui, ça tombe bien, est justement fait pour fabriquer des gouvernements (ou résoudre tout autre problème fortement combinatoire avec des contraintes). Du point de vue informatique, pourquoi faut-il un outil spécial ? Parce que le problème du gouvernement cache une difficulté immense : le nombre de possibilités est très vite très grand. Si on a, disons, une cinquantaine de ministrables, et qu’on veuille choisir 15 ministres, le nombre de façons de le faire est 2.250.829.575.120 (coefficient du binôme pour 15 et 50). Ca fait un paquet. Et s’il faut, en plus, respecter des contraintes sur les âges, les tendances politiques, les partis, les sexes… on ne s’en sort pas. Ca prend un temps fou. C’est un vrai casse-tête. On finit en retard. N’est-ce pas, M. Philippe ?


Précaution d’usage, nous tenons à préciser que notre but est purement ludique. En matière de politique, nous sommes totalement ignorants. Soyons francs : en fait, nous espérons simplement exploiter l’occasion pour vulgariser notre domaine de recherche adoré et montrer que souvent, l’informatique, et en particulier la programmation par contraintes, peut se révéler très utile pour des problèmes de la vie courante. Par ailleurs, nous avons réalisé ce modèle mercredi 17 mai entre 11h et 15h30, espérant griller la politesse au vrai gouvernement (ce qui rata, à un cheveu). Nous n'avions donc aucune autre information que celles disponibles en ligne.


Le Gouvernement Doumergue en 1913 respecte peu de nos contraintes.
Crédit : Agence Rol [Public domain], via Wikimedia Commons
Voilà comment nous avons procédé. D’abord, il nous fallait des ministrables. C’est assez facile à collecter, en fait : en ce moment, pas un journal qui ne s'essaie au petit jeu des prédictions. Nous avons récupéré les noms cités dans des articles de LCI, Ouest France, Francetvinfo, L'Indépendant. Plus difficile, il nous fallait connaître un certain nombre d’informations sur les ministrables pour pouvoir poser les contraintes. Nous avons choisi les caractéristiques suivantes : âge, sexe, courant politique (droite, gauche ou centre), parti (LR, Modem, En Marche, PS, sans étiquette), activité (déjà politique ou issu de la vie civile) et compétences (agriculture, économie, finances, industrie, éducation, écologie, culture, communication, europe, étranger, travail, santé, intérieur, justice, défense). Ces choix sont discutables, évidemment, et plus encore la manière dont nous avons attribué les compétences aux candidats : soit en fonction de leur expérience professionnelle telle qu’indiquée sur wikipedia ou linkedin (par exemple, un médecin sera noté comme compétent pour la santé), soit en fonction du ministère pour lequel ils étaient pressentis dans les articles que nous avons pris comme base. Pour les autres critères, nous avons pris comme source les fiches wikipedia, si elles existaient, et sinon les profils disponibles en ligne (nous avons parfois dû jouer aux devinettes pour l’âge… certains sont approximatifs, estimés sur la base de la date des diplômes).

La rumeur prête à M. Bayrou
d'avoir posé des conditions
pour entrer au gouvernement,
ce que nous n'avons pas
moyen de vérifier.

Crédit : Antonin Borgeaud [Public domain]
Il faut évidemment noter que de nombreuses informations n’ont pas pu être prise en compte, tout simplement parce que nous n’avions pas accès à l’information. Par exemple, nous n’avons pas les moyens de vérifier si les ministrables sont judiciairement irréprochables, contrainte qui semble avoir été posée par M. Macron, De même, nous ne connaissons pas les éventuelles contraintes ajoutées par les ministres eux-mêmes (si machin y va j’y vais pas, je n’y vais que si 3 personnes au moins de mon parti sont pris, etc). Attention, ces contraintes n’apparaissent pas, uniquement parce que nous n’avons pas accès à l’information : si nous l’avions eu, notre outil aurait parfaitement pu les intégrer.


Ceci fait, nous avons choisi les ministères, là encore, un peu arbitrairement. Nous nous sommes limités à 15 ministères, comme annoncé par le Président, et avons choisi les intitulés qui nous semblaient les plus classiques. A ce stade, nous avons donc : un vivier de candidats, chacun pouvant exercer un ministère (pas forcément dans ses compétences, comme on le verra plus bas).


Passons maintenant aux contraintes.

Parité Le gouvernement doit respecter la parité, pour laquelle nous avons retenu la définition assez classique : au moins 40% de personnes de chaque sexe. Cela s’exprime avec une contrainte dite de cardinalité, appelée atleast. Pour des raisons techniques, c’est une contrainte assez difficile à résoudre, mais il se trouve que le problème du gouvernement est d’assez petite taille pour un informaticien (15 variables), et que cette contrainte est déjà implémentée dans Choco. Facile.


Age Nous avons supposé que le Président, qui affiche depuis longtemps une volonté de renouvellement politique, souhaiterait avoir un gouvernement plutôt jeune, mais avec quand même quelques ministres expérimentés. Nous avons donc posé deux contraintes sur les âges : d’abord, l’âge moyen des ministres doit être compris entre 45 et 55 ans. C’est facile à implémenter en réalité : il suffit de faire la somme des âges et de poser la contrainte que cette somme doit être entre 45*15 et 55*15, ce qui donne une contrainte “est plus petit que” et une contrainte “est plus grand que”. Cette manip nous permet de rester dans les entiers, alors que calculer une moyenne aurait ajouté des nombres à virgule, ce qui en pratique met un sacré bazar dans les méthodes de résolution. Nous avons ajouté une deuxième contrainte imposant que l’écart entre les plus jeune et plus vieux ministres doit être supérieur à 22 ans : c’est une façon d’imposer un mélange jeunes-vieux. Techniquement, c’est aussi assez facile. Nous aurions pu alternativement imposer un certain nombre de ministres dans certaines tranches d’âge, mais alors nous aurions eu à nouveau des contraintes de cardinalité potentiellement pénibles.


Un peu de droite,
un peu de gauche...

Crédit : Roulex 45 [GFDL],
via Wikimedia Commons
Courants et partis Nous avons fixé un certain nombre de règles sur les courants politiques, qui nous semblaient correspondre au projet annoncé d’un gouvernement d’ouverture. Ces règles sont les suivantes : d’abord, chaque courant (gauche, centre, droite) doit être représenté, c’est-à-dire avoir au moins un ministre. Ensuite, le parti En Marche doit représenter plus du tiers du gouvernement, soit 5 ministères. Enfin, sur les 7 ministères majeurs, il doit y avoir autant de ministres de droite que de gauche, et plus de ministres du centre que de droite et gauche réunies. Même si elles sont compliquées à énoncer, ces contraintes sont assez faciles à mettre en place, en fait. A chaque fois, on s’en tire avec une petite opération sur les ministères : par exemple, pour la dernière, on fait la somme des ministères attribués à la droite et des ministères attribués à la gauche, et on impose la contrainte que cette somme est plus petite que les ministères attribués au centre.


Renouvellement politique Emmanuel Macron a affiché une volonté assez claire de renouveler la classe politique en nommant de nouvelles têtes, c’est-à-dire des personnalités de la vie civile. D’ailleurs, parmi les noms qui circulent, on trouve facilement des gens qui ne sont pas déjà maires, députés ou élus divers et variés. Pour exprimer cette contrainte, on reprend une contrainte de cardinalité, comme pour la parité : cette fois, on imposera qu’au moins un tiers des nommés soit des non-professionels de la politique. Une nouvelle contrainte atleast, et le tour est joué.


Compétences C’est à n’en pas douter le point le plus délicat du modèle. D’abord, parce qu’il est difficile de collecter l’information (qu’est-ce qu’on appelle une compétence, est-ce basé sur l’expérience, la formation initiale, la pratique ? Comment attribuer une compétence à un homme politique qui a fait toute une carrière d’élu local ? Un ex-premier ministre est-il compétent en tout ? etc). Nous admettons volontiers, sur ce point comme sur le reste, des reproches d’amateurisme et d’arbitraire. En outre, la question des compétences cache des difficultés bien particulières : ainsi, quelqu’un qui a été ministre du travail redevient rarement ministre du travail - il sera, selon les occasions, ministre de l’économie, ou de l’intérieur, ou de la santé… Bref, la question des compétences nous semble particulièrement difficile à modéliser. Nous avons donc choisi de la garder comme poire pour la soif, et d’en faire un critère d’optimisation : nous attribuons un score à chaque gouvernement, qui mesure à quel point chaque ministre est compétent sur son domaine, et nous essayons dans la mesure du possible de maximiser ce score, tout en respectant les autres contraintes. Du point de vue informatique, ceci nous fait passer de la catégorie des problèmes de satisfaction de contraintes aux problèmes d’optimisation sous contraintes - détail, notre outil sait gérer les deux.



Résolution Pour former notre gouvernement informatique, nous avons simplement écrit toutes les contraintes décrites ci-dessus dans le solver Choco, qui, techniquement, est une librairie dans le langage Java permettrant de résoudre ce type de problèmes. Choco est le principal outil développé par notre équipe de recherche, TASC, à Nantes, et c’est un solver libre et open source (comprendre : pas besoin de payer pour l’utiliser, et on a le droit de voir à l’intérieur). Il utilise des méthodes passablement subtiles pour résoudre en un temps raisonnable des problèmes où le nombre de possibilités à tester est immense, pile comme la composition d’un gouvernement. Il est aussi utilisé pour des problèmes d’intelligence artificielle, ou d’optimisation, dans l’industrie.

Bref, Choco est fantastique. Et il nous a pondu un gouvernement. Chose remarquable, nous avons fait tout ceci à trois, en 4h tout compris. Oui, oui, tout compris : collecte des données, modélisation sous forme de contraintes, écriture en Choco, résolution par le solver, et rédaction du post que vous lisez actuellement. Le plus rapide dans tout ça ? La partie sur ordinateur (i.e. la résolution du problème à proprement parler) : Choco répond en moins de 100 millisecondes. Il faut bien dire qu'au fond, le problème est assez facile... 

Alors, on vote pour qui ? On vote Choco !


Philippe David, Charles Prud'homme, Charlotte Truchet


Le gouvernement calculé par contraintes (EDIT à 18h40, avec les noms manquants et les ministères retenus) 
1. Premier ministre : Edouard Philippe  
2. Ministère de l'Intérieur : Amélie Castéra Oudéa
3. Ministère des Armées : Jean-Yves Le Drian
4. Ministère de la Justice : Jean-Paul Delevoye
5. Ministère de l’Éducation nationale : Laurent Bigorgne
6. Ministère de l'Économie : Astrid Panoysan
7. Ministère de l'Europe et des Affaires étrangères : Marielle de Sarnez
8. Ministère des Solidarités et de la Santé : Marie-Anne Montchamp
9. Ministère du Travail : Muriel Penicaud 
10. Ministère de l'Agriculture et de l'alimentation : Jean-Baptiste Lemoyne 
11. Ministère de la Culture : Erik Orsenna
12. Ministère de la Transition Écologique : Corinne Lepage
13. Ministère des Sports : Laura Flessel
14. Ministère de l’Enseignement supérieur : Jean-Pierre Raffarin
15. Ministère de l'Action et des Comptes Publics : Christophe Castaner 
16. Ministère de la Cohésion des Territoires : Gérald Darmanin  
17. Ministère de l'Outre Mer : Richard Ferrand 
18. Ministère de la Transition Écologique chargée des transports : Nicolas Hulot  
19. Ministère des Affaires Européennes : Bruno Le Maire  
Ce gouvernement comprend 7 femmes et 12 hommes, l'âge moyen des ministres est de 54,7 ans, le plus jeune à 34 ans, le doyen 70 ans.

1 commentaire:

  1. Description fort intéressante d'un problème atypique pour la programmation par contraintes.

    Je voudrais juste réagir sur une chose que je ne comprends pas. Il est dit que "atleast" est une contrainte assez difficile à résoudre. Selon moi, atleast n'est pas plus difficile que les autres contraintes que vous utilisez (somme, max, min). Qu'est ce qui vous fait donc dire cela?

    A part ça, je trouve que ce serait bien d'avoir le vrai modèle en plus des explications, ce qui peut appuyer le fait que la PPC permet d'exprimer des choses compliquées de manière relativement concise. Peut-être pour un futur article?

    RépondreSupprimer