|
@@ -1,8 +1,9 @@
|
1
|
1
|
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
|
2
|
2
|
|
3
|
|
-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)
|
|
3
|
+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)
|
4
|
4
|
|
5
|
|
-Ce projet a été divisé en package :
|
|
5
|
+Ce projet a été divisé en package : (V1)
|
|
6
|
+ - LabelFlotCost : gérant les labels des graphes de flot avec prise en compte du cout
|
6
|
7
|
- LabelFlot : gérant les labels des graphes de flot
|
7
|
8
|
- Path : gérant les chemins dans les graphes
|
8
|
9
|
- Tools : des outils pour travailler sur les graphes
|
|
@@ -12,22 +13,67 @@ Tous ces modules sont testables (fichier de type 'nom_package'test.ml) grace au
|
12
|
13
|
- Il est possible d'executer ces fichiers de test avec la cible demo_'nom_package'test
|
13
|
14
|
|
14
|
15
|
En ce qui concerne Ford Fulkerson, il a été dans codé le module flot, et, peut être lancé grace au fichier FordFulkerson.ml
|
15
|
|
-Pour simplifier son utilisation, la aussi, des cibles ont été créées :
|
|
16
|
+Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V1)
|
16
|
17
|
- build_FordFulkerson : pour compiler le programme et créér FordFulkerson.native
|
17
|
18
|
- demo_FordFulkerson GRAPH="chemin" ORIGIN="origine" DESTINATION="destination"
|
18
|
|
- Pour compiler le programme l'executer sur le graphe donné (ex ./graphs/graph1) entre l'origine et la destination donnée (ex 0 et 5)
|
|
19
|
+ 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)
|
19
|
20
|
Cela charge le graphe, l'exporte au format svg, applique FordFulkerson, exporte le résultat au format svg, et l'affiche dans Firefox
|
20
|
21
|
|
|
22
|
+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
|
|
23
|
+Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V3)
|
|
24
|
+ - build_FordFulkersonCost : pour compiler le programme et créér FordFulkersonCost.native
|
|
25
|
+ - demo_FordFulkersonCost GRAPH=\"chemin\" ORIGIN=\"origine\" DESTINATION=\"destination\"
|
|
26
|
+ 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)
|
|
27
|
+ Cela charge le graphe, l'exporte au format svg, applique FordFulkersonCost, exporte le résultat au format svg, et l'affiche dans Firefox
|
|
28
|
+
|
|
29
|
+
|
21
|
30
|
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
|
22
|
|
-Pour simplifier son utilisation, la aussi, des cibles ont été créées :
|
|
31
|
+Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V2)
|
23
|
32
|
- build_Emploi : pour compiler le programme et créér emploifiletest.native
|
24
|
33
|
- demo_Emploi EMPLOI="chemin"
|
25
|
34
|
Pour compiler le programme l'executer sur le fichier d'emplois donné (ex ./emplois/emploi1)
|
26
|
35
|
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
|
27
|
36
|
|
|
37
|
+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
|
|
38
|
+Pour simplifier son utilisation, la aussi, des cibles ont été créées : (V3)
|
|
39
|
+ - build_EmploiCost : pour compiler le programme et créér emploifilecosttest.native
|
|
40
|
+ - demo_EmploiCost EMPLOI=\"chemin\"
|
|
41
|
+ Pour compiler le programme l'executer sur le fichier d'emplois donné (ex ./emplois/emploi1
|
|
42
|
+ 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
|
|
43
|
+
|
|
44
|
+ NB : Emploi et EmploiCost utilisent les mêmes fichers en entier, pour la priorisation des voeux, l'ordre d'écriture compte (cf plus bas)
|
|
45
|
+
|
|
46
|
+
|
28
|
47
|
Autres cibles :
|
29
|
48
|
- format : Pour indenter le code
|
30
|
49
|
- edit : Pour ouvrir le code dans VsCode
|
31
|
50
|
- clean : Pour supprimer les fichiers dot, les fichiers native, ainsi que le répertoire _build
|
32
|
51
|
|
33
|
52
|
|
|
53
|
+ZOOM SUR UN FICHIER EMPLOI
|
|
54
|
+
|
|
55
|
+%% Jobs
|
|
56
|
+
|
|
57
|
+%%Format j <idJobs> <Nom> <Nb de personnes possible>
|
|
58
|
+%% 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
|
|
59
|
+
|
|
60
|
+j 1 Professeur 2
|
|
61
|
+j 2 Laveur_de_carreaux 2
|
|
62
|
+j 3 Cuisinier 1
|
|
63
|
+j 4 Poissonier 3
|
|
64
|
+
|
|
65
|
+%% Applicants
|
|
66
|
+%% Format : a <Nb de jobs possibles en même tps> <Nom> <Liste nb jobs>
|
|
67
|
+%% Format scanf : Scanf.scanf line "a %d %s %s@:"
|
|
68
|
+%% %s@: -> mange tout tant qu'on a pas :
|
|
69
|
+%% String.split (à chercher dans le module)
|
|
70
|
+%% 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)
|
|
71
|
+%% L'ordre dans la liste sert de priorisation dans le cas d'une affectation avec priorisation
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+a 1 Gerard 2
|
|
75
|
+a 1 Sandrine 4
|
|
76
|
+a 1 Patrice 1 3
|
|
77
|
+%% Ici, Christine veut avant tout etre Professeur, ensuite Cuisinier, et en dernier choix, Poissonier
|
|
78
|
+a 2 Christine 1 3 4
|
|
79
|
+a 1 Leo 2
|