FET – Dokumentacja ograniczeń czasowych



2 zajęcia kolejno po sobie (Constraint2ActivitiesConsecutive)


Znaczniki: Weight, Compulsory, First_Activity_Id, Second_Activity_Id


Opis: Masz dwa zajęcia, które chciałbyś aby odbyły się kolejno po sobie w tym samym dniu. Kolejność ma znaczenie. Dopasowanie chromosmu jest zwiększane o pewną wartość, tym większą im dłuższy czas dzieli odbycie się zajęć. Obecnie współczynnik dopasowania zwiększa się o 1 z każdą dodatkową godziną rozdzielającą zajęcia i każdym dniem pomiędzy nimi (optymalnie powinno być 0 - gdy godzina rozpoczęcia drugich zajęć jest godziną skończenia się pierwszych). Pewien użytkownik chciał uwzględnić potrzebę przeprowadzenia w zajęć po sobie (kolejność była istotna). Zarówno dla ograniczenia obowiązkowego jak i nieobowiązkowego, zwracany jest normalny komunikat o błędzie. Konflikt oznacza różnicę w dniach + różnicę w godzinach. Ilość konfliktów mnożona jest przez 2 w przypadku gdy pierwsze zajęcia odbywają się co tydzień (w odróżnieniu od zajęć odbywających się co 2 tygodnie) i jeszcze raz mnożona przez 2, gdy drugie zajęcia odbywają się co tydzień.



2 zajęcia zgrupowane (Constraint2ActivitiesGrouped)


Znaczniki: Weight, Compulsory, First_Activity_Id, Second_Activity_Id


Opis: Masz dwa zajęcia, które chciałbyś aby odbyły się kolejno po sobie w tym samym dniu. Kolejność nie ma znaczenia. Dopasowanie chromosmu jest zwiększane o pewną wartość, tym większą im dłuższy czas dzieli odbycie się zajęć. Obecnie współczynnik dopasowania zwiększa się o 1 z każdą dodatkową godziną rozdzielającą zajęcia i zwiększa się o 1 z każdym dodatkowym dniem. (Dla godzin mamy minimum 0, gdy zajęcia są OK, dodatnią stałą gdy się pokrywają i zwiększającą się wartość dodatnią gdy się od siebie oddalają). W przypadku dni - mamy prostą różnicę bezwględną. Pewien użytkownik chciał aby 2 zajęcia odbyły się jedne po drugich, przy czym ich kolejność nie miała znaczenia. Zarówno dla ograniczeń obowiązkowych jak i nieobowiązkowych, zwracany jest normalny komunikat o błędzie. Komunikaty o konfliktach to: różnica w dniach + lub - różnica w godzinach, gdy zajęcia są od siebie oddalone. Jeśli zajęcia pokrywają się, mamy dodatnią wartość, 0 otrzymujemy gdy zajęcia są OK. Ilość konfliktów mnożona jest przez 2 w przypadku gdy pierwsze zajęcia odbywają się co tydzień (w odróżnieniu od zajęć odbywających się co 2 tygodnie) i jeszcze raz mnożona przez 2, gdy drugie zajęcia odbywają się co tydzień.



Niepokrywanie się zajęć (ConstraintActivitiesNotOverlapping)


Znaczniki: Weight, Compulsory, Number_of_Activities, Activity_Id, Activity_Id


Możliwe znaczniki: More Activity_Id


Opis: To ograniczenie ma na celu uniknięcie odbywania się zajęć w jednym czasie. Liczba konfliktów to liczba godzin, które się pokrywają.



Preferowane czasy wielu zajęć (ConstraintActivitiesPreferredTimes)


Znaczniki: Weight, Compulsory, Teacher_Name, Students_Name, Subject_Name, Subject_Tag, Number_of_Preferred_Times, Preferred_Time


Znaczniki Preferred_Time: Preferred_Day, Preferred_Hour


Opis: Zwraca konflikt, gdy zajęcia odbywają się w innym niż preferowany dla nich przedziale czasu. Zestaw zajęć może zostać określony przez wybór przedmiotu, nauczyciela, studentów lub przez ich kombinację. Pewien użytkownik zasugerował, że ograniczenie ConstraintActivityPreferredTimes powinno być bardziej ogólne. Teraz możesz dobrać filtr nauczycieli, studentów czy przedmiotu aby wybrać odpowiedni zbiór zajęć, które mają odbyć się w określonym czasie.



Ta sama godzina rozpoczęcia zajęć (ConstraintActivitiesSameStartingHour)


Znaczniki: ???


Opis: To ograniczenie pozwala na zaplanowanie rozpoczęcia kilku zajęć o tej samej godzinie. Liczba konfliktów to suma różnic czasów odbywania się wszystkich par zajęć. Przez różnicę czasów odbywania się rozumie się różnicę czasów ich rozpoczęcia. DO ZROBIENIA: Zajęcia cotygodniowe wliczają się podwójnie, a odbywające się co 2 tygodnie liczą się pojedynczo (czy to naprawdę jest konieczne?). WAŻNE: Obowiązkowe ograniczenie tego typu powoduje użycie algorytmu reparacji chromosomu (ang.chromosome repairing), co powoduje, że nie zostanie wyświetlony komunikat o konflikcie.



Ten sam czas rozpoczęcia zajęć (ConstraintActivitiesSameStartingTime)


Znaczniki: Weight, Compulsory, Number_of_Activities, Activity_Id, Activity_Id


Możliwe znaczniki: More Activity_Id


Opis: It aims at scheduling a set of activities at the same starting time. Liczba konfliktów to suma różnic czasów rozpoczęcia wszystkich par zajęć.. Różnicą czasów odbywania się pary zajęć jest suma różnic w dniach ich rozpoczęcia oraz godzinach rozpoczęcia. DO ZROBIENIA: Zajęcia cotygodniowe wliczają się podwójnie, a odbywające się co 2 tygodnie liczą się pojedynczo (czy to naprawdę jest konieczne?). WAŻNE: Począwszy od wersji 3.2.3 nałożenie obowiązkowego ograniczenia tego typu powoduje użycie algorytmu reparacji chromosomu (ang. chromosome repairing), więc nie będzie komunikatu o konfliktach. W przypadku ograniczeń obowiązkowych rozwiązanie-kandydat poddawany jest naprawie przed wyliczeniami (więc wszystkie rozwiązanie będą spełniać to ograniczenie i nie będzie konfliktów). Jest to szybsza metoda, co udowodnione zostało w przykładzie Iana Fantoma. W przypadku ograniczeń nieobowiązkowych, metoda powoduje raportowanie konfliktów (i jest wolniejsza, gorsza od metody opisanej powyżej).


Zajęcia kończą dzień (ConstraintActivityEndsDay)


Znaczniki: Weight, Compulsory, Activity_Id



Opis: Powoduje zwiększenie współczynnika konfliktów o ilość zajęć, które następują po zajęciach przewidzianych jako ostatnie.


Preferowany czas pojedynczych zajęć (ConstraintActivityPreferredTime)


Znaczniki: Weight, Compulsory, Activity_Id, Preferred_Hour, Preferred_Day


Opis: Im bardziej czas odbycia zajęć odbiegać będzie od pożądanego, tym bardziej zwiększał się będzie współczynnik konfliktu dla chromosomu. Obecnie zostaje on zwiększony o 1 z każdą godziną różnicy i o 1 z każdym dniem. W przypadku ograniczeń obowiązkowych rozwiązanie-kandydat poddawany jest naprawie przed wyliczeniami (więc wszystkie rozwiązanie będą spełniać to ograniczenie i nie będzie konfliktów). Jest to szybsze (udowodnione bardziej praktycznie niż teoretycznie). W przypadku ograniczeń nieobowiązkowych metoda powoduje raportowanie konfliktów. Procedura informuje o współczynniku konfliktów, który zwiększa się wraz z odległością od pożądanego czasu odbywanie się zajęć. Może to powodować, że otrzymasz gorsze wyniki, jeśli interesuje Cię, aby zajęcia odbyły się w ściśle określonym czasie. W takim przypadku proszę użyć ograniczenia Preferowanych czasów pojedynczych zajęć i określić tylko jedną, pożądaną godzinę odbywania się zajęć.



Preferowane czasy pojedynczych zajęć (ConstraintActivityPreferredTimes)


Znaczniki: Weight, Compulsory, Activity_Id, Number_of_Preferred_Times, Preferred_Time


Znaczniki Preferred_Time: Preferred_Day, Preferred_Hour


Opis: Zwraca konflikt, gdy zajęcia odbywają się w innym niż preferowany dla nich przedziale czasu. Możesz określić dowolne przedziały czasowe, w których odbywać mogą się zajęcia (taki rodzaj LUB dla większej ilości ograniczeń Preferowany czas pojedynczych zajęć). WAŻNE: W przypadku pojedynczego nieobowiązkowego preferowanego czasu, ograniczenie Preferowane czasy pojedynczych zajęć mogą się lepiej zachowywać niż Preferowany czas pojedynczych zajęć, zależnie od tego, czy jesteś zainteresowany zmniejszaniem odstępu od tego preferowanego czasu lub czy interesuje Cię jedynie dokładne rozwiązanie. Przejrzyj szczegółowe obserwacje w objaśnieniu dla ograniczenia Preferowany czas pojedynczych zajęć.



Podstawowe obowiązkowe ograniczenie czasowe (ConstraintBasicCompulsoryTime)


Znaczniki: Weight, Compulsory


Opis: Na tą klasę ograniczeń składają się wszystkie podstawowe ograniczenia obowiązkowe (które muszą być spełnione przez każdy plan zajęć) - ich część związana z przyporządkowaniem czasu zajęciom.



Przerwa (ConstraintBreak)


Znaczniki: Weight, Compulsory, Day, Start_Hour, End_Hour


Opis: Powoduje ono, że żadne zajęcia nie będą zaplanowane określonego dnia, pomiędzy godzinami rozpoczęcia i końca przerwy.



Min N dni pomiędzy zajęciami (ConstraintMinNDaysBetweenActivities)


Znaczniki: Weight, Compulsory, Day, Number_of_Activities, Activity_Id, Activity_Id, MinDays


Możliwe znaczniki: More Activity_Id


Opis: Dotyczy zbioru zajęć i wymaga podania stałej N. Dla każdej pary zajęć z tego zbioru nie pozwala się, aby zajęcia odbywały się częściej, niż co N dni. Jeśli ustawisz N=1, wówczas ograniczenie to oznacza, że żadna z par zajęć nie może odbyć się tego samego dnia. N=2 oznacza przynajmniej jeden dzień przerwy pomiędzy zajęciami. Przykład: 3 zajęcia i N=2. Można mieć wtedy zajęcia w poniedziałek, środę i piątek (dla 5 dni w tygodniu). Przykład2: 2 zajęcia, N=3. Wówczas możemy mieć zajęcia w poniedziałek i czwartek, poniedziałek i piątek lub wtorek i piątek (dla 5 dni w tygodniu).



Wczesne zajęcia dla studentów (ConstraintStudentsEarly)


Znaczniki: Weight, Compulsory


Opis: Ograniczenie to powoduje, że współczynnik konfliktów zostaje powiększony o wartość związaną z tym, jak wcześnie studenci rozpoczynają zajęcia. W rezultacie otrzymuje się plan, w którym większość zajęć odbywa się na początku dnia. WAŻNE: zajęcia odbywające się co 2 tygodnie są traktowane jak cotygodniowe, co pozwala zwiększyć prędkość działania, a w normalnej sytuacji nie ma znaczenia. Jest to ograniczenie, które wymaga, aby wszyscy studenci rozpoczynali swoje lekcje tak wcześnie, jak tylko to możliwe. Bądź ostrożny z tym ograniczeniem: jeżeli którakolwiek z grup studentów, któregoś dnia, będzie zaczynać zajęcia później, niż na pierwszej godzinie, będzie to skutkowało konfliktem.



n godzin dziennie dla studentów (ConstraintStudentsNHoursDaily)


Znaczniki: Weight, Compulsory, MaxHoursDaily, MinHoursDaily


Opis: W rezultacie narzucenia tego ograniczenia otrzymamy plan, w którym wszyscy studenci nie mogą mieć więcej niż max lub mniej niż min godzin zajęć dziennie.



Brak okienek dla studentów (ConstraintStudentsNoGaps)


Znaczniki: Weight, Compulsory


Opis: Do współczynnika konfliktów chromosomu dodana zostaje wartość obliczona na podstawie ilości okienek w zajęciach (godzinnych lub dłuższych przerw) studentów. W rezultacie otrzymuje się plan mający mniej okienek dla studentów.



Max dni w tygodniu z przedziałem dla grupy studentów (ConstraintStudentsSetIntervalMaxDaysPerWeek)


Znaczniki: Weight, Compulsory, Students, Start_Hour, End_Hour, Max_Intervals


Opis: Dla pewnej grupy studentów: Celem tego ograniczenia jest aby nie dopuszczać do odbywania się zajęć w pewnym przedziale godzinowym więcej niż n razy w tygodniu (np. tylko dwa razy zajęcia mogą odbywać się pomiędzy 15.00 a 18.00, co mogłoby odpowiadać popołudniom w poniedziałek i wtorek). Nieco skomplikowana i przydługa nazwa. Pewien użytkownik chciał nie dopuszczać do odbycia się zajęć grupy studentów podczas więcej niż dwóch popołudni w tygodniu. To ograniczenie jest bardziej ogólne. Możesz określić dla grupy przedział czasu (godzinę początkową i końcową) i maksymalną ilość dni w tygodniu, dla których dopuszczasz odbywanie się zajęć w podanym przedziale czasu.



n godzin dziennie dla grupy studentów (ConstraintStudentsSetNHoursDaily)


Znaczniki: Weight, Compulsory, MaxHoursDaily, MinHoursDaily, Students


Opis: W efekcie narzucenia tego ograniczenia otrzymamy plan spełniający warunek, że określona grupa studentów nie może mieć mniej niż min i więcej niż max godzin dziennie.



Brak okienek dla grup studentów (ConstraintStudentsSetNoGaps)


Znaczniki: Weight, Compulsory, Students


Opis: To ograniczenie zwiększa współczynnik konfliktu o wartość obliczoną na podstawie ilości okienek (godzinnych lub dłuższych przerw) w planie zajęć grupy studentów.



Grupa studentów nieosiągalna (ConstraintStudentsSetNotAvailable)


Znaczniki: Weight, Compulsory, Students, Day, Start_Hour, End_Hour


Opis: Zwraca współczynnik konfliktów równy iloczynowi wagi ograniczenia i ilości konfliktowych godzin dla każdej z grup studentów (godzin, gdy jest ona nieosiągalna, a mimo to zaplanowano dla niej wówczas zajęcia). Obecnie dotyczy to konkretnego dnia i pewnego przedziału czasu. (konkretnie chodzi o dzień "Dzień" i okres pomiędzy godzinami początkowymi i końcowymi).



Max dni w tygodniu dla nauczycieli (ConstraintTeacherMaxDaysPerWeek)


Znaczniki: Weight, Compulsory, Teacher_Name, Max_Days_Per_Week


Opis: Jeśli użyjemy tego ograniczenia plan musi spełnić warunek, że nauczyciel nie może pracować w większą niż to określono ilość dni w tygodniu..



Nauczyciel nieosiągalny (ConstraintTeacherNotAvailable)


Znaczniki: Weight, Compulsory, Teacher_Name, Day, Start_Hour, End_Hour


Opis: Zwraca współczynnik konfliktów równy iloczynowi wagi ograniczenia i ilości konfliktowych godzin (godzin, gdy jest on nieosiągalny, a mimo to zaplanowano dla niego wówczas zajęcia). Obecnie dotyczy to konkretnego dnia i pewnego przedziału czasu. (Nauczyciela "Nauczyciel", dnia "Dzień" i przedziału pomiędzy godziną rozpoczęcia i końca).



Brak okienek dla nauczycieli (ConstraintTeachersNoGaps)


Znaczniki: Weight, Compulsory


Opis: Do współczynnika konfliktów chromosomu dodana zostaje wartość obliczona na podstawie ilości okienek w zajęciach (godzinnych lub dłuższych przerw) nauczycieli. W rezultacie otrzymuje się plan mający mniej okienek dla nauczycieli.



Max godzin bez przerwy dla nauczycieli (ConstraintTeachersMaxHoursContinuously)


Znaczniki: Weight, Compulsory, Maximum_Hours_Continuously


Opis: To ograniczenie ma na celu nie dopuszczenie do tego, aby nauczyciel prowadził zajęcia dłużej niż to określono bez przerwy.



Max godzin dziennie dla nauczycieli (ConstraintTeachersMaxHoursDaily)


Znaczniki: Weight, Compulsory, Maximum_Hours_Daily


Opis: To ograniczenie ma na celu nie dopuszczenie do tego, aby nauczyciel prowadził dziennie więcej niż to określono zajęć.



Max godzin dziennie dla nauczycieli i podgrup studentów (ConstraintTeachersSubgroupsMaxHoursDaily)


Znaczniki: Weight, Compulsory, Maximum_Hours_Daily


Opis: Ograniczenie ma na celu nie dopuszczać do tego, aby określony nauczyciel miał z określoną podgrupą studentów więcej niż X zajęć dziennie.


Max godzin dziennie dla nauczycieli i wyróżnika przedmiotu (ConstraintTeachersSubjectTagMaxHoursContinuously)


Znaczniki: Weight, Compulsory, Maximum_Hours_Daily


Opis: Ograniczenie ma na celu nie dopuszczać do tego, aby nauczyciele mieli więcej niż X zajęć o określonym wyróżniku przedmiotu dziennie.


Max godzin dziennie dla nauczycieli i wyróżników przedmiotów (ConstraintTeachersSubjectTagsMaxHoursContinuously)


Znaczniki: Weight, Compulsory, Maximum_Hours_Daily


Opis: Ograniczenie ma na celu nie dopuszczać do tego, aby nauczyciele mieli więcej niż X zajęć o tym samym wyróżniku dziennie.


ta dokumentacja została sporządzona przez Daniel S.