Nicolas Brodu     
          
            K R A S H N N E T
Nicolas
Brodu
K R A S H N N E T

Description

Il s'agit d'une politique de placement de fenêtre pour un gestionnaire de fenêtre d'une ancienne version de KDE. Ce code ne fonctionnera pas sur les versions récentes, du moins pas sans modifications.

L'idée derrière tout ça est d'entrainer un réseau de neuronnes pour simuler le placement "smart" pour commencer. Puis, lorsqu'une nouvelle fenêtre est affichée, si l'utilisateur n'est pas content de la position et qu'il déplace aussitôt cette fenêtre, alors le réseau de neurones est entraîné sur la nouvelle position.

On peut alors espérer que le réseau va apprendre et s'adapter aux préférences de l'utilisateur, et qu'ils sera capable de prédire de meilleurs emplacements que la politique par défaut "smart" après quelque temps.

Le code source est fourni ici à des fins d'information et d'archivage. Il ne fonctionnera pas avec les versions récentes de KDE, mais vous pouvez toujours vous amuser à l'adapter si vous voulez :)

Le réseau utilisé est un MLP 2 couches, avec 10 unités cachées. Il y a 23 entrées : Le nombre de fenêtres sur l'écran (1), la position des 5 plus grandes fenêtres (20), et la taille de la fenêtre à placer (2). Il y a 2 sorties, les coordonnées pour placer la nouvelle fenêtre. Toutes les positions et tailles sont ramenées proportionellement à la taille du bureau, afin d'être indépendentes de la résolution.

L'entrainement initial du réseau fut fait par "recuit-simulé", et l'entrainement en-ligne par descente de gradient.

J'ai réalisé tout ceci à l'époque afin d'implémenter en pratique quelques cours reçus à l'université d'Aston en 1999. C'était une façon simple et amusante de réaliser des réseaux de neurones :)

Commentaires récents

Aujourd'hui je n'utiliserais certainement pas des perceptrons multi-couches pour cette tâche ; ces bêtes-là ne gèrent pas bien les discontinuités. Ce fut d'ailleurs une raison possible pour piètres performances obtenues, avancée à l'époque par un de mes professeurs.

Je suis maintenant de retour dans le monde de la recherche, et je pense que l'idée d'utiliser un réseau de neuronnes pour placer des fenêtres à l'écran était à la fois amusante et innovative. D'ailleurs, même après des années, personne ne l'a encore réalisé!

Si quelqu'un aujourd'hui compte implémenter un algorithme d'IA pour cette tâche, je ne recommenderais pas les perceptrons. Des avancées récentes sur les réseaux neuronaux tendraient plutôt à suggérer les réseaux à impulsion, bien que même là, les résultats risquent de ne pas être à la hauteur de la politique par défaut "smart". Parmi les autres choix d'algorithme d'IA, il y a toujours les classiques arbres de décision. Ceux-ci sont malheureusement bien plus pénibles à mettre à jour, et ne méritent actuellement plus vraiment le titre d'IA, mais au moins ils ont une chance de produire un résultat décent comparé à la politique de placement "smart".

Cependant, je pense surtout que quelquechose de vraiment amusant et innovant est bien plus intéressant que quelquechose qui ne fait qu'émuler l'algorithme "smart". Un réseau à impulsion récurrent de grande taille peut être suffisament amusant à regarder évoluer, ou alors quelquechose d'autre, du style une décision collective d'un essaim d'agents.

Merci de me tenir informé si vous désirez travailler sur ce projet ou un autre projet similaire. Il y a probablement beaucoups de domaines d'un environnement bureautique qui mériteraient l'attention d'une IA!

Style:
      L O G I C I E L S 
K
R
A
S
H

N
N
E
T
K
R
A
S
H

N
N
E
T