diff --git a/create_pert.py b/create_pert.py deleted file mode 100644 index 04c86d0..0000000 --- a/create_pert.py +++ /dev/null @@ -1,105 +0,0 @@ -import csv -import networkx as nx -import matplotlib.pyplot as plt -from typing import Dict, Tuple - -pert = nx.DiGraph() - -with open('tasks-sae.csv') as csvfile: - tasks = list(csv.reader(csvfile, delimiter=',')) - for task, duration, predecessors, label, _ in tasks: - pert.add_node(task, duration=int(duration)) - - for task, duration, predecessors, label, _ in tasks: - if predecessors == '': - continue - for predecessor in predecessors.split('-'): - pert.add_edge(predecessor, task) - -layout = nx.nx_pydot.graphviz_layout(pert, prog='dot') -nx.draw(pert, pos=layout) -nx.draw_networkx_labels(pert, pos=layout) - -labels: Dict[Tuple[str, str], int] = {} -for task in pert.nodes: - for edge in pert.out_edges(task): - labels[edge] = pert.nodes[task]['duration'] - -nx.draw_networkx_edge_labels(pert, pos=layout, edge_labels=labels) -plt.show() - -sources = [task for task in pert.nodes if pert.in_degree(task) == 0] -puits = [task for task in pert.nodes if pert.out_degree(task) == 0] - -asap: Dict[str, str] = dict() -for source in sources: - asap[source] = pert.nodes[source]['duration'] - -frontiere = [] -for task in sources: - frontiere.extend(pert.successors(task)) - -while len(frontiere): - sucessors = [] - for task in frontiere: - start = 0 - stop = False - for predecessor in pert.predecessors(task): - if predecessor not in asap: - stop = True - break - start = max(start, asap[predecessor]) - if stop: - continue - asap[task] = start + pert.nodes[task]['duration'] - sucessors.extend(pert.successors(task)) - frontiere = sucessors - -total_duration = 0 -for task in pert.nodes: - total_duration = max(asap[task], total_duration) - -alap: Dict[str, str] = dict() -for puit in puits: - alap[puit] = total_duration - pert.nodes[puit]['duration'] - -frontiere = [] -for task in puits: - frontiere.extend(pert.predecessors(task)) - -while len(frontiere): - predecessors = [] - for task in frontiere: - end = total_duration - stop = False - for successor in pert.successors(task): - if successor not in alap: - stop = True - break - end = min(end, alap[successor]) - if stop: - continue - alap[task] = end - pert.nodes[task]['duration'] - predecessors.extend(pert.predecessors(task)) - frontiere = predecessors - -print('Durée totale :', total_duration, 'heures') -for task in pert.nodes: - duration = pert.nodes[task]['duration'] - print('|', task, '|', duration, '|', '-'.join(pert.predecessors(task)), '|', asap[task] - duration, '|', asap[task], '|', alap[task], '|', alap[task] + duration, '|', alap[task] + duration - asap[task], '|', sep='') - - -nrow = pert.number_of_nodes() -plt.figure() -bar_width = 0.9 - -tasks = list(pert.nodes) - -for i, task in enumerate(reversed(tasks)): - duration = pert.nodes[task]['duration'] - plt.broken_barh([(asap[task] - duration, duration)], (i - bar_width / 2, bar_width)) - #plt.broken_barh([(asap[task], alap[task] - asap[task])], (i - bar_width / 2, bar_width), color='green') - -plt.yticks([i for i in range(nrow)], reversed(tasks)) - -plt.show() diff --git a/pert.py b/pert.py deleted file mode 100644 index 8354254..0000000 --- a/pert.py +++ /dev/null @@ -1,111 +0,0 @@ -import networkx as nx -from random import randint -from typing import Dict -import matplotlib.pyplot as plt - -pert = nx.DiGraph() -"""pert.add_node('A', duration=3) -pert.add_node('B', duration=4) -pert.add_node('C', duration=8) -pert.add_node('D', duration=6) -pert.add_node('E', duration=2) -pert.add_node('F', duration=10) -pert.add_node('G', duration=5) -pert.add_node('H', duration=3) -pert.add_node('I', duration=2) -pert.add_node('J', duration=4) -pert.add_node('K', duration=4) -pert.add_node('L', duration=4) -pert.add_node('M', duration=10) -pert.add_edge('A', 'C') -pert.add_edge('B', 'D') -pert.add_edge('C', 'D') -pert.add_edge('D', 'E') -pert.add_edge('D', 'F') -pert.add_edge('F', 'G') -pert.add_edge('D', 'H') -pert.add_edge('E', 'I') -pert.add_edge('C', 'J') -pert.add_edge('B', 'J') -pert.add_edge('G', 'K') -pert.add_edge('H', 'K') -pert.add_edge('I', 'L') -pert.add_edge('J', 'L') -pert.add_edge('K', 'L') -pert.add_edge('L', 'M')""" -pert.add_edge('A', 'B') -pert.add_edge('B', 'C') -pert.add_edge('B', 'D') -pert.add_edge('C', 'E') -pert.add_edge('D', 'E') -pert.add_edge('E', 'I') -pert.add_edge('I', 'J') -pert.add_edge('J', 'K') -pert.add_edge('I', 'G') -pert.add_edge('G', 'J') - -for task in pert.nodes: - pert.nodes[task]['duration'] = randint(1, 10) - -layout = nx.nx_pydot.graphviz_layout(pert, prog='dot') -nx.draw(pert, pos=layout) -nx.draw_networkx_labels(pert, pos=layout) - -labels = {} -for task in pert.nodes: - for edge in pert.out_edges(task): - labels[edge] = pert.nodes[task]['duration'] - -nx.draw_networkx_edge_labels(pert, pos=layout, edge_labels=labels) -plt.show() - -sources = [task for task in pert.nodes if pert.in_degree(task) == 0] -puits = [task for task in pert.nodes if pert.out_degree(task) == 0] - -asap: Dict[str, str] = dict() -for source in sources: - asap[source] = pert.nodes[source]['duration'] - -frontiere = [] -for task in sources: - frontiere.extend(pert.successors(task)) - -while len(frontiere): - sucessors = [] - for task in frontiere: - start = 0 - for predecessor in pert.predecessors(task): - start = max(start, asap[predecessor]) - asap[task] = start + pert.nodes[task]['duration'] - sucessors.extend(pert.successors(task)) - frontiere = sucessors - -m = 0 -for task in pert.nodes: - m = max(asap[task], m) - -alap: Dict[str, str] = dict() -for puit in puits: - alap[puit] = m - -frontiere = [] -for task in puits: - frontiere.extend(pert.predecessors(task)) - -while len(frontiere): - predecessors = [] - for task in frontiere: - end = m - for successor in pert.successors(task): - end = min(end, alap[successor] - pert.nodes[successor]['duration']) - alap[task] = end - pert.nodes[task]['duration'] - predecessors.extend(pert.predecessors(task)) - frontiere = predecessors - -print(pert) -print(asap) -print(alap) - -for task in pert.nodes: - duration = pert.nodes[task]['duration'] - print(task, '|', '-'.join(pert.predecessors(task)), '|', asap[task] - duration, asap[task], '|')#, alap[task] - duration, alap[task], '|', alap[task] - asap[task]) diff --git a/tasks-sae copy.csv b/tasks-sae copy.csv deleted file mode 100644 index 624f3ab..0000000 --- a/tasks-sae copy.csv +++ /dev/null @@ -1,20 +0,0 @@ -A,2,,Établir le modèle de données -B,5,A,Assembler les objets et les dépendances entre eux -> grapĥe -C,4,B,Implémenter la recherche d'une recette de fabrication -D,4,C,Implémenter la fabrication d'objets -E,7,C,Créer l'interface pour combiner des objets -F,5,D-E,Lier les données à l'interface de combinaison -G,2,F,Documenter l'architecture et les algorithmes utilisés -H,6,G,Identifier les problèmes de performance -I,9,H,Expérimenter et optimiser l'application -J,4,E,Créer un menu -K,15,J,Permettre la persistence de l'inventaire -L,20,I-K,Tester sur différentes plateformes -M,7,K,Documenter -N,12,L-M,Supporter différents profils de joueur -O,25,N,Permettre le multi joueur sur le réseau -P,3,N,Réaliser une bêta fermée -Q,20,P,Répertorier les bugs trouvés pendant la bêta -R,10,O-Q,Corriger -S,40,J,Réaliser une campagne publicitaire -T,5,R-S,Publier \ No newline at end of file diff --git a/tasks-sae.csv b/tasks-sae.csv deleted file mode 100644 index 87caff4..0000000 --- a/tasks-sae.csv +++ /dev/null @@ -1,11 +0,0 @@ -A,2,,Établir le modèle de données,X-Y -B,5,A,Assembler les objets et les dépendances entre eux -> grapĥe,Y -C,4,B,Implémenter la recherche d'une recette de fabrication,X -D,4,C,Implémenter la fabrication d'objets,X -E,5,C,Créer l'interface pour combiner des objets,Y -F,2,D-E,Lier les données à l'interface de combinaison,Y -G,2,F,Documenter l'architecture et les algorithmes utilisés,X -H,4,G,Identifier les problèmes de performance,X -I,3,H,Expérimenter et optimiser l'application,X -J,4,E,Créer un menu,Y -K,1,I-J,Rendre les livrables,X-Y \ No newline at end of file diff --git a/tasks-sae301.csv b/tasks-sae301.csv deleted file mode 100644 index f834846..0000000 --- a/tasks-sae301.csv +++ /dev/null @@ -1,16 +0,0 @@ -A,3,,Choix du projet -B,6,A,Description du projet -C,2,B,Identification des contraintes -D,4,B,Transcriptions des besoins -E,2,C-D,Identification des tâches - -A,1,,Créer le MCD -B,2,A,Implémenter la base de données -C,4,B,Créer une API exposant la base de données via HTTP -D,6,C,Permettre de créer un projet, le supprimer et ajouter une version depuis le web -E,10,C,Télécharger et afficher les informations de l'API en console -F,8,C,Réaliser une maquette pour le design du site -G,5,F,Implémenter la maquette -H,5,E,Intégrer le paquet installé dans le projet de l'utilisateur -I,3,H,Comparer les versions installées avec celles du dépôt distant - diff --git a/tasks.csv b/tasks.csv deleted file mode 100644 index b8e97f0..0000000 --- a/tasks.csv +++ /dev/null @@ -1,12 +0,0 @@ -A,4,,Définir les caractéristiques voulues avec le client -B,5,A,Rechercher le concept le plus approprié -C,10,B,Établir les plans -D,12,A,Tester sur des modèles réduits et simuler en soufflerie -E,2,H-F,Préparer la ligne de production -F,8,C-D,Réaliser un prototype -G,3,E,Importer les pièces détachées nécessaires à la fabrication -H,4,F,Établissement des documents présentant les caractéristiques détaillées du futur avion -I,1,H,Entrainement des employés -J,12,I,Certification du modèle -K,16,J-G,Production de la commande -L,3,K,Livraison de la commande \ No newline at end of file