Repo du projet de programmation fonctionnelle en Ocaml, pour le binôme Paul Faure et Elies Tali.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Elies Tali 5b6d1b547c Mettre à jour 'README.md' 7 months ago
.github/workflows Initial commit 8 months ago
.vscode tests avec flots à 0 ok 8 months ago
emplois Version Fonctionnelle : EmploiCost OK (TAF : maj ReadMe, check all tested) 7 months ago
graphs Version fonctionnelle : Ford Fulkerson avec cout OK (TAF -> Commentaires, tests, emploi avec preferences) 7 months ago
src Version Fonctionnelle : Tests OK (TAF -> ReadMe) 7 months ago
.gitignore Version Fonctionnelle : EmploiCost OK (TAF : maj ReadMe, check all tested) 7 months ago
.merlin Initial commit 8 months ago
Makefile Version Terminéee : V3 finie Pret a Rendre 7 months ago
README.md Mettre à jour 'README.md' 7 months ago
_tags Initial commit 8 months ago

README.md

Ce Makefile permet la compilation et l’exécution du code Ocaml lié au projet Ocaml de 4IR codé par TALI Elies et FAURE Paul

L’objectif de ce projet était d’implémenter l’algorithme de Ford Fulkerson (V1), et de l’utiliser pour un cas particulier (ici, l’affectation de taches) (V2) puis, de rajouter une version trouvant le flot max, et, minimisant un cout, permettant ainsi d’affecter des taches selon un système de voeux ordonnés (V3)

Ce projet a été divisé en package : (V1)

  • LabelFlotCost : gérant les labels des graphes de flot avec prise en compte du cout
  • LabelFlot : gérant les labels des graphes de flot
  • Path : gérant les chemins dans les graphes
  • Tools : des outils pour travailler sur les graphes

Tous ces modules sont testables (fichier de type ‘nom_package’test.ml) grace au module test créé

  • Il est possible de compiler ces fichiers de test avec la cible build_‘nom_package’test, un fichier ‘nom_package’test.native sera crée
  • Il est possible d’executer ces fichiers de test avec la cible demo_‘nom_package’test

En ce qui concerne Ford Fulkerson, il a été dans codé le module flot, et, peut être lancé grace au fichier FordFulkerson.ml Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V1)

  • build_FordFulkerson : pour compiler le programme et créér FordFulkerson.native
  • demo_FordFulkerson GRAPH=“chemin” ORIGIN=“origine” DESTINATION=“destination” Pour compiler le programme l’executer sur le graphe donné (ex ./graphs/flot/graph1) entre l’origine et la destination donnée (ex 0 et 5) Cela charge le graphe, l’exporte au format svg, applique FordFulkerson, exporte le résultat au format svg, et l’affiche dans Firefox

En ce qui concerne Ford Fulkerson avec prise en compte du cout, il a été codé dans le module flotcost, et, peut être lancé grace au fichier FordFulkersonCost.ml Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V3)

  • build_FordFulkersonCost : pour compiler le programme et créér FordFulkersonCost.native
  • demo_FordFulkersonCost GRAPH=\“chemin\” ORIGIN=\“origine\” DESTINATION=\“destination\” Pour compiler le programme l’executer sur le graphe donné (ex ./graphs/flotcost/graph1) entre l’origine et la destination donnée (ex 0 et 5) Cela charge le graphe, l’exporte au format svg, applique FordFulkersonCost, exporte le résultat au format svg, et l’affiche dans Firefox

En ce qui concerne l’affectation d’emploi, elle a été codée dans le module emploifile, et, peut être lancé grace au fichier emploifiletest.ml Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V2)

  • build_Emploi : pour compiler le programme et créér emploifiletest.native
  • demo_Emploi EMPLOI=“chemin” Pour compiler le programme l’executer sur le fichier d’emplois donné (ex ./emplois/emploi1) Cela charge le fichier, le transforme en graphe, applique FordFulkerson pour affecter les emplois, exporte le résultat au format svg, et l’affiche dans Firefox

En ce qui concerne l’affectation d’emploi avec priorisation, elle a été codée dans le module emploifilecost, et, peut être lancé grace au fichier emploifilecosttest.ml Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V3)

  • build_EmploiCost : pour compiler le programme et créér emploifilecosttest.native
  • demo_EmploiCost EMPLOI=\“chemin\” Pour compiler le programme l’executer sur le fichier d’emplois donné (ex ./emplois/emploi1 Cela charge le fichier, le transforme en graphe, applique FordFulkersonCost pour affecter les emplois, exporte le résultat au format svg, et l’affiche dans Firefox

NB : Emploi et EmploiCost utilisent les mêmes fichers en entier, pour la priorisation des voeux, l’ordre d’écriture compte (cf plus bas)

Autres cibles :

  • format : Pour indenter le code
  • edit : Pour ouvrir le code dans VsCode
  • clean : Pour supprimer les fichiers dot, les fichiers native, ainsi que le répertoire _build

ZOOM SUR UN FICHIER EMPLOI

%% Jobs

%%Format j %% j signifie qu’on définit un emploi/tache/job, ensuite vient son id (numero), ensuite son Nom en toutes lettres, et enfin le nombre de places disponibles dans cet emploi

j 1 Professeur 2
j 2 Laveur_de_carreaux 2
j 3 Cuisinier 1
j 4 Poissonier 3

%% Applicants
%% Format : a
%% a signifie qu’on defini une personne, le nombre suivant defini combien de taches/postes elle doit se voir affecter, son Nom, et enfin la liste des jobs auquels elle postule (leur id) %% L’ordre dans la liste sert de priorisation dans le cas d’une affectation avec priorisation

a 1 Gerard 2
a 1 Sandrine 4
a 1 Patrice 1 3
%% Ici, Christine veut avant tout etre Professeur, ensuite Cuisinier, et en dernier choix, Poissonier
a 2 Christine 1 3 4
a 1 Leo 2