Skip to content

Commit

Permalink
Correction
Browse files Browse the repository at this point in the history
  • Loading branch information
Valdr687 committed Apr 28, 2024
1 parent e821675 commit c6857ee
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 28 deletions.
9 changes: 6 additions & 3 deletions Backend/Generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Expand Down Expand Up @@ -378,4 +378,7 @@ def Permutations(Liste):
PremierTrinome = i[0]
listeCombinaison.append(SousListe)
SousListe = [list(i)]
listeCombinaison.append(SousListe)

return listeCombinaison

71 changes: 46 additions & 25 deletions Generateur.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -102,25 +114,35 @@ 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)
Dispo = dispoEDT(TD, TP, jour, demiHeureAprès(heure), semaine, Rotation, Planning,
EmploiDuTemps, trinome, Coloscope, GroupeLV1, GroupeLV2, ListeLangues)
print(trinome, demiHeureAprès(heure), jour, semaine, Dispo)


# Colles de français -----------------------------------

ElevesAColler = []
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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']

0 comments on commit c6857ee

Please sign in to comment.