— Un dossier Benchmark contenant des fichiers .input, chacun repr´esentant une instance du probl`eme (voir la
section Fichier d’entr´ee et de sortie des codes, page 4 ).
— Une biblioth`eque proglin helper(.c,.h) pour cr´eer et ex´ecuter facilement un programme lin´eaire.
— Un dossier customlibs o`u vous pourrez mettre des fichiers .c et .h indirectement li´es au projet
— Un dossier others o`u vous pourrez mettre tout autre fichier (par exemple, des fichiers pour g´en´erer des
tests).
Deux exemples vous sont donn´es dans les fichiers algorithm exemple.c et algorithm lpexemple.c. Le second
vous montre comment utiliser un programme lin´eaire. Vous pouvez tester l’archive avec les commandes suivantes
$ make −j 4
$ . / algo r i thm exe m p le exemple . i npu t exemple . output
$ . / a l g o r i t h m lpe x e m p l e exemple . inp ut exemple . output
Ce premier make est long. C’est normal, il ne devrait plus l’ˆetre par la suite.
Tous les algorithmes que vous coderez seront plac´es dans le dossier racine opti2, sous le nom algorithm S.c
et le fichier compil´e se nommera algorithm S o`u S est le nom de votre algorithme. Votre fichier algorithm S.c
doit respecter quelques contraintes afin de faciliter votre travail et la correction du charg´e de projet. Pour cr´eer un
nouvel algorithme, vous ˆetes invit´es `a suivre la proc´edure indiqu´ee dans la partie Coder un nouvel algorithme,
page 4. Votre code doit poss´eder au moins 2 algorithmes :
algorithm exact1.c et algorithm pl1.c correspondant `a la partie 2 de ce sujet.
Pour compiler et ex´ecuter votre algorithme, vous devez effectuer les commandes suivantes o`u S est le nom de
votre algorithme et fichier.input fichier.output sont deux noms de fichiers.
$ make
$ . / a l g o r i t h m S f i c h i e r . i npu t f i c h i e r . output
Vous aurez peut-ˆetre besoin de fichiers .c et .h pour factoriser votre code, par exemple une biblioth`eque d´ecrivant
les dictionnaires ou les listes chain´ees. Vous devez placer tous ces fichiers dans le dossier customlibs. En utilisant
la commande make, ils seront automatiquement compris dans la chaˆıne de compilation, quelque soit l’algorithme
qui en a besoin. Il est donc, normalement inutile de toucher au fichier Makefile. Vous pouvez le constater avec la
biblioth`eque example d´ej`a pr´esente dans le dossier. Si toutefois vous ˆetes contraint de modifier le makefile, pr´evenez
votre charg´e de projet.
Tout autre fichier que vous cr´eez et que vous jugez utile de mettre dans l’archive code.tar.gz que vous rendrez
peut ˆetre plac´e dans le dossier others. Par exemple, si vous g´en´erez des tests, si vous cr´eez un fichier contenant le
r´esultat des tests, ...
Certains de vos algorithmes utiliseront une biblioth`eque de programmation lin´eaire : deux biblioth`eques de
programmation lin´eaire vous sont propos´ees. Par d´efaut, en tapant la commande make pour compiler, vous utilisez
la biblioth`eque SCIP. Vous pouvez, si vous le souhaitez utiliser la biblioth`eqe LPSOLVE si SCIP ne fonctionne pas
sur votre machine avec la commande make LPS=TRUE. Une interface proglin helper.h est pr´evue pour que vous
n’ayez pas `a changer votre code si vous souhaitez tester la premi`ere ou la seconde biblioth`eque.
Vous ne devez pas cr´eer l’archive code.tar.gz vous-mˆeme. Une commande vous est fournie pour ce faire.
$ make a r c h i v e
Cette commande ajoute l’archive code.tar.gz `a la racine de opti2. Cette archive contient tous vos algorithmes
et le contenu de vos dossiers customlibs et others. V´erifiez l`a avant d’envoyer votre code.
Notation du code
Votre code sera not´e en deux parties.
En premier lieu, chacun de vos fichiers algorithmes sera relu puis test´e et ´evalu´e sur un ensemble d’instances. Ces
instances ne sont pas exactement celles dont vous disposez dans l’archive opti2.tar.gz, mais seront g´en´er´ees de
la mˆeme fa¸con. Ces tests permettront uniquement de v´erifier si les algorithmes r´epondent correctement aux entr´ees
par rapport `a ce qui est indiqu´e dans le rapport.
Ensuite, vos deux algorithmes algorithm exact1.c et algorithm pl1.c seront compar´es `a ceux des autres
binˆomes sur 10 instances de tailles au plus 15x15. Pour chaque instance, chaque algorithme sera ex´ecut´e 100 fois,
puis le temps de calcul moyen est mesur´e. Deux classements sont effectu´es pour chaque instance, un par algorithme.
Un algorithme qui ne renverrait pas une solution en 2 minutes sur une des instances est retir´e du classement de
cette instance. Une premi`ere place rapporte 0.125 point, la seconde place 0.10, la troisi`eme place 0.075, la quatri`eme
0.05, et la cinqui`eme 0.025. Les autres places ne rapportent pas. Vous pouvez donc gagner jusqu’`a 2.5 points en
´etant premier partout. La somme des points est arrondie au demi-point sup´erieur. Ces points sont bonus.
2