From c6857eece4497f23496d361fa4aae47621f76230 Mon Sep 17 00:00:00 2001 From: Valdr687 <106614142+Valdr687@users.noreply.github.com> Date: Sun, 28 Apr 2024 13:34:55 +0200 Subject: [PATCH] Correction --- Backend/Generator.py | 9 ++++-- Generateur.py | 71 ++++++++++++++++++++++++++++---------------- 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/Backend/Generator.py b/Backend/Generator.py index 9ee4fe6..a2737f8 100644 --- a/Backend/Generator.py +++ b/Backend/Generator.py @@ -268,13 +268,13 @@ def heureAprès(heure): def dispoRT(GroupeTD, GroupeTP, jour, heure, semaine, Rotations, Planning, trinome, coloscope): + if heure[-1]=='h' : + heure += '00' for Ligne in Planning: if Ligne['Semaine'] == semaine: - RangRotation = 0 for rotation in Rotations: - - if rotation['Jour'] == jour and heure < rotation['Heure'][-5:] and heure >= rotation['Heure'][:5]: + if rotation['Jour'] == jour and heure >= rotation['Heure'][:5] and heure < rotation['Heure'][-5:]: if Ligne['Rotation'+str(RangRotation)] in ['TD'+str(GroupeTD), 'TP'+str(GroupeTP)]: return 'en tp/td' if Ligne['Rotation'+str(RangRotation)] == 'Cours': @@ -378,4 +378,7 @@ def Permutations(Liste): PremierTrinome = i[0] listeCombinaison.append(SousListe) SousListe = [list(i)] + listeCombinaison.append(SousListe) + return listeCombinaison + diff --git a/Generateur.py b/Generateur.py index 05433d1..93c7120 100644 --- a/Generateur.py +++ b/Generateur.py @@ -69,30 +69,42 @@ def générateur(Semaine, Coloscope, Trinomes, Matiere): return Coloscope ColoscopeInitial = deepcopy(Coloscope) # Vérification de la faisabilité des colles - ListeHeure = {} - for Colle in Coloscope: - if Colle['Matiere'] == Matiere: - if Colle['Jour'] in ListeHeure.keys(): - ListeHeure[Colle['Jour']].append(Colle['Heure']) - else: - ListeHeure[Colle['Jour']] = [Colle['Heure']] - print(ListeHeure) - Incompatibilités = 0 - for jour in list(ListeHeure.keys()): - for heure in ListeHeure[jour] : - for rotation in Rotation: - if rotation['Jour']==jour: + # ListeHeure = {} + # for Colle in Coloscope: + # if Colle['Matiere'] == Matiere: + # if Colle['Jour'] in ListeHeure.keys(): + # ListeHeure[Colle['Jour']].append(Colle['Heure']) + # else: + # ListeHeure[Colle['Jour']] = [Colle['Heure']] + # print(ListeHeure) + # Incompatibilités = 0 + # for jour in list(ListeHeure.keys()): + # for heure in ListeHeure[jour] : + # for rotation in Rotation: + # if rotation['Jour']==jour: - if heure < rotation['Heure'][-5:] and heure >= rotation['Heure'][:5]: - print(heure, jour) - Incompatibilités +=1 - if Incompatibilités!=0: - print('Après analyse du planning des rotations,',Incompatibilités,'colles ne peuvent être assurées') + # if heure < rotation['Heure'][-5:] and heure >= rotation['Heure'][:5]: + # print(heure, jour) + # Incompatibilités +=1 + # if Incompatibilités!=0: + # print('Après analyse du planning des rotations,',Incompatibilités,'colles ne peuvent être assurées') - + MeilleureGlobale = 0 + MeilleureLocale = 0 + MeilleureCombinaison = [] + MeilleurRemplissage = 9 + + Globale = -1 + Locale = -1 + + TrinomesIntact = deepcopy(Trinomes) for ListeTrinome in Trinomes: + print(ListeTrinome[0][0]) + Globale += 1 + Locale = -1 for TrinomesAColler in ListeTrinome: + Locale += 1 for Colle in Coloscope: if Colle['Matiere'] == Matiere: trinome = TrinomesAColler[0] @@ -102,17 +114,28 @@ def générateur(Semaine, Coloscope, Trinomes, Matiere): Colle[str(Semaine)] = trinome TrinomesAColler.remove(trinome) else : + if len(TrinomesAColler) < MeilleurRemplissage : + MeilleureGlobale,MeilleureLocale = Globale,Locale + MeilleurRemplissage = len(TrinomesAColler) + try : + MeilleureCombinaison = TrinomesIntact[Globale][Locale] + except : + print(Locale) Coloscope = deepcopy(ColoscopeInitial) break if TrinomesAColler == []: return Coloscope + + + print(MeilleureCombinaison,MeilleurRemplissage) print('Il semble qu\'il est impossible de générer les colles de cette matière') return ColoscopeInitial Semaines = keepIntAsStr(list(Coloscope[0].keys())) def test(trinome,heure,jour,semaine): - TD = getGroupeTD(trinome,GroupeTP) + TD = getGroupeTD(trinome,GroupeTD) + TP = getGroupeTP(trinome,GroupeTP) Dispo = dispoEDT(TD,TP,jour,heure,semaine,Rotation,Planning,EmploiDuTemps,trinome,Coloscope,GroupeLV1,GroupeLV2,ListeLangues) print(trinome,heure,jour,semaine,Dispo) @@ -120,7 +143,6 @@ def test(trinome,heure,jour,semaine): EmploiDuTemps, trinome, Coloscope, GroupeLV1, GroupeLV2, ListeLangues) print(trinome, demiHeureAprès(heure), jour, semaine, Dispo) - # Colles de français ----------------------------------- ElevesAColler = [] @@ -141,7 +163,7 @@ def test(trinome,heure,jour,semaine): print("Il n'a pas assez de créneaux en français, le programme affichera les colles qui n'ont pas été attribuées.") FaisabilitéFr = False -for Semaine in [51]: +for Semaine in []: for Colle in Coloscope: if Colle['Matiere'] == 'Francais': MaxIteration = len(ElevesAColler) + 1 @@ -206,7 +228,7 @@ def test(trinome,heure,jour,semaine): CombinaisonsLangues[Langue].append(Permutations( CombinaisonsLangueEnCours[GroupeDeColle])) # Generation par semaine du coloscope -Semaines = Semaines[:2] +Semaines = Semaines[:1] for Semaine in Semaines: print('Le programme traite la semaine', Semaine) @@ -246,5 +268,4 @@ def test(trinome,heure,jour,semaine): # Export des données ----------------------------------- export_csv('Colloscope', Coloscope) - - +#['3', '7', '9', '1', '5', '11', '13', '15']