dimanche 1 juin 2014

Projet 3A en autonomie


Sujet du projet de programmation (3A) en langage C : L'agencement de graphes.
Lisez la suite pour voir une courte vidéo d'introduction au projet.
Voici une vidéo vous présentant la problématique d'agencement de graphes et la solution que je vous propose d'implémenter...

Le sujet est attaché à cet article, ainsi qu'un code de base pour l'affichage graphique ("fenetre.c"), et des exemples de graphes.
Je communiquerai sur cette page les réponses aux questions que vous me poserez par mail. Pensez donc à y revenir de temps en temps , et surtout avant de poser une question ;)
Le plus simple est de l'installer via "apt-get" :
sudo apt-get install libcsfml-dev libgl1-mesa-dev libglu1-mesa-dev
Si vous utilisez les ordinateurw de salle de TP, la librairie est déjà installée, vous n'avez donc rien à faire.
[EDIT] On m'a signalé qu'il y a un problème à l'exécution sur les machines de TP... Il y a apparemment eu des mises à jour, entre mes derniers tests fait avant l'été, et maintenant... Nous travaillons à trouver une solution.
[EDIT #2] Le problème semblerai avoir lieu en salle I12b et E08, mais pas en I22, si vous travaillez à l'école, utilisez la salle I22, et vous n'aurez pas de problèmes... En attendant qu'on résolve le problème et que ça marche dans toutes les salles...
[EDIT #3 fait le 25 octobre] bizarrement certains étudiants m'on rapporté que la ligne de compilation ne marchais pas chez eux. Dans ce cas essayer comme ceci (en mettant le "-lm" à la fin de la ligne). 
gcc -Wall -g fenetre.c -lcsfml-graphics  -o fenetre -lm
J'ai reçu un certain nombre de questions par mail, en voici les réponses :
  • Vous aurez besoin d'ajouter la librairie mathématique (#include ", d'où le "-lm" dans la librairie qui y est associée), mais c'est tout, vous n'utilisez pas d'autres bibliothèque que celles déjà utilisée dans le code de base ("fenetre.c"). Je vous rappelle que je vais devoir corriger un très grand nombre de codes, et je vais donc essayer d'automatiser un certain nombre de tâches, dont la compilation.
  • Une question m'a souvent été demandée sur le poids à associer à chaque noeud. La réponse est dans la formule vous permettant de simuler les forces du ressort correspondant aux liens. Quand vous voulez appliquer la force correspondant au ressort, il vous faut spécifier une masse correspondant aux noeuds. Vous prenez donc la même masse pour tous les noeuds. Cela peut donc être tout à fait une constante du programme, ou une valeur dans la structure représentant les noeuds, c'est comme vous voulez. Cette valeur de masse dépend de la raideur du ressort que vous aurez choisit pour représenter les liens. Si la raideur est importante, vous devez mettre une masse élevée, et si vous mettez une raideur faible, il vaut mieux mettre une masse faible sinon la simulation ne bouge tout simplement pas... C'est à vous de faire des essais et de trouver un compromis qui fonctionne. Comme précisé lors de la présentation, ce principe de simulation ne vous assure pas de trouver une disposition optimale à tous les coups, essayez de trouver des paramètres qui fonctionnent bien, je n'exige pas quelque chose de parfait. Les vidéos (il y en a deuxième en dessous) vous donne un aperçu de ce qui est possible de réaliser (et aussi de certaines imperfections dont il est difficile de se débarrasser.).
  • Si vous désirez aller plus loin que le sujet de base, faites le et envoyez moi la vidéo (sous linux, le logiciel recordMyDesktop fonctionne plutôt bien pour faire cela.) et je publierai vos exploits ici comme ce que m'a envoyé Michel Remise. (Voir la vidéo ci-dessous). Mais pour la notation, rendez moi un code qui suit toutes les recommandations de base, car pour la correction, la plupart des étapes seront automatisées, donc ne cherchez pas à faire quelque chose de différent, ça risque de ne pas passer !
[EDIT #4] fait le 6 novembre. Je repousse la date de rendu du projet au 5 jeudi décembre (minuit au plus tard). Cela pour plusieurs raisons, tout d'abord il y a eu un problème pour faire fonctionner ce programme en salle de TP (cela vous a peut etre fait perdre du temps). J'ai vu aussi un certain nombre d'étudiants ayant un peu de difficulté avec le projet, mais qui faisaient des efforts et qui progressaient. Je pense donc que ce délais supplémentaire sera bénéfique. De plus je vous propose une séance supplémentaire le jeudi 28 novembre, en salle de TP, à laquelle je serai présent pour répondre à vos questions. Cette séance est bien sur facultative (car toute la promo ne rentrera pas dans une seule salle info' ;) ) , seul les étudiants en difficulté sont réellement convié à cette séance.
[EDIT #5] les machines de toutes les salles ont été mises à jour, vous pouvez donc maintenant travailler sur ce projet dans toutes les salles (site de Vésale y compris).
Bon courage et bon travail...

Voici les réalisations de certains étudiants ...
Qui on réalisé bien plus que ce qui était attendu. Un grand bravo pour ces réalisations.
Voici ce qu'à réussi à faire Michel Remise, c'est une suite d'exemple de graphes de plus en plus compliqué, et qui va nettement au delà de mes espérances ;) bravo! Ayez la patience de voir la vidéo jusqu'au bout car les derniers exemples sont très intéressant. Si vous avez aussi envie de pousser


Voici encore un autre travail d'étudiant qui mérite le détour. Vincent Marquet à utilisé le logiciel Baldr (production ESIEA!) qui permet d'étudier les similarité de fichiers, principalement utilisé pour de l'analyse de similarité de code, dans le but de détecter du plagiat en TP. Il a utilisé ce logiciel pour analyser des histoires écrites par Raymond Queneau. Il s'agit de la même histoire mais raconté dans des styles différents. Baldr produit des mesure de distances entres ces histoires, ces distances sont utilisées dans le programme de Vincent pour produire l'agencement d'un graphe illustrant les liens de proximité entre les histoires. Le résultat est surprenant puisqu'on constate qu'un programme (prévu pour de l'analyse de code) est capable de faire de l'analyse littéraire !! 

Si vous avez réalisé, vous aussi, un programme qui va au delà de ce qui était demandé, n'hésitez pas à faire une vidéo, me l'envoyer, et je la publierai ici.