2009-10-20 15 views
6

Jestem znudzony, a ten problem znów mnie prześladował. Po powrocie na uniwersytet zawsze zastanawiałem się, jak planują egzaminy. Możliwość zaplanowania na 10-tygodniową sesję egzaminacyjną w ciągu 2 tygodni i zagwarantowania, że ​​żaden uczeń nie zda egzaminu w dwóch kolejnych okresach. Zakładam, że zastosowana zostanie jakaś forma heurystyki.Algorytm harmonogramu/problem

dzisiaj jestem znudzony, a jeśli dasz mi odpowiednie narzędzia, będę pracować na nim dzisiaj i aż do weekendu

okrzyki, dassouki

EDIT 1: I Chyba byłoby założenie, że wszyscy wiemy, jest następujący:

  1. liczba studentów i kursów, które oni każdy włączonych
  2. Liczba miejsc w okresie badania
+0

Jeśli rzeczywiście tak się dzieje, sprawy zmieniły się od czasu, gdy poszedłem do college'u - na pewno miałem kilka egzaminów w kolejnych okresach. –

+1

Obawiam się, że nadal jest to robione ręcznie w ogromnej większości przypadków. To nie tak, że dziesięć tysięcy studentów ma zupełnie inny zestaw egzaminów, prawda? Prawdopodobnie istnieje kilka dziesiątek "grup egzaminacyjnych", z których każda zawiera do kilkuset studentów. Nie powinno być takiego problemu, aby zaplanować je ręcznie, jeśli masz wystarczająco dużo miejsca. – Joren

+0

Poszedłem na studia zaledwie kilka lat temu. Mimo że wszystkie nasze systemy planowania były elektroniczne, na ucznia będącym w konflikcie spoczywało zadanie rozwiązania sprzecznych harmonogramów i znalezienia administratora, który mógłby je zmienić. System nie posiadał własnej inteligencji planowania. – ephemient

Odpowiedz

1

Jest to kosztowne, ale widziałem CPLEX używane do podobnych typów problemów.

5

Jest to przykład problemu z ograniczeniem wymagań , który jest trudną klasą problemów. Niektóre z nich znajdują się w klasie NP. Istnieją duże komercyjne pakiety oprogramowania do prób rozwiązywania takich problemów (np. CPLEX) - i generalnie używają trochę matematyki i wielu heurystyk.

+0

Dobry komentarz, ale nie dokładnie to, co nazywam "odpowiedzią". Czy masz jakieś sugestie, jak rozwiązać ten problem, lub zasoby na ten temat? –

1

Problem może być nieco bardziej ogólny. Na przykład w mojej szkole egzaminy są zaplanowane, kiedy zajęcia są zaplanowane - tj. Wszystkie zajęcia, które spotykają się w tym samym czasie zwykle w trakcie semestru, mają egzamin zaplanowany na określony blok tygodnia egzaminacyjnego (niekoniecznie w tym samym czasie co regularne spotkanie klasowe). Konflikty na ogół nie istnieją, ponieważ uczniowie nie będą uczęszczać na dwie klasy w tym samym czasie spotkania z oczywistych powodów, a zatem nie mieliby dwóch egzaminów w tym samym czasie.

Oznacza to jednak, że należy jeszcze zaplanować klasy klasy, aby nie powodowały konfliktów. :)

1

Użyłem tabu search podczas mojego mistrza. Pomysł nie jest zbyt skomplikowana:

  1. początek z jednym z możliwych rozwiązań (ktokolwiek) i tłuczek do niego (np dać -1000 punktów jeśli student ma dwa egzaminy w tym samym czasie)
  2. zmianę, rozwiązanie po prostu zmieniając kilka zadań i przeliczyć ponderation
  3. 2. jeśli jest lepszy niż 1. i powtórzyć zaczynając 2. jako rozwiązanie głównego

jeśli zablokowane, można „odwiedzić” inne rozwiązania, dokonując ważne zmiany w początkowym rozwiązaniu.

7

Wiem, że to nie dotyczy tematu, ale moja uczelnia po prostu zaplanowała egzaminy w blokach, które pasowały do ​​godzin lekcyjnych. Tak więc wszyscy, którzy mieli MWF klasy o 13:20, byli na egzaminie 15 dnia o 13:00. Ponieważ nie możesz wziąć dwóch klas jednocześnie, nie można było mieć konfliktów z egzaminami.

+1

+1 - niezły, ale mimo to – Jacob

+0

To dobry sposób na zrobienie tego, ale oni musieli jeszcze wygenerować rozkłady zajęć! –

+2

Nie musieliby się martwić o planowanie, aby generować rozkłady zajęć! Jeśli dwie klasy są w tym samym czasie - nie będziesz w stanie wziąć ich obu. O ile, oczywiście, nie miałeś zegarka czasu jak Hermiona !! – Hari

1

Kiedy byłem starszym kolegium, zrobiliśmy ostateczny projekt w naszej klasie AI podobnej do tej. Napisaliśmy (ledwo) działający system, aby zaplanować zajęcia w budynkach w odpowiednim czasie. Nie można pogwałcić niektórych zasad: jeżeli prof. potrzebował klasy multimedialnej, dostał jedną. Jeśli była to klasa CS, to nie powinna być zaplanowana w budynku Sztuka. Profesi nie mają więcej niż 2 godziny między zajęciami, itd.

Użyliśmy algorytmu genetycznego.

1

Kilka rzeczy, które sprawiają, że problem jest prostszy. Prawdopodobnie możesz zmniejszyć liczbę "jednostek do harmonogramu" z kilkudziesięciu tysięcy do kilkuset, patrząc na osoby, które mają taki sam zestaw egzaminów. Jeśli masz 300 osób, które wszyscy siedzą "Wprowadzenie do informatyki" i "Matematyka dla uczniów CS", możesz zaplanować wszystkie 300 jako pojedynczą jednostkę, ponieważ wszystkie będą miały te same ograniczenia i prawdopodobnie (nie) będziesz chciał tego samego egzaminy, które należy zdawać w wielu automatach.

+1

Dlaczego nie tylko zaplanować na podstawie każdej klasy? Zapomnij o uczniach, pomyśl na poziomie klasy. Nie możesz być w dwóch miejscach jednocześnie, niezależnie od tego, czy jest to egzamin, czy wykład. –

+0

Głównym powodem jest to, że kiedy byłem na uniwersytecie, nie było nic (poza czasem), aby powstrzymać uczniów od podejmowania dodatkowych zajęć. Dodaj później powikłanie dotyczące ponownego podjęcia nieudanego egzaminu i jesteś w świecie bólu. – Vatine

1

To jest aplikacja graph coloring problem. Ten problem można przedstawić jako wykres, w którym każdy wierzchołek jest kursem, a krawędź między dwoma wierzchołkami oznacza, że ​​istnieje wspólny uczeń zapisany na oba kursy. Jest to więc problem z kolorowaniem wykresu, w którym minimalna liczba szczelin czasowych jest równa minimalnej liczbie kolorów wymaganych do barwienia wierzchołków wykresu w taki sposób, że żadne dwa sąsiednie wierzchołki nie mają tego samego koloru.