Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta
Návrh rozšíření IS MZLU v Brně o automatickou tvorbu rozvrhů bakalářská práce
Brno 2008
Vedoucí bakalářské práce:
Vypracoval:
Ing. Oldřich Trenz, Ph. D.
Ing. Milan Dufka
Poděkování Děkuji Ing. Oldřichu Trenzovi, Ph. D. za trpělivé odborné vedení, cenné rady a podněty při zpracování této práce.
Prohlášení
Prohlašuji, že jsem bakalářskou práci na téma „Návrh rozšíření IS MZLU v Brně o automatickou tvorbu rozvrhů“ vypracoval samostatně a použil jen pramenů, které cituji a uvádím v přiloženém soupisu literatury. Souhlasím, aby práce byla uložena v knihovně Mendelovy zemědělské a lesnické univerzity v Brně a zpřístupněna ke studijním účelům. V Brně, dne…………………………… Podpis autora……………………
ABSTRACT Dufka, M. Upgrade suggestion for information system at Mendel University of Agriculture and Forestry in Brno by automated timetabling. Bachelor thesis. Brno, 2008.
This thesis is oriented to complex problem of university courses timetabling with more than one simultaneous optimization criteria. Thesis describes timetabling problem and analyses its using in information system of Mendel University of Agriculture and Forestry in Brno. In this bachelor work is described already solved timetabling algorithm and webbased application by Tomáš Müller, Ph.D.
KEY WORDS: automatic timetabling, university information systems, UniTime
ABSTRAKT Dufka, M. Návrh rozšíření IS MZLU v Brně o automatickou tvorbu rozvrhů. Bakalářská práce. Brno, 2008. Rozvrhování univerzitních předmětů je složitý problém, při jehož řešení je nutné uvažovat více optimalizačních kriterií současně. Tato práce rozebírá problematiku rozvrhování a jeho zakomponování do informačního systému Mendelovy lesnické a zemědělské univerzity v Brně. Práce popisuje již vyvinutý rozvrhovací algoritmus a webovou aplikaci Tomáše Müllera, Ph.D.
KLÍČOVÁ SLOVA: automatické rozvrhování, univerzitní informační systémy, UniTime
-5-
OBSAH 1
ÚVOD A CÍL PRÁCE
8
1.1
Úvod
8
1.2
Cíl práce
9
2
ÚVOD DO PROBLEMATIKY IS A PROGRAMOVÁNÍ S OMEZUJÍCÍMI
PODMÍNKAMI
10
2.1 Problematika informačních systémů 2.1.1 Historie informačních systémů
10 10
2.1.2
Definice informačního systému
10
2.1.3
Informační systém obecně
12
2.1.4
Informační systém školy
15
2.1.5
Analýza, návrh a implementace informačního systému
15
2.1.6
Postup při vytváření informačního systému
16
2.1.7
Životní cyklus informačního systému
17
2.1.8
Metodika vytváření informačního systému
17
2.2 Programování s omezujícími podmínkami 2.2.1 Co je omezující podmínka?
19 20
2.2.2
Constraint programming
20
2.2.3
Řešení systému podmínek
20
2.2.4
Algoritmy systematického prohledávání
21
2.2.5
Základní algoritmy
21
2.2.6
Konzistenční techniky
22
2.2.7
Propagace podmínek
22
2.2.8
Pořadí výběru proměnných a hodnot
23
2.2.9
Heuristické a stochastické algoritmy
23
2.2.10
Shrnutí technik programování s omezujícími podmínkami
24
3
ÚSKALÍ TVORBY ROZVRHŮ
26
3.1
Školní rozvrhování
26
3.2
Rozvrhování předmětů
27
3.3
Co je to rozvrh?
28
-6-
3.3.1
Různé varianty rozvrhu
29
3.4
Interaktivní versus automatizované (dávkové) zpracování
31
3.5
Požadavky na rozvrhovací algoritmus
32
3.6
Model rozvrhovacího problému
32
4
ALGORITMUS PRO TVORBU ROZVRHŮ
4.1
Interaktivní rozvrhovací program – první pohled
35
4.2
Interaktivní rozvrhovací program – koncept
36
4.3
Výběr aktivity (kritérium výběru proměnné)
39
4.4
Výběr umístění aktivity (kritérium výběru hodnoty)
40
4.5
Jak uniknout cyklu?
41
4.6
Použití algoritmu pro řešení obecných problémů s omezujícími podmínkami
42
4.7
Shrnutí
44
5
ANALÝZA ZAKOMPONOVÁNÍ DO IS MZLU V BRNĚ
5.1
Aplikační architektura UIS
45
5.2
Databáze UIS
45
5.3
Rozšíření UIS o automatickou tvorbu rozvrhů
48
5.4
University Course Timetabling
48
5.5
Zhodnocení UniTime 3.0
50
6
DISKUSE
52
7
ZÁVĚR
54
8
POUŽITÁ LITERATURA
55
-7-
35
45
1 ÚVOD A CÍL PRÁCE 1.1 Úvod Značné výhody Univerzitního informačního systému Mendelovy zemědělské a lesnické univerzity v Brně (dále jen UIS), který usnadňuje většinu každodenních činností spojených se studiem a tím zvyšuje produktivitu práce jak studentů tak i učitelů a zaměstnanců, již dnes nikdo nezpochybňuje. UIS sestává z mnoha modulů a je navržen tak, aby řešil problematiku informovanosti studentů i učitelů a problém celkové komplexnosti studijních záležitostí. Jedním z modulů je i modul Zobrazení rozvrhů, který umožňuje zobrazení a tisk denního, či týdenního rozvrhu jednotlivého studenta, vyučujícího, předmětu, místnosti, vybraného ústavu, pro určitý typ studia, programu, oboru, ročníku a skupiny. Modul ovšem neřeší tvorbu těchto rozvrhů, které se zatím bohužel vytváří ručně. Tato práce pojednává o problematice automatizování tvorby rozvrhů a její zakomponování do UIS. Samozřejmě existují školní systémy, které tuto problematiku již řeší, ale většina komerčních produktů vyhovuje spíše požadavkům středních a základních škol. Vysoké školy mají většinou tvorbu mnohem komplexnější a použití těchto produktů je zde spíše přítěží než usnadněním. Existuje však řešení, které je zdarma a dokáže celou problematiku obsáhnout. Jediným problémem zřejmě je, že se o tomto řešení neví. Vytvoření této práce bylo motivováno myšlenkou optimalizace časového rozvržení předmětů. Práce shrnuje poznatky z již dostupných zdrojů dlouhodobého bádání, kterým problematika tvorby nejenom univerzitních rozvrhů je. V následující kapitole této práce je pojednáno o problematice informačních systémů a o programování s omezujícími podmínkami pro představu, jak a proč jsou takové systémy důležité, jak zvyšují produktivitu práce a jakým způsobem se zpracovávají omezující podmínky. Třetí kapitola popisuje problematiku tvorby univerzitních rozvrhů. Zde je především pojednáno o tom, jakým způsobem se definují omezující kritéria. O konkrétním návrhu algoritmu pro tvorbu rozvrhů je kapitola čtvrtá, kde je popisován již osvědčený algoritmus z Purdue University v USA. V kapitole páté je analyzována možnost zakomponování navrhnutého řešení do informačního systému MZLU v Brně. V šesté kapitole je zamyšlení nad stávajícím stavem, možnostmi jeho změny a návrhy na rozšíření.
-8-
1.2 Cíl práce Cílem této práce je návrh rozšíření univerzitního informačního systému Mendelovy zemědělské a lesnické univerzity o automatickou tvorbu rozvrhů pro všechny fakulty a pracoviště univerzity. Práce by měla posloužit jako podklad pro implementační studii oddělení koncepce a vývoje UIS. K naplnění cíle je nutné nejprve čtenáře uvést do problematiky informačních systémů, programování s omezujícími podmínkami a úskalí návrhů především univerzitních rozvrhů. Dále je třeba, aby čtenář pochopil algoritmus, který je použit pro rozvrhování. Díky pochopení algoritmu lze totiž již předem optimalizovat vstupní údaje. Po těchto krocích lze konečně dospět k samotnému rozšíření univerzitního systému o již dlouhodobě vyvíjené řešení automatizovaného rozvrhování.
-9-
2 ÚVOD DO PROBLEMATIKY IS A PROGRAMOVÁNÍ S OMEZUJÍCÍMI PODMÍNKAMI
2.1 Problematika informačních systémů 2.1.1
Historie informačních systémů
Informační systém a informační technologie se koncem 20. století a počátkem nového století staly jedním z nejdůležitějších faktorů ekonomiky podniku [9]. Za posledních 20 let došlo téměř ve všech organizačních strukturách podniku ke značným změnám. Změny byly vyvolány především novými možnostmi informačních technologií a informačních systémů. Až do konce 70 let se od informačních systému a informačních technologií očekával především přímý efekt úspory pracovní síly a materiálu [10]. Později se však od informačních systémů očekávalo také zvýšení produktivity, flexibility, kvality služeb a tím i konkurenceschopnosti. Nyní snad již žádná instituce, větší firma či škola bez informačního systému a databáze nemůže existovat. Potřeba informačního systému vznikla proto, aby lidé měli v ucelené podobě informace pro rozhodování v různých oblastech, či aby mohli provádět rychlou a zároveň efektivní výměnu informací mezi různými subjekty. Informační systém by tak měl změnit dosavadní možnosti informovanosti. 2.1.2
Definice informačního systému
Dle encyklopedie wikipedia je informační systém systémem pro sběr, udržování, zpracování a poskytování informací a dat. Definice v [11] říká, že informační systém lze definovat jako soubor lidí, metod a technických prostředků zajišťujících sběr, přenos, uchování a zpracování dat s cílem tvorby a poskytování informací dle potřeb příjemců informací činných v systémech řízení. Další definice, která popisuje informační systém z jiného pohledu může znít: „Informační systém je obecně podpůrný systém pro systém řízení.“ Jestliže chceme projektovat systém jako takový, musíme znát, jaké jsou cíle, a informační systém řešit tak, aby tyto cíle podporoval [12].
- 10 -
Informační systém je také jedním z objektů zkoumání poměrně mladého vědního oboru informatika, která úzce spolupracuje s matematikou a kybernetikou. Zkoumá nejen strukturu a obecné vlastnosti informací ale i jejich transformaci, přenos a praktické užití. Dalším
pojmem
je
čímž
informatizace,
nazýváme
pronikání
informatiky
do společnosti. To vede ke vzniku informační společnosti, kde se informace stávají jednou z největších hodnot, kde se za informace platí penězi a kde informace hrají největší roli. V praxi platí pravidlo, že čím vzácnější a při případném použití výnosnější je informace, tím více bude stát. „Znalosti a informace jsou dnes jediným smysluplným zdrojem. Tradiční výrobní faktory - půda, práce a kapitál nezmizely, ale staly se druhořadými. Hlavním producentem bohatství jsou informace a znalosti.“ [14] Informace se k příjemci dostávají několika různými způsoby. Hlavní tok informací mají na starosti právě již zmiňované IS. Jejich úkolem je především poskytnout příjemci přiměřené množství dat ve vhodné formě. Systém musí nejprve data zpracovat a pak je teprve nabídnout člověku jako informaci. Z historického pohledu můžeme rozlišit tři hlavní formy procesu zpracování dat: •
Ruční
•
Mechanizované
•
Automatizované
Zpracování dat můžeme rozdělit do čtyř fází: •
Pořízení dat - získávání dat měřením, dotazováním a jinými vhodnými způsoby
•
Uchování dat - ukládání dat na papírová, magnetická, optická či jiná média
•
Zpracování dat - transformace primárních dat na informace, které lze ve srozumitelné formě prezentovat
•
Prezentace dat - grafy, tabulky či jiné vhodné prostředky pro prezentaci získaných informací
Tyto fáze procesu zpracování dat jsou realizovány různými technologiemi, kterým obecně říkáme informační technologie. Každý informační systém zahrnuje informační základnu, technické a programové prostředky, technologie a procedury, určitou organizaci a co především - odborně vyškolené pracovníky.
- 11 -
2.1.3
Informační systém obecně
Sousloví informační systém vzniklo ze dvou důležitých pojmů. Prvním pojmem je informace, která může být z filosofického hlediska chápána na velmi vysoké úrovni abstrakce podobně jako pojmy poznání, hmota, vědomí, myšlení. V České terminologické databázi knihovnictví a informační vědy lze nalézt tuto definici: „V nejobecnějším slova smyslu se informací chápe údaj o reálném prostředí, o jeho stavu a procesech v něm probíhajících. Informace snižuje nebo odstraňuje neurčitost systému (např. příjemce informace); množství informace je dáno rozdílem mezi stavem neurčitosti systému (entropie), kterou měl systém před přijetím informace a stavem neurčitosti, která se přijetím informace odstranila. V tomto smyslu může být informace považována jak za vlastnost organizované hmoty vyjadřující její hloubkovou strukturu (varietu), tak za produkt poznání fixovaný ve znakové podobě v informačních nosičích. V informační vědě a knihovnictví se informací rozumí především sdělení, komunikovatelný poznatek, který má význam pro příjemce nebo údaj usnadňující volbu mezi alternativními rozhodovacími možnostmi. Významné pro informační vědu je také pojetí informace jako psychofyziologického jevu a procesu, tedy jako součásti lidského vědomí (např. N. Wiener definuje informaci jako "obsah toho, co se vymění s vnějším světem, když se mu přizpůsobujeme a působíme na něj svým přizpůsobováním"). V exaktní vědě se např. za informaci považuje sdělení, které vyhovuje přísným kriteriím logiky či příslušné vědy. V ekonomické vědě se informací rozumí sdělení, jehož výsledkem může být zisk nebo užitek. V oblasti výpočetní techniky se za informaci považuje kvantitativní vyjádření obsahu zprávy. Za jednotku informace se ve výpočetní technice považuje rozhodnutí mezi dvěma alternativami (0, 1) a vyjadřuje se jednotkou nazvanou bit. Pojem systém lze chápat jako množinu prvků a vazeb mezi nimi, které jsou účelově definovány na nějakém nosiči. Obecné schéma systému je na obr. 1. zpětná vazba
vstup
transformace
výstup
Obr. 1: Obecné schéma systému Informační systém zobrazený na obr. 2 je obecným systémem s konkrétněji pojmenovanou částí transformační a zpětnovazební. - 12 -
data - stav
vstup
výstup
procesy
Obr. 2: Schéma informačního systému
Obecný informační systém (obr. 2) pracuje s jednou nebo více databázemi. Je možné, aby databázových
modelů
bylo
více
typů,
ale
nejobvyklejší
jsou
relační.
Nad těmito databázemi jsou definovány možné procesy nejčastěji ve formě možných transakcí. Tyto transakce jsou aktivovány na základě změn ve fyzickém systému. Změny ve fyzickém systému jsou sledovány buď automaticky pomocí různých čidel, nebo neautomaticky pomocí poučené obsluhy, která pak parametry pro spuštění transakcí zadává manuálně. Podobně výstupy informačního systému fyzický systém ovlivňují buďto automaticky nebo prostřednictvím obsluhy sledující tyto výstupy. Názornější obecné schéma informačního systému je na obr. 3.
- 13 -
Obr. 3: Obecné schéma informačního systému [8] Obecně chápeme informační systémy jako systémy pro zpracování dat, které mají tyto cíle: •
strategické (plánování investic…),
•
taktické (vedení, kontrola rozpočtů…),
•
operační (každodenní rutina).
Důležité jsou také úlohy IS: •
manažerské (EIS - Executive IS), - 14 -
•
taktické (DSS - Decision Support System),
•
vedení (MIS - Management IS),
•
expertní (KWS - Knowledge Work System),
•
kancelářské (OIS - Office IS),
•
operativní.
2.1.4
o
TPS - transakční (banky…),
o
CRM - péče o zákazníka,
o
RIS - rezervační systémy,
o
CAM - konstrukční (CAD…),
o
GIS – geografické informační.
Informační systém školy
Informační systém školy je specifickou oblastí manažerských informačních systémů (EIS). Poté, co se počítačově orientované informační systémy a technologie dostaly do nejrozmanitějších oborů lidského konání, stále více pozorujeme příznivé ohlasy ze školních institucí. Začíná být stále více podporován a prosazován informační systém školy, a to ve smyslu zefektivnění rutinní práce a vybudování komplexnějšího celku, který by sdružoval veškeré informace. Takový školní IS má za úkol informovat studenty o jejich studijním prospěchu, rozvrhu hodin, aktualitách, nařízeních školy a nejrůznějších záležitostech souvisejících se studiem. Zároveň by měl usnadnit práci jak studentům tak i učitelům, aby jejich práce byla efektivnější a kvalitnější. Jelikož nově vytvářené IS ve školství pracují s Internetem, zařazují se do systému mnohdy i odkazy na jednotlivé WWW informační servery, které se školstvím souvisí. Nároky na zavádění takového informačního systému nejsou jen finanční z hlediska hardwaru, ale také zde musíme počítat se zvyšováním kvalifikací pracovníků školy i studentů, tedy všech, kteří budou systémy využívat. Uživatelé takového IS školy by tedy měli mít minimální odbornou přípravu v oblasti výpočetní techniky, práce s osobními počítači a Internetem. 2.1.5
Analýza, návrh a implementace informačního systému
V této kapitole je definován postup realizace informačního systému. Tento postup je postupem ideálním, který je v praxi téměř vždy jistým způsobem modifikován, případně omezen z různých důvodů, z nichž většinou převažují důvody finanční a časové.
- 15 -
Pečlivá příprava modelu a dokumentace je velmi žádoucí a v konečném hodnocení projekt zkvalitní a učiní jej modifikovatelným, udržovatelným a dlouhodobě fungujícím. Proti této snaze stojí ale nechuť analytiků a programátorů dokumentovat svou činnost. Často je dokumentace vytvářena dodatečně a to zejména pod obchodním tlakem. Části architektury informačního systému: • model a jeho účel • databázová část • komunikační část 2.1.6
Postup při vytváření informačního systému
Základní schéma výstavby informačního systému je na obr. 4. data a procesy
komunikace
metodika
prohlášení o cílech, požadavky na systém rozčlenění prostředí na objekty a struktury, definice rozhraní objektů
specifikace komunikačního prostředí
analýza požadavků na systém
specifikace operací nad objekty, specifikace Integritních omezení
služby a prostředky nutné pro komunikaci, bezpečnost provozu
specifikační dokument
Konceptuální schéma (rozhraní objektů). typy vlastností, vazby mezi objekty
komunikační body a jejich vlastnosti
převod konceptuálního schématu na databázový model
rozčlenění systému na část server, komunikační kanál,klient
úroveň návrhu
implementace komunikace klient-server a uživatelského rozhraní
úroveň implementace
definice procesů v použitém formalismu
implementace procesů včetně úvahy o transakcích
informační systém
Obr. 4: Postup při vytváření informačního systému [8]
- 16 -
Jsou zde čtyři základní fáze či úrovně vzniku informačního systému: • formulace požadavků na úrovni fyzického systému • datová a funkční analýza (oddělení obecného od zvláštního - abstrakce) • návrh informačního systému (implementační dokumentace) a • implementace informačního systému 2.1.7
Životní cyklus informačního systému
Jako každý jiný systém má i informační systém několik životních fází (SLC-System Life Cycle): • fáze plánování, • fáze analýzy, • fáze návrhu, • fáze užití. Ve fázi užití vznikají opět impulsy pro vylepšování systému, takže cyklus se neustále opakuje. 2.1.8
Metodika vytváření informačního systému
Při vytváření informačního systému nejde jen o vlastní technickou implementaci, ale i o popis dokumentační a nedílně i obchodní stránky. Je třeba si uvědomit, že realizace informačního systému je inženýrské dílo a je třeba postupovat podle spolehlivé metodiky, sestávající také ze spolehlivé dokumentace. V tomto textu je alespoň částečně metodika včetně dokumentace demonstrována. Je třeba se zamyslet nad dokumenty, které v průběhu výstavby
a implementace
informačního
systému
vznikají,
nebo
vznikat
mají.
Implementace informačního systému je totiž také obchodní případ, který je třeba řádně dokumentovat, aby se minimalizovaly konflikty a finanční ztráty. Nadále bude strana zadávající a také financující projekt uživatelem a strana realizující implementátorem. 2.1.8.1 Návrh Hlavním artefaktem jsou případy užití (nebo také modely jednání - use cases). Základními prvky jsou: aktér, scénář a impuls-reakce (zpráva). Případy užití je možno, podobně jako v softwarovém inženýrství, rozšiřovat či generalizovat. Model spolupráce je dalším artefaktem, který vzniká na základě případů užití. Hledají se zde první náznaky tříd, odpovědností a vztahů. To pak ústí v objektový model, který již přesně zachycuje celý systém, vztahy mezi objekty či hierarchii dědění. - 17 -
Funkční model poskytuje kontrolní pohled na vytvářený systém. De facto standardem je zde DFD (Data Flow Diagram), jež poskytuje snadné grafické vyjádření propojitelné s datovým modelem. DFD diagramy obsahují aktéry (obdélník - například osoba, instituce, jiný systém a podobně), datové sklady (obdélník se zaoblenými rohy bez pravé strany uchovává data), procesy (obdélníky se zaoblenými rohy - manipulují s daty, jsou algoritmy) a konečně datové toky (šipky - předávání datových záznamů). DFD model je hierarchický, to znamená, že procesy se dají postupně zjemňovat. Každý proces tedy obsahuje „vnořený“ diagram, a tak dále až po takzvané listové procesy, které jsou atomické (nedělitelné). Každý proces v DFD obsahuje textový popis (například pseudokód, přirozený jazyk, různé podmínky a podobně), popis omezení (constraints) a také dodatečné informace (možnosti optimalizace atd). Dynamický model přispívá k pochopení změn v systému. Možné popisy jsou například slovní scénáře, grafické scénáře (např. sekvenční diagramy), mapy událostí (jeden diagram na celý systém) nebo stavové diagramy a tabulky. Samostatnou kapitolou jsou pak ERdiagramy, které zachycují datový model. 2.1.8.2 Architektura Velmi důležitým hlediskem je volba architektury. Téměř výhradně se používá 3-vrstvá architektura: •
presentační (interakce s uživatelem),
•
funkční (vlastní aplikace, bezpečnost, propojení se světem, kontrola…),
•
datová (vlastní data).
•
Důležitá je i bezproblémová integrace IS, která má dvě hlediska: vnitřní, kde jde o proškolení pracovníků, nastavení prostředí a podobně, a vnější, kde se jedná zejména o zákazníky a dodavatele.
2.1.8.3 Implementace Většina systémů se implementuje jako tzv. Data Warehouses (DW), což je architektura (obvykle založená na SŘBD), jež transformuje operativní data do jiné podoby, u které se bere ohled například na čas a rychlost následných dotazů. Tato data se nemění, mohou se transformovat z více zdrojů (např. od dodavatelů) a jsou aktualizována v časových
- 18 -
intervalech. Nad nimi se dělají statistiky či analýza. To je poslední fáze - OLAP (Online Analytical Processing). Opakem DW jsou OLPT (Online Transaction Processing Systems), které jsou často přirovnávány k „výrobě“ podniku, DW pak ke „skladování“ výrobků, následně OLAP systémy jsou pak jakýmsi „prodejem“. Je zřejmé, že OLAP systémy jsou rozšířením OLTP systémů, také jejich návrh je složitější. Je zde použitá tzv. multidimenzionální architektura. Další dimenzí je zde čas, oblast či obchodník. OLAP systémy jsou tak specifické, že se v nich může porušovat například normalizace (NF) a data jsou v těchto systémech velmi řídká. Systémy OLAP jsou implementovány buď nad relačními databázemi, nebo nad speciálními (zejména objektovými) OLAP databázemi. Z dnešních systémů jmenujme například Intersystem Caché nebo Oracle OLAP.
2.2 Programování s omezujícími podmínkami Programování s omezujícími podmínkami patří k méně známých softwarovým technologiím, kterému se ovšem věnuje na celém světě spousta institucí, organizací a skupin. Nejznámější skupinou v Evropě je ERCIM (European Research Consortium for Informatics and Mathematics) a u nás CLP Research Group Karlovy univerzity. Omezující podmínky by se mohly stát hybnou silou ve vývoji pokročilého softwaru příštích let. Ostatně již v roce 1995 představoval trh se softwarem založeným na omezujících podmínkách kolem 100 miliónů dolarů. Omezující podmínky se dnes používají v takových oblastech jako je robotika, počítačová grafika, grafická uživatelská rozhraní nebo řešení rozsáhlých kombinatorických problémů. Výzkum v této oblasti sponzoruje třeba Apple Computer. [7] Programování s omezujícími podmínkami představuje stále se rozšiřující technologii pro deklarativní popis a efektivní řešení složitých problémů především kombinatorického rázu. Výzkum omezujících podmínek spojuje vědce z celé řady oblastí jako je umělá inteligence, programovací jazyky, operační výzkum, symbolické výpočty a výpočtová logika. Omezující podmínky nalezly široké uplatnění v řadě praktických aplikací. Nejčastější aplikace pocházejí ze sféry počítačové grafiky, zpracování přirozeného jazyka, databázových systémů, molekulární biologie a návrhu plošných spojů. Klíčovou oblastí použití je potom plánování, rozvrhování a obecné optimalizační úlohy.[4]
- 19 -
2.2.1
Co je omezující podmínka?
Omezující podmínka není nic jiného než relace zachycující vztah mezi proměnnými, které obsahuje. Omezujícími podmínkami jsou například lineární rovnice a nerovnice. Pomocí sady omezujících podmínek lze deklarativně popsat řadu problémů, kombinatorickými problémy počínaje, přes grafická uživatelská rozhraní až po popis pohybu autonomního robota. Výhodou takového popisu problému je právě jeho deklarativní charakter, který se podobá klasickému, matematicky přesnému zadání problému. Pouhá formalizace problému v řeči omezujících podmínek by sama o sobě nestačila, důležitá je také existence efektivních systémů řešení omezujících podmínek. Ty vlastně převádí řešení z implicitní podoby (seznam podmínek) do podoby explicitní (ohodnocení proměnných), která je prezentována uživateli. 2.2.2
Constraint programming
Programování s omezujícími podmínkami (CP – constraint programming) je efektivní nástroj pro popis a řešení mnoha rozsáhlých, zvláště kombinatorických problémů z různých oblastí lidského působení. Jeho hlavní výhodou je možnost přesného, deklarativního popisu problému pomocí relací mezi proměnnými. Kromě toho, že je založen na silném teoretickém základě, má také široké praktické využití v oblastech ohodnocování, modelování a optimalizace. Programování s omezujícími podmínkami je použitím omezujících podmínek jako programovacího jazyka k definici a řešení problémů. Tohoto je často docíleno začleněním možnosti definice omezení v hostitelském programovacím jazyku. Programování pomocí omezujících podmínek původně vzniklo z formalizace rovností termů v logickém programovacím jazyce Prolog II. Nejběžněji používanými hostujícími programovacími jazyky pro programování pomocí omezujících podmínek jsou Prolog (a jeho klony), C++ a Java, ale používá se i dalších programovacích jazyků (např. Python). V imperativním programování je programování pomocí omezujících podmínek většinou realizováno pomocí samostatných knihoven, kterých je celá řada pro každý programovací jazyk. 2.2.3
Řešení systému podmínek
Systémy s podmínkami lze rozdělit do dvou skupin. V první skupině jsou problémy s konečným počtem proměnných, kde každá proměnná má konečnou doménu a podmínek v takovém systému je konečně mnoho. Každá podmínka zmenšuje počet kombinací
- 20 -
možných hodnot, kterých mohou proměnné současně nabývat. Z tohoto pohledu se jedná o kombinatorický problém, který je v terminologii programování s omezujícími podmínkami nazýván CSP (Constraint Satisfaction Problem). Jako řešení CSP pak lze požadovat libovolné ohodnocení všech proměnných splňující všechny podmínky, všechna vyhovující ohodnocení nebo nějaké optimální či téměř optimální řešení, které bude navíc např. minimalizovat zvolenou objektivní funkci. Jak je ukázáno v [15], problém CSP je NP-těžký problém. Druhou skupinu tvoří problémy s nekonečnými doménami, takovou doménou může být například interval v oboru reálných čísel. Pro řešení těchto problémů se používají algebraické a numerické metody. Každý takový problém lze převést na CSP problém diskretizací nekonečných domén. Například v rozvrhovacích a plánovacích úlohách se čas dělí na uniformní časové úseky (sloty). Problémy s nekonečnými doménami se ale většinou obor programování s omezujícími podmínkami nezabývá.[4] Problém splňování podmínek patří mezi matematické problémy, kde se musí najít stavy nebo objekty, které splňují zadaná omezení či kritéria. Důležitou otázkou je, zda pro každou množinu vztahů, množinu všech omezujících podmínek, která může být reprezentována užitím pouze vztahů vybraných z této množiny, je úplné řešení v čase deterministické nebo nedeterministické. Většina tříd problémů s omezujícími podmínkami, které jsou známy jako tvárné, jsou ty, kde hyperbola omezení ohraničuje šířku stromu (a kde nejsou omezení na množině omezujících podmínek) nebo kde omezení mají libovolnou formu, ale kde existuje v zásadě nejednočlenná mnohotvarost množiny omezujících podmínek. 2.2.4
Algoritmy systematického prohledávání
Většina algoritmů řešení CSP je založena na systematickém prohledávání všech možných ohodnocení proměnných. Takové algoritmy nám garantují nalezení řešení, pokud existuje, nebo dokázání, že problém je neřešitelný. Nevýhodou těchto algoritmů je jejich značná časová náročnost. 2.2.5
Základní algoritmy
Problém CSP může být triviálně řešen pomocí procházení všech možných ohodnocení proměnných a následného otestování splnění všech zadaných podmínek (algoritmus generate & test). Mnohem efektivnější metoda systematického prohledávání je založena na použití techniky zvané backtracking (v české literatuře občas nazývané jako prohledávání s navracením). Program rozšiřuje nalezené částečné řešení směrem - 21 -
k úplnému řešení pomocí postupného ohodnocování jednotlivých proměnných možnými hodnotami. V každém kroku je kontrolováno splnění všech podmínek mezi již ohodnocenými proměnnými. Pokud některá z podmínek nevyhovuje, program jde zpět k poslední ohodnocované proměnné, která má ještě jinou, dosud nezkoušenou hodnotu. Pokud je tedy nalezen konflikt, není již dané řešení dále rozšiřováno, proto je tato metoda efektivnější než metoda generuj a testuj. Přesto je časová složitost algoritmu stále exponenciální. 2.2.6
Konzistenční techniky
Konzistenční techniky slouží ke zvýšení efektivity algoritmů řešících systémy s omezujícími podmínkami. Jejich úkolem je redukce množin možných hodnot jednotlivých
proměnných
(tj. zúžení
jejich
domén)
o
nekonzistentní
hodnoty.
Nekonzistentní hodnoty proměnné jsou takové hodnoty, pro které nemůže existovat řešení. Jde tedy o účinné zmenšování prostoru možných ohodnocení, který je třeba prohledat. Mezi techniky, které testují konzistenci, patří backmarking. 2.2.7
Propagace podmínek
Jedna z nevýhod metody backtracking je příliš pozdní detekce konfliktu. Tento problém se snaží řešit metody propagace podmínek, založené na lookahead strategiích. Hlavní myšlenkou propagace je zavedení konzistence mezi již ohodnocenými proměnnými a těmi ještě neohodnocenými. Jde tedy o dočasné zúžení domén neohodnocených proměnných. Pokud se při zajišťování konzistence vyprázdní některá z domén (tj. všechny její hodnoty budou nekonzistentní s již ohodnocenými proměnnými), není současné částečné ohodnocení rozšířitelné na všechny proměnné a algoritmus se musí vrátit. Například je systém se třemi proměnnými A, B a C, kde všechny proměnné mohou nabývat hodnot 1, 2 a 3. Dále je stanovena podmínka různosti všech tří proměnných (podmínka alldifferent), tj. A se nesmí rovnat B, B se nesmí rovnat C a C se nesmí rovnat A. Pokud při ohodnocování v prvním kroku ohodnotíme proměnnou A například hodnotou 1, pak nám následné zajištění hranové konzistence tuto hodnotu vyškrtne z domén proměnných B a C. Nejjednodušší metodou ke snížení počtu budoucích konfliktů je metoda nazvaná forward checking. Tato metoda kontroluje splnitelnost podmínek mezi právě ohodnocenou proměnnou a ještě neohodnocenými proměnnými. Při ohodnocení nové proměnné jsou zkontrolovány pouze ty podmínky, které ji svazují s některou z neohodnocených - 22 -
proměnných. Metoda tedy stále udržuje vlastnost, že pro každou neohodnocenou proměnnou existuje nejméně jedna hodnota, která je kompatibilní s hodnotami již ohodnocených proměnných. 2.2.8
Pořadí výběru proměnných a hodnot
V předchozím textu bylo uvedeno několik prohledávacích algoritmů pro nalezení řešení systému s omezujícími podmínkami. Všechny tyto algoritmy pracují s pořadím proměnných a jednotlivých hodnot. Program vždy v daném pořadí ohodnocuje další a další proměnné, pro každou proměnnou postupně zkouší jednotlivé hodnoty z její domény. Dobré zvolení pořadí proměnných a hodnot může velmi urychlit hledání řešení. Naopak v případě výběru hodnoty pro nějakou proměnnou je možné se řídit principem „succeed first“. To znamená, že je třeba se snažit vždy vybrat tu hodnotu, která by mohla nejrychleji vést k cíli. Důvod tohoto výběru vychází z prohledávacího algoritmu. V každém kroku se vždy nejdříve vybírá nějaká dosud neohodnocená proměnná. Pokud je nutné projít všechny její hodnoty, je jedno, v jakém pořadí se budou brát. Pokud ale některá z hodnot povede k nalezení řešení, je snahou tuto hodnotu vybrat co nejdříve. 2.2.9
Heuristické a stochastické algoritmy
Další velkou oblastí algoritmů na řešení CSP jsou algoritmy založené na náhodném, stochastickém prohledávání. Tyto algoritmy jsou většinou neúplné a nemusejí tedy nalézt řešení, i když existuje. Na druhou stranu často nacházejí uplatnění v mnoha praktických aplikacích, kde je vyžadováno nalezení nějakého, i neúplného, řešení v garantované době. Nejčastějšími zástupci stochastických metod jsou algoritmy lokálního prohledávání (local search). Zejména v posledních letech jsou tyto metody velmi populární, zvláště kvůli jejich vlastnosti velmi rychlého nalezení nějakého (i nekonzistentního) řešení a jeho následného vylepšování směrem k úplnému konzistentnímu řešení. Algoritmy s těmito vlastnostmi se často nazývají „anytime“ algoritmy, to znamená, že jsou schopné vrátit nějaké řešení v libovolném čase. Čím více času, tím lepší řešení. Idea všech algoritmů lokálního prohledávání je stejná. Algoritmus pracuje v iteracích. V každé z iterací se snaží zlepšit ohodnocení všech proměnných výběrem jednoho ze sousedních ohodnocení. Sousedem může být například ohodnocení, které se liší od původního v hodnotě pouze jedné proměnné. Tato sousední ohodnocení jsou porovnána pomocí nějaké objektivní funkce a je vybráno nejlepší z nich. K tomuto řešení se budou prohledávat sousedé v následující iteraci. Objektivní funkce může být například množství - 23 -
nesplněných podmínek. Iterační cyklus se opakuje, dokud není nalezeno požadované řešení, tedy například takové, kde jsou splněny všechny podmínky. Protože jde o algoritmy nesystematického prohledávání, takové ohodnocení nemusí být nalezeno, program se může velice snadno zacyklit – po několika krocích se bude vždy vracet do stejného nekonzistentního ohodnocení. 2.2.10 Shrnutí technik programování s omezujícími podmínkami V této kapitole byly uvedeny základní algoritmy a techniky použitelné pro řešení problémů s omezujícími podmínkami. Jedná se jednak o algoritmy úplné, které dokážou najít řešení vždy, když existuje, a o algoritmy neúplné, které řešení nemusí nalézt. Algoritmy neúplné (např. lokální prohledávání) však často naleznou řešení mnohem rychleji než algoritmy úplné (tj. algoritmy systematického prohledávání). I přesto, že stochastické metody lokálního prohledávání patří mezi neúplné, jsou velmi častým nástrojem pro řešení praktických problémů včetně problémů rozvrhovacích. Důvodem je bezesporu jejich efektivita. Reálný problém totiž často bývá slabě omezen (under-constrained), tzn. existuje v něm mnoho řešení a pro techniky lokálního prohledávání je snadné jedno řešení nalézt. Druhým častým příkladem jsou příliš omezené (over-constrained) problémy, kde je podmínek kladených na problém mnoho a neexistuje řešení, které by je dokázalo splnit všechny. V takovém případě je často požadováno řešení částečné, neúplné, kde je snaha minimalizovat počet nesplněných podmínek. To je opět velice dobře řešitelné pomocí lokálního prohledávání (zvláště v případě, že uživateli stačí nějaké sub-optimální řešení). Je nutné podotknout, že se v praxi po systému řešícím problémy často nechce nalézt jedno libovolné řešení nebo všechna možná řešení, ale jedno dobré řešení. To bývá často spojeno s nějakou objektivní funkcí, která porovnává dvě řešení a říká, které je lepší. Požadovaným řešením je pak řešení s minimální či maximální hodnotou této funkce. V praxi ovšem často stačí nějaké sub-optimální řešení. Častým řešením takových problémů je rozšíření backtracking metody, nazývané branch&bound. Algoritmus nejdříve nalezne nějaké řešení (stejně jako backtracking) nebo má stanovenu maximální či minimální hodnotu objektivní funkce hledaného řešení (například při minimalizaci objektivní funkce je zadána maximální hodnota požadovaného řešení). Hlavním rozdílem od backtracking metody je následné neprocházení podstromů, kde nemůže být nalezeno lepší řešení (např. s nižší hodnotou objektivní funkce) než dosud nalezené. Pro zlepšení efektivity se zde zavádí heuristika odhadující hodnotu nejlepšího
- 24 -
řešení v podstromu. Ovšem také techniky lokálního prohledávání lze snadno rozšířit na hledání nějakého sub-optimálního řešení. Objektivní (ohodnocovací) funkce například může pomoci v hledání vhodného sousedního ohodnocení. Z hlediska interaktivního rozvrhování je podstatná i další vlastnost, rozdílná pro lokální prohledávání a backtracking algoritmy. Backtracking metody pracují tak, že rozšiřují nějaké neúplné řešení, které je ovšem konzistentní. Všechny podmínky nad množinou již ohodnocených proměnných jsou vždy splněné. Tato vlastnost by se v interaktivním rozvrhování mohla hodit, proměnné by popisovaly například aktivity, které se mají rozvrhnout. Potom by bylo dobré, kdyby mohl uživatel během rozvrhování prezentovat částečné řešení, kde by byla rozvrhnuta část aktivit, které by splňovaly všechny požadované podmínky. Problém tu však nastává s interaktivitou, ve smyslu změny zadání během rozvrhovacího procesu. Backtracking totiž neumožňuje spuštění nad nějakým částečným řešením, začíná vždy od začátku. Kvůli navracení je zde totiž nutné zapamatování dosavadní historie výpočtu. To by mohlo být pro uživatele velice nepříjemné. Uživatel by totiž mohl zastavit rozvrhování, vidět nějaké částečné řešení a pozměnit některé z parametrů (například dobu trvání jedné z aktivit či přidání nové aktivity), ale nemohl by spustit pokračování plánování, rozvrh by se vždy začal tvořit od začátku. To by mohlo být problematické také v případě, kdyby se výsledný rozvrh, po nějakém menším zásahu uživatele, lišil od předchozího jen v málo změnách. Na druhou stranu, při použití nějaké metody lokálního prohledávání, které postupuje z jednoho úplného, ale nekonzistentního řešení k dalšímu, není problém spustit rozvrhování z libovolného i neúplného stavu. Neohodnocené proměnné by se ohodnotily například náhodně a proces by mohl začít prohledáváním nejbližších sousedů. Zde by také šlo poměrně dobře zajistit, aby se výsledný rozvrh po malé změně uživatele jen málo lišil od předchozího, například vhodným zvolením objektivní (optimalizační) funkce. Naopak zde by byl problém s vizualizací nekonzistentního řešení, a tedy i jeho prezentováním uživateli, který by měl mít možnost do něj zasahovat. Příkladem může být alokace jednoho zdroje více aktivitami ve stejný časový okamžik.
- 25 -
3 ÚSKALÍ TVORBY ROZVRHŮ Rozvrhování (timetabling) definoval Anthony Wren [16] jako problém přiřazení aktivit na zdroje v čase vzhledem k dané množině omezení tak, aby bylo splněno co možná nejvíce požadovaných cílů. Pro rozvrhování (timetabling) je charakteristický zejména čas aktivit, zatímco pro rozvrhování (scheduling) je důležité hlavně uspořádání aktivit. Uvedená definice postihuje celou řadu problémů, jako jsou např. rozvrhy předmětů, rozvrhování zaměstnanců, rozvrh sportovních akcí nebo vlakové jízdní řády. Následující text se zabývá pouze rozvrhováním ve školství, tj. rozvrhováním předmětů a zkoušek. Aktivity tedy představují jednotlivé vyučované předměty a zdroje tvoří vyučující a místnosti. Časem se rozumí určitá množina časových intervalů, ve kterých mohou být předměty vyučovány. Omezení na vytvářený rozvrh může být celá řada, např. každý učitel může vyučovat v každém časovém intervalu nejvýše jeden předmět nebo předmět smí být vyučován pouze v místnosti s odpovídající kapacitou. Při rozvrhování se tedy přiřazuje každému vyučovanému předmětu vyučující, místnost a časový interval tak, aby nebylo porušeno žádné omezení. Rozvrhování ve školství se zpravidla rozděluje na školní rozvrhování (school timetabling,
class-teacher
model),
rozvrhování
předmětů
(course
timetabling)
a rozvrhování zkoušek (exam timetabling) [17]. V dalších sekcích jsou podrobněji popsány jednotlivé problémy a uvedeny příklady řešených problémů spolu s technikami použitými k jejich řešení.
3.1 Školní rozvrhování S tímto problémem je zpravidla možné se setkat na základních a středních školách, kde studenti nemají téměř žádnou volnost při výběru studovaných předmětů. Studenti jsou rozděleni do tříd, přičemž všichni studenti stejné třídy mají identický rozvrh. Rozvrh se vytváří pro celé třídy, nikoli pro jednotlivé studenty. Pro každou třídu je dále zpravidla známo, který učitel ji vyučuje kolikrát během týdne. Při vytváření rozvrhu tedy stačí přiřadit čas jednotlivým setkáním mezi třídami a učiteli, tak aby nevznikl žádný konflikt, tj. aby nebyl vyučující nebo třída vyžadována v určitém časovém intervalu pro více než jedno setkání. Přiřazování místností se nemusí uvažovat, neboť každá třída má pro výuku
- 26 -
přidělenu vlastní místnost. Pokud nejsou žádná další omezení, tak je tento problém řešitelný v polynomiálním čase [13]. Ve skutečnosti ovšem bývá školní rozvrhování složitější. Někteří vyučující nebo místnosti mohou být dostupní jen v určitých časových intervalech. Předměty mohou vyžadovat místnosti se speciálním vybavením nebo mohou být vyučovány více učiteli. V těchto případech je tedy nutné uvažovat přiřazování místností nebo vybírání učitelů jednotlivým třídám. Zpravidla je také požadováno, aby výuka každé třídy probíhala po celý den bez přerušování. Další omezení se týkají uspořádání výuky a jejího rozprostření v průběhu celého týdne.
3.2 Rozvrhování předmětů Rozvrhování předmětů je většinou záležitostí v univerzitním prostředí, kde studenti mají větší možnost volby studovaných předmětů. Studenti si např. mohou přímo vybrat konkrétní předměty, které by chtěli studovat. Toto vede k situaci, kdy řada předmětů sdílí určité studenty s jinými. Předměty, které spolu sdílí studenty, by neměly být vyučovány ve stejný okamžik, neboť by studentům vznikl v rozvrhu konflikt. Vytvořit rozvrh, který neobsahuje žádné konflikty zpravidla nelze, takže se hledá alespoň takový rozvrh, který obsahuje konfliktů co možná nejméně, tj. umožňuje co nejvíce studentům studovat jimi vybrané předměty. Tento problém je v nedeterministické výpočetní době úplný [17]. Důležitější roli zde hraje také přiřazování místností. Pro každý předmět je nutné vybrat místnost s odpovídající kapacitou a vybavením. Je nutné také uvažovat umístění místností, protože univerzitní kampus je zpravidla velmi rozsáhlý a přesun z jedné místnosti do jiné může zabrat nezanedbatelný čas. Pro zjednodušení se často problém přiřazování místností řeší samostatně až po vytvoření časového rozvrhu předmětů. Při rozvrhování předmětů lze také uvažovat předměty, které jsou během týdne vyučovány opakovaně, např. z důvodu příliš velkého počtu zapsaných studentů. Tyto předměty se skládají z více sekcí. Rozdělení předmětu do více sekcí může vést ke snížení počtu konfliktů, protože student může navštěvovat libovolnou sekci. Při práci s vícesekčními předměty ovšem nastává následující paradox: studenti požadují určitý předmět, ale při rozvrhování je čas přiřazen sekcím předmětu, to znamená, že nelze přiřadit čas sekcím předmětu, dokud není zřejmé, kteří studenti budou jednotlivé sekce navštěvovat, a podobně nelze přiřadit studenty sekcím předmětu, dokud není zřejmé, kdy budou tyto sekce vyučovány. Problém s vícesekčními předměty je možné řešit tak, - 27 -
že se studenti před vytvořením rozvrhu určitým způsobem rozdělí mezi sekce jednotlivých předmětů, tzv. počáteční rozdělení studentů (initial student sectioning). Po vytvoření rozvrhu se pak studenti mezi sekcemi přeuspořádají tak, aby byl počet konfliktů co možná nejmenší, tzv. final sectioning. Rozvrhování předmětů se řeší podobnými přístupy jako školní rozvrhování, např. pomocí simulovaného žíhání, genetických algoritmů, programování s omezujícími podmínkami a tabu prohledáváním. Rozvrhování je jedním z typických příkladů použití programování s omezujícími podmínkami. Úkolem je naplánovat dané aktivity v čase a přidělit jim požadované zdroje. Toto přiřazení musí respektovat rozličné podmínky, jakými mohou být například různé priority aktivit nebo kapacity jednotlivých zdrojů v daný časový okamžik, případně různé závislosti mezi plánovanými aktivitami. Velmi důležitý je také požadavek interaktivity na rozvrhovací program, zejména v dnešní době dostatečně výkonných osobních počítačů. Uživatel tak má možnost sledovat, jak je rozvrh utvářen a případně do jeho tvorby zasahovat. Takovým zásahem může být například přidání nebo odebrání závislosti mezi některými z aktivit, změna parametru aktivity nebo zdroje (například změna délky trvání aktivity) nebo dokonce přidání či odebrání aktivity nebo zdroje. V tomto případě je na rozvrhovacím programu požadováno, aby dokázal pokračovat se změněným zadáním a nezačínal vždy rozvrhovat od začátku. Výhodou takového způsobu řešení pak například může být i fakt, že uživatel bude moci ve zvláště obtížných případech pomoci rozvrhovači tím, že naplánuje některé pro rozvrhovač těžko naplánovatelné aktivity ručně nebo na nich oslabí některé podmínky, čímž rozvrhování programu trochu zjednoduší. Interaktivitou je tedy míněno spojení automatizovaného
rozvrhování
s
interakcemi
uživatele,
který
může
zasahovat
do rozvrhovacího procesu a měnit tak zadání problému během jeho řešení.
3.3 Co je to rozvrh? Rozvrh může být definován následovně: Rozvrh je přiřazení zdrojů a času k aktivitám tak, aby bylo dosaženo stanovených cílů a aby byly všechny podmínky, přiřazené k jednotlivým aktivitám a zdrojům, splněny. Rozvrh se skládá z množiny aktivit, které mají být provedeny. Každá aktivita bude trvat určitou předem stanovenou dobu a bude využívat některé ze zdrojů. Aktivitou může být například některá část výrobního procesu. Zdrojem pak bude stroj, na kterém se daná - 28 -
operace na výrobku provede. Takový zdroj může mít určenu kapacitu, na kolika výrobcích zvládne danou operaci najednou nebo v daném časovém úseku provést. Zdrojem však navíc může být i pracovník, který bude daný úkon provádět. S tím může souviset i výběr z několika dostatečně kvalifikovaných pracovníků. Dále je nutné uvažovat různé typy závislostí, které mohou jednotlivé aktivity mezi sebou mít. Zadavatel musí být schopen vyjádřit například fakt, že nějaký úkon musí danému úkonu předcházet apod. V neposlední řadě je také možnost poukázat na to, že některý ze zdrojů je dostupný, a tedy vhodný pro naplánování, jen v určité časové okamžiky. Ve školním rozvrhu tak lze vyjádřit například to, že některá z učeben je v pondělí odpoledne pronajata, a je tedy využívána na jinou, externí aktivitu a nelze ji v daném čase využít. Rozvrhem je pak rozuměna alokace jednotlivých zdrojů a času pro každou z aktivit tak, aby byly splněny všechny podmínky kladené na požadovaný rozvrh. Příkladem podmínky může být požadavek provádění maximálně jednoho úkonu na každém stroji v každý časový okamžik, či časová návaznost jednotlivých aktivit. Bohužel v praxi se často nepracuje pouze s podmínkami, které musí být splněny (označované jako silné, hard podmínky), ale i s podmínkami, u kterých se preferuje, aby byly splněny (označované jako slabé, soft podmínky). Po řešení se potom požaduje, aby bylo splněno co nejvíce slabých podmínek. Dále je požadována možnost ohodnotit různá řešení (různé rozvrhy) tak, aby se mohly vyjádřit další specifické preference. Ve školním rozvrhu může být takovou preferencí například upřednostňování výuky v dopoledních hodinách. Tyto preference se projeví právě v ohodnocení daného rozvrhu. Úkolem rozvrhovače pak bude řešit optimalizační úlohu nalezení rozvrhu s minimální či maximální hodnotou ohodnocovací funkce. Uživatel však často nebude požadovat optimální řešení, ale postačí mu nějaké sub-optimální, dostatečně dobré řešení. 3.3.1
Různé varianty rozvrhu
Ačkoliv většina rozvrhů má podobné základní charakteristiky a vlastnosti, existuje mnoho vlastností specifických. V případě implementace algoritmu, který by měl splňovat všechny možné požadavky, by byl tento výsledný program značně neefektivní a v praxi nepoužitelný. To dokazuje i většina výzkumů různých praktických problémů, jejichž řešení vede k použití nějakého speciálního algoritmu, který většinou pracuje s několika typy velmi specifických podmínek. Takový přístup navíc dovoluje využít všech přirozených
- 29 -
vlastností řešeného problému a zužitkovat většinu znalostí o prostoru možných řešení, což umožňuje nalézt kvalitní rozvrh v dostatečně krátké době. 3.3.1.1 Školní rozvrh Odlišným rozvrhovacím problémem je tvorba školního rozvrhu. Zde je úkolem naplánovat výuku jednotlivých předmětů do periodického, většinou po týdnu se opakujícího rozvrhu. Navíc je zde rozdělen čas na jednotlivé vyučovací hodiny. Každý předmět má určeného vyučujícího, množinu možných učeben a skupinu žáků či tříd, pro které je určen. Po školním rozvrhu se také může požadovat mnoho specifických podmínek a preferencí, jako je například pauza na oběd či upřednostňování dopolední výuky. Na druhou stranu se tady asi nelze setkat s požadavkem na větší kapacitu učebny ve smyslu počtu současně vyučovaných předmětů. Rozvrh předmětů je tedy tabulkou k organizaci těchto elementů: •
studentů
•
vyučujících
•
učeben
•
vyučovacích hodin
Tvorba univerzitního rozvrhu zahrnuje následující problémy: •
Přiřazení vyučovacích hodin k předmětům tak, aby byly předměty v blocích.
•
Přiřazení vyučujícího k předmětu.
•
Vyučující nemůže učit více jak stanovený počet studentů v jedné vyučovací hodině.
•
Přiřazení učebny k předmětu. Některé předměty vyžadují speciální vybavení učebny.
•
Všechny učebny daného dne musí být ve stejné lokalitě nebo předmětům musí předcházet dostatečná přestávka na přesun.
•
Učebna musí mít dostatečnou kapacitu.
•
Časné ranní, pozdní večerní a páteční hodiny většinou nejsou moc dobře přijímány.
•
Přednášky by měly pokud možno předcházet cvičením.
•
Navazující předměty by měly být rozvrženy až po výuce předmětu predispozičního. - 30 -
•
Vyučující nemůže učit v čase, kdy není dostupný.
•
Speciální případ vyučujícího učícího na více než jedné fakultě (univerzitě).
•
Státní svátky a jiné dny volna periodicky se opakující ve stejný den v týdnu.
•
Výuka předmětu pouze v zimním nebo pouze v letním semestru.
•
Hodiny stejného předmětu, pokud za sebou těsně následují, by měly být po celý den ve stejné třídě.
•
První část výuky v semestru je vyučována jiným vyučujícím, než druhá část výuky.
•
Ve školním roce je výuka semestrální, trimestrální a nepravidelná (jednou za 14 dní, bloková, …).
•
Přestávky mezi vyučováním, obědová přestávka, přestávka na přesun.
3.4 Interaktivní versus automatizované (dávkové) zpracování Interaktivita je zvláště v poslední době požadavkem kladeným stále častěji na mnoho systémů řešících rozvrhovací, ale i jiné problémy. Je zde chápána nejen ve smyslu nalezení prezentovatelného řešení v krátké době, ale hlavně v možnosti uživatele zasahovat do rozvrhovacího procesu. Uživatel musí mít možnost zastavit automatické rozvrhování a prohlédnout si dosud nejlepší nalezený (i ještě neúplný) rozvrh. Dále by měl mít možnost změny zadání rozvrhu, a to jak změnou libovolného z parametrů, tak i přidáním či odebráním aktivity, zdroje či libovolné podmínky. Rozvrhovač pak musí být schopen v rozvrhování pokračovat. Navíc by se měl snažit o nalezení takového rozvrhu, který se bude od předchozího co nejméně lišit. Nemělo by se stát, že se po přidání jedné aktivity změní úplně celý rozvrh, například kvůli tomu, že rozvrhovač neumí pokračovat v již hotovém neúplném rozvrhu. Někteří autoři navíc věří, že rozvrhování ani nemůže být úplně automatické. Důvod je dvojí. Zaprvé, v automatizovaném systému je velice těžké vyjádřit porovnání dvou rozvrhů a tedy říci, který ze dvou rozvrhů je lepší. Zadruhé, prohledávací prostor pro mnoho praktických problémů je příliš rozsáhlý. Zásah uživatele může velmi efektivně napomoci jeho zúžení. Uživatel tak pomáhá systému nalézt řešení, které by plně automatizovaný systém sám nenašel.
- 31 -
3.5 Požadavky na rozvrhovací algoritmus Shrňme si nyní požadavky na rozvrhovací algoritmus. Vlastnosti algoritmu se budou odvíjet hlavně od požadavku interaktivity. Prvním požadavkem bude možnost opětovného rozvrhování, tj. přeplánování (rescheduling). To znamená, že algoritmus musí být schopen vyjít při rozvrhování z předchozího rozvrhu a z množiny změn. Vstupní rozvrh přeplánování pak může vypadat například tak, že některé z aktivit nejsou rozvrženy anebo některé z podmínek nejsou splněny. Algoritmus by se měl navíc snažit co nejvíce se tomuto vstupnímu rozvrhu ve výsledku přiblížit. To znamená, že počet přeplánovaných aktivit, tedy aktivit, u kterých se změnila alokace času či některého zdroje, bude minimální. Dalším požadavkem je možnost prezentace výsledků během plánování a případná možnost zásahu uživatele do některého z mezivýsledků. To může být zajištěno například tak, že rozvrhovač bude pracovat s částečnými, ale konzistentními řešeními. V takovém částečném rozvrhu sice nebudou všechny aktivity naplánovány, ale ty, co budou rozvrženy, budou splňovat všechny požadované podmínky a budou mít alokovány všechny požadované zdroje. Po zásahu uživatele se nejdříve z rozvrhu vytvoří konzistentní částečný rozvrh a automatické rozvrhování může pokračovat. To může být provedeno například opětovným zařazením všech původně rozvrhnutých aktivit, které nevyhovují podmínkám, mezi nenaplánované.
3.6 Model rozvrhovacího problému Nyní je snahou navrhnout obecný model rozvrhovacího problému, který se skládá z množiny zdrojů, množiny aktivit a množiny závislostí mezi aktivitami. Čas se rozdělí na úseky stejné délky – časové sloty. Každý slot může mít přiřazenu podmínku, a to buďto silnou (hard) nebo slabou (soft). Silná podmínka říká, že daný slot je zakázán pro každou aktivitu, nemůže být tedy použit na plánování. Slabá podmínka říká, že daný slot není preferován. Tyto podmínky jsou časové preference. Každá aktivita i každý zdroj má přiřazenu množinu těchto časových preferencí, která indikuje zakázané a (ne)preferované časové sloty. Aktivita (která přímo odpovídá jedné přednášce) je identifikována svým jménem. Každá aktivita je dále určena délkou (vyjádřenou jako počet časových slotů), časovými preferencemi (tj. množinou hard a soft podmínek přiřazených k jednotlivým slotům) a množinou zdrojů. Tato množina zdrojů určuje aktivitou požadované zdroje. Aby bylo - 32 -
možné modelovat alternativní i nezbytné zdroje, je potřeba tuto množinu rozdělit na několik navzájem disjunktních podmnožin – skupin zdrojů. Každá skupina zdrojů může být buďto konjunktivní nebo disjunktivní. Konjunktivní skupina znamená, že aktivita požaduje všechny zdroje z dané skupiny. Disjunktivní skupina znamená, že aktivita požaduje právě jeden zdroj z dané skupiny (musí být tedy vybrán jedna z požadované skupiny alternativ). Příkladem může být přednáška, která bude vyučována v jedné ze zvolených učeben a bude vyučována pro všechny ze zvolených tříd. Není nepotřeba modelovat konjunktivní skupiny, protože místo toho lze použít množinu disjunktivních skupin obsahujících vždy právě jeden zdroj (množina požadovaných zdrojů může být popsána v konjunktivně disjunktivní formě). Avšak použití konjunktivních i disjunktivních skupin zjednodušuje modelování příslušného problému pro uživatele. Zdroj je také identifikován svým jménem a je plně popsán pomocí množiny časových preferencí. Je zde silné omezení, že v jeden časový okamžik může daný zdroj využívat pouze jedna aktivita. To umožňuje poměrně jednoduchou vizuální reprezentaci modelu. Jak bylo již naznačeno výše, jednotlivý zdroj reprezentuje vyučujícího, třídu, učebnu, nebo jiný speciální zdroj v problému školního rozvrhu. Dále je potřeba nějaký mechanismus pro definování a práci s přímými závislostmi mezi aktivitami. Dostatečným se zdá být použití pouze binárních závislostí mezi aktivitami. V implementaci problému se používá výběr ze tří různých závislostí: jedna aktivita skončí před začátkem jiné aktivity, dvě aktivity budou naplánovány těsně za sebou a dvě aktivity budou naplánovány součastně (kratší z aktivit bude běžet v době kdy probíhá druhá z aktivit). Implementace rozvrhovače poskytuje rozhraní pro zavedení dalších binárních závislostí. Řešením problému definovaného výše je rozvrh, kde každá aktivita má určen počáteční časový slot a množinu požadovaných zdrojů, které jsou potřeba pro běh aktivity (aktivita má alokovány příslušné časové sloty každého z požadovaných zdrojů). Takový rozvrh musí splňovat všechny silné podmínky, jmenovitě: - každá aktivita má rezervovány všechny požadované zdroje, tj. všechny zdroje z každé konjunktivní skupiny a jeden zdroj z každé disjunktivní skupiny zdrojů, - dvě naplánované aktivity nemohou využívat stejný zdroj ve stejný čas, - žádná aktivita není naplánována do časového slotu, kde má daná aktivita nebo některý z rezervovaných zdrojů silnou (hard) podmínku v časových preferencích, - 33 -
- všechny závislosti mezi naplánovanými aktivitami musí být splněny Po takovém rozvrhu je navíc požadováno, aby počet nesplněných slabých (soft) podmínek v časových preferencích v aktivitách a zdrojích byl minimální. Objektivní funkce se formálně nevyjadřuje, tyto preference se použijí jako průvodce během hledání řešení. V neposlední řadě je požadováno v interaktivním rozvrhování prezentovat nějaké řešení v každý okamžik. Proto je třeba pracovat i s částečnými řešeními, kde některé z aktivit nebudou ještě naplánovány. Přesto ale každý částečný rozvrh musí splňovat všechny výše uvedené podmínky. Práce s takovými částečnými rozvrhy dává možnost nalézt nějaké neúplné, rozumné řešení i v případě příliš omezeného problému (tj. problému kde neexistuje úplné řešení).
- 34 -
4 ALGORITMUS PRO TVORBU ROZVRHŮ Protože původní myšlenka k vytvoření této práce byla optimalizace času, tak dle závěrečného srovnání algoritmů v [6] vychází lépe nasazení algoritmu navrhovaného v [4] (Java solver), viz tab. 1. Proto jsem se rozhodl věnovat se dále algoritmu použitému v této práci. Tabulka 1: Srovnání dosažených výsledků SICStus (Prolog) a Java solver.
řešení
f fs _ sc
f time
f room
SICStus A
361
85,04%
86,08%
SICStus B
409
87,44%
83,50%
Java solver
388
91,77%
75,96%
4.1 Interaktivní rozvrhovací program – první pohled Pro splnění požadavků kladených na interaktivní rozvrhovací program byl navržen speciální algoritmus určený k řešení výše uvedených problémů. Na konci této kapitoly je provedena diskuse jeho rozšíření a použitelnosti na jiné interaktivní problémy. Nejdříve ale ještě jednou rekapitulace požadavků kladených na interaktivní rozvrhovací algoritmus. Algoritmus by měl být schopen poskytnout nějaké (částečné) řešení v každém kroku. Toto (částečné) řešení ale musí být správné (všechny silné podmínky musí být splněny) a musí být dostatečně dobré ve smyslu respektování splnění slabých podmínek. Není vůbec nutné nalézt optimální řešení, které minimalizuje počet porušených slabých podmínek, ale postačí nějaké dostatečně dobré řešení. První zaměření u algoritmu je na požadavek interaktivity, tj. uživatel musí mít možnost do rozvrhovacího procesu zasahovat. To znamená, že může měnit parametry aktivit a zdrojů, odebírat či přidávat závislosti mezi aktivitami, manuálně rozvrhovat libovolné z aktivit nebo odebírat či přidávat nové aktivity či zdroje. Uživatel také může některou z naplánovaných aktivit zafixovat, tedy říci programu, že tato aktivita již nebude přemístěna v rozvrhu či jinak přeplánována. Algoritmus musí být schopen začít rozvrhovat z takto zmodifikovaného rozvrhu, tj. zajistit jeho správnost a pokračovat rozšiřováním tohoto částečného řešení směrem k úplnému rozvrhu. Rozdíl mezi dvěma řešeními poskytnutými rozvrhovačem ve dvou po sobě jdoucích krocích by potom měl být minimální.
- 35 -
Existují dva základní přístupy, jak řešit problémy definované množinou podmínek. Metody založené na backtrackingu, které rozšiřují částečné konzistentní řešení směrem k úplnému řešení, a techniky lokálního prohledávání, které se snaží snižovat počet konfliktních podmínek v úplném řešení. Idea lokálního prohledávání splňuje požadavek na existenci nějakého řešení v každém kroku algoritmu a na malé množství rozdílů mezi po sobě následujícími řešeními. Bohužel, poskytovaná řešení nejsou konzistentní. Na druhé straně metody založené na backtrackingu poskytují konzistentní mezivýsledky v každém kroku, ale zajištění interaktivního chování je zde velkým problémem. Tato metoda konkrétně nepodporuje změny částečného řešení a rozdíly mezi dvěma následujícími řešeními mohou být obrovské (například po velkém skoku zpět). Proto pro splnění požadavků na interaktivní rozvrhovací algoritmus byla navržena kombinace obou výše uvedených přístupů. Zde uváděný algoritmus používá dopředné hledání založené na rozšiřování částečného konzistentního řešení směrem k úplnému řešení. Následný rozvrh je odvozen od předchozího naplánováním nějaké dosud nenaplánované aktivity a odstraněním konfliktních aktivit. Každý krok je řízen pomocí heuristiky, která kombinuje minimální odchylku a minimální nedodržení požadovaných slabých podmínek. Pokud uživatel nějak změní částečné řešení, algoritmus nejdříve odebere z rozvrhu všechny konfliktní aktivity, a potom pokračuje v rozvrhování z vytvořeného konzistentního řešení.
4.2 Interaktivní rozvrhovací program – koncept Navrhovaný algoritmus pracuje v iteracích. Algoritmus využívá dvě základní datové struktury. Množinu dosud nenaplánovaných aktivit a částečný konzistentní rozvrh. V každém iteračním kroku se program snaží vylepšit současné částečné řešení. Rozvrhování začíná s prázdným rozvrhem, což je také částečné konzistentní řešení. Na začátku jsou tedy všechny aktivity v množině nenaplánovaných aktivit. Algoritmus postupuje z jednoho částečného řešení k dalšímu, dokud nejsou všechny aktivity naplánovány nebo dokud není dosaženo maximálního počtu iterací. Uživatel může přerušit algoritmus po libovolné iteraci a může získat řešení (poslední nebo nejlepší dosud nalezený rozvrh), kde pravděpodobně nebudou ještě všechny aktivity naplánovány, ale všechny podmínky, kladené na naplánované aktivity, budou splněny. Během tohoto přerušení uživatel může naplánovat některé z nenaplánovaných aktivit ručně, oslabit některé z podmínek nebo udělat libovolnou jinou změnu nebo změny - 36 -
(například přidání nové aktivity). Nakonec může nechat algoritmus pokračovat v rozvrhování. A co se děje v každém iteračním kroku? Algoritmus nejdříve vybere jednu z nenaplánovaných aktivit a vyhodnotí pozice, kam může být tato aktivita umístěna (místa, kde nějaký časový slot obsahuje silnou podmínku, nejsou uvažována). Každá pozice je popsána začátkem (tj. číslem prvního slotu, kde bude aktivita umístěna) a množinou požadovaných zdrojů. Každé takové místo v rozvrhu je pak ohodnoceno pomocí nějaké heuristické funkce pracující nad současným částečným rozvrhem. Aktivita je tedy umístěna na nejlepší z těchto pozic, což může způsobit konflikt s některými dříve naplánovanými aktivitami. Tyto konfliktní aktivity jsou následně odebrány z rozvrhu a jsou vloženy zpět do množiny nenaplánovaných aktivit.
- 37 -
Obr. 5: Vývojový diagram algoritmu pro tvorbu rozvrhu
Výše uvedený algoritmus (obr. 5) je parametrizován dvěma funkcemi. Výběrem aktivity a výběrem umístění aktivity v rozvrhu. V širším pohledu programování s omezujícími podmínkami můžeme tyto funkce vidět jako kritéria výběru proměnné a hodnoty. Obě tyto funkce výběru mohou být nalezeny jak v metodách založených na backtrackingu, tak i v algoritmech lokálního prohledávání. Proto zde existují některé - 38 -
základní techniky, jak definovat tyto funkce. Použití těchto funkcí v navrhovaném řešení je někde mezi lokálním prohledáváním a backtrackingem. Vybírá se nenaplánovaná aktivita (tzn. ještě neohodnocená proměnná), ale během výběru se používá také informace o předchozích umístěních aktivity. Tato aktivita mohla být odebrána z rozvrhu během některého z předchozích iteračních kroků. Navíc, protože se odebírají aktivity z částečného rozvrhu, je zapotřebí zavést nějaký mechanizmus zábrany zacyklení. Techniky výběru aktivity a jejího umístění a techniky zamezení zacyklení jsou popsány v následujících odstavcích.
4.3 Výběr aktivity (kritérium výběru proměnné) Jak již bylo uvedeno výše, navržený algoritmus vyžaduje funkci, která vybere z množiny nenaplánovaných aktivit jednu aktivitu. Tato aktivita bude následně umístěna do rozvrhu. Tento problém je ekvivalentní kritériu výběru proměnné v programování s omezujícími podmínkami. Existuje několik základních rad, jak proměnnou vybrat. V algoritmech lokálního prohledávání je nejčastěji vybírána ta aktivita, která se účastní nejvíce nesplněných podmínek. V backtracking metodách je většinou využíváno principu first-fail. To může představovat výběr proměnné, která se účastní v nejvíce podmínkách (statické kritérium) nebo výběr proměnné, která má nejmenší doménu (dynamické kritérium, při použití look ahead strategií) atd. Pokud se dodrží tyto základní doporučení, je žádoucí vybrat takovou aktivitu, která půjde nejhůře naplánovat. Zjednodušeně je nazvána nejhorší aktivitou. Otázkou tedy je, jak porovnat dvě aktivity, abych bylo možné určit, která je horší. Příkladem statické informace může být počet závislostí, ve kterých aktivita figuruje. Více závislostí představuje horší aktivitu. Dynamickou informací je informace, která se získá z již hotového částečného rozvrhu. Příkladem může být počet míst v rozvrhu, kde aktivita není v konfliktu se žádnou další aktivitou. Zjištění dynamických informací je bezesporu časově náročnější, ale takové informace jsou pro uživatele přesnější, než statické informace; lépe vypovídají o tom, která aktivita půjde hůře naplánovat. Pokud bych se navíc používaly pouze statické informace, algoritmus by se mohl velice rychle zacyklit. V implementaci algoritmu jsou započítávána tato kritéria: Kolikrát již byla aktivita odebrána z rozvrhu? (NRm) Kolika závislostí se aktivita účastní? (NDep) Na kolika místech může být tato aktivita umístěna? (NPlc) - 39 -
Poznámka: Místa, kde leží aktivita, která nelze odebrat, například kvůli tomu, že ji tam zafixoval uživatel, se nezapočítávají. Na kolika místech může být aktivita umístěna, aniž by to způsobilo konflikt s jinou aktivitou? (NPlcNC) K váženému součtu výše uvedených hodnot lze dospět pomocí vzorce: val activity = − w1 N Rm − w2 N Dep + w3 N Plc + w4 N PlcNC Vybrána je potom ta aktivita, která má minimální hodnotu tohoto součtu. První dvě kritéria jsou započítávána s negativní vahou. Důvodem je fakt, že vyšší hodnota těchto kritérií znamená horší aktivitu. Použití této formule dává značnou flexibilitu při ladění systému na určitý problém nebo na určitý typ problémů. Navíc dovoluje studovat vliv jednotlivých kritérií na efektivitu rozvrhování. Je možné vybrat nejhorší aktivitu ze všech nenaplánovaných aktivit, ale díky složitosti výpočtu hodnotící funkce to může být značně časově náročné. Proto je ve výsledném programu umožněno (při velkém množství nenaplánovaných aktivit) nejdříve použít náhodný výběr podmnožiny nenaplánovaných aktivit (používá se pravděpodobnost výběru 0,2). Výsledná aktivita se pak heuristicky vybírá pouze z této podmnožiny. Výsledky rozvrhování nejsou o moc horší při přibližně pětkrát rychlejším výběru aktivity.
4.4 Výběr umístění aktivity (kritérium výběru hodnoty) Poté, co je nalezena „nejhorší“ aktivita, je nutné nalézt místo, kam ji v rozvrhu umístit. Tento problém se často nazývá kritériem výběru hodnoty v programování s omezujícími podmínkami. Jak již bylo uvedeno dříve, typicky nejlepší radou je použití strategie best-fit. Úkolem je tedy nalezení místa v rozvrhu, které je nejvíce aktivitou (podmínkami na ni) preferováno a kde aktivita způsobí nejméně problémů. To znamená, že se hledá místo s nejmenším počtem budoucích konfliktů dané aktivity s ostatními. V použitém algoritmu se sice explicitně nepoužívá propagace podmínek, ale právě síla této propagace je skryta v kritériu výběru umístění aktivity. Aby bylo nalezeno nejlepší umístění aktivity, tak se postupně prochází všechny možné začátky a pro každé určení počátečního časového slotu se prochází všechny možné množiny požadovaných zdrojů, které aktivita pro svůj běh vyžaduje. Takových množin zdrojů může být více (viz skupiny alternativních zdrojů). Každé takové umístění aktivity se dále ohodnotí pomocí následujících kritérií:
- 40 -
Kolik již naplánovaných aktivit bude v konfliktu s aktivitou, pokud se vybere dané umístění? Tj. kolik aktivit bude muset být z rozvrhu odebráno pro zajištění konzistence. (NCnfAct) Způsobí výběr umístění opakované odebrání stejné aktivity? (Nrep – počet takových opětovně odebraných aktivit). Pro každou aktivitu si lze totiž zapamatovat, která aktivita způsobila její poslední odebrání z rozvrhu v některé z předchozích iterací. Pomocí tohoto kritéria je možné předejít velmi jednoduše některým zacyklením. Kolik je aktivit, které budou v konfliktu s danou aktivitou v případě výběru daného umístění a pro které bude navíc platit, že je nelze přeplánovat bez konfliktu? (NConflNoRsh) Kolik slabých podmínek se umístěním aktivity na dané místo poruší? Započítávají se podmínky z časových preferencí aktivity a alokovaných zdrojů. (Nsoft) Jak daleko je vybrané umístění aktivity od předchozího (tj. od umístění, kde aktivita byla před pokračováním automatizovaného rozvrhování)? (NdiffPl – 1 pokud je umístění různé, jinak 0) Jak dobré je umístění z uživatelského pohledu na daný rozvrh? (Nuser) Toto je uživatelem definovaná preference umístění, která umožňuje modelování reálných problémů. Může to být opět nějaká formule kombinující mnoho aspektů. Příkladem je preference dopoledních vyučovacích hodin před odpoledními ve školním rozvrhu. Vážený součet výše uvedených kritérií je počítán následovně: val place = w'1 N CnfAct + w' 2 N rep + w'3 N ConfNoRsh + w' 4 N soft + w'5 N diffPl + w' 6 N user Vybráno je umístění s nejmenší hodnotou této ohodnocovací funkce. Jednou z metod, jak zamezit zacyklení, je znáhodnění tohoto výběru umístění aktivity. Například je možné vybrat pět nejlepších míst a výsledné umístění z nich potom vybrat náhodně. Lze přidat podmínku, že hodnota nejhoršího umístění ve výběru (n nejlepších umístění) nesmí být větší než dvojnásobek hodnoty nejlepšího umístění. Toto pravidlo potlačí náhodnost v případě, že bude existovat jedno velmi dobré umístění.
4.5 Jak uniknout cyklu? V předchozích dvou odstavcích, zabývajících se výběrem aktivity a jejího umístění, již bylo navrženo několik mechanizmů, jak předejít cyklení, ale je možné udělat ještě více. V současné implementaci rozvrhovacího programu je použit ještě jeden mechanizmus k zabránění zacyklení algoritmu. Je založen na technice tabu-listu.
- 41 -
Tabu-list je seznam dvojic (proměnná, hodnota) pevné délky. Když je proměnné přiřazena hodnota, je tento nový pár zapsán do tabu-listu a nejstarší záznam je z tabu-listu odstraněn. Nyní, když se vybírá hodnota nějaké proměnné X, je možné se vyvarovat opakovanému výběru stejné hodnoty (hodnota H není vybrána, pokud je pár (X,H) v tabu listu). Toto tabu pravidlo zabraňuje algoritmu dostat se do cyklu krátké délky (délka cyklu koresponduje s délkou tabu-listu). Navíc zde mohou existovat další, tzv. aspirační kritéria, které mohou povolit porušení výše uvedeného pravidla zákazu zvolení hodnoty. V rozvrhovacím algoritmu je tato techniku trochu přizpůsobena. V tabu-listu se ukládají páry (aktivita, umístění). Po výběru aktivity A, při výběru umístění U, ještě předtím, než se spočítá ohodnocení vybraného umístění U, se zjistí, zdali je toto umístění v tabu-listu. Pokud se tam dvojice (A,U) vyskytuje dvakrát, není toto umístění při výběru dále uvažováno. Pokud je pár (A,U) v tabulistu jednou, pak může být umístění U pro danou aktivitu A vybráno, ale pouze tehdy, když toto umístění bude mít nejlepší ohodnocení. A to je právě ten případ, kdy se toto umístění může do tabu-listu dostat podruhé (pokud je umístění U vybráno). A konečně, pokud se pár (A,U) v tabu-listu vůbec nevyskytuje, je s umístěním zacházeno tak, jak je popsáno v předchozím odstavci. Je spočítána hodnota a umístění se může dostat mezi n nejlepších umístění, ze kterých je pak vybíráno náhodně. Aspirační kritérium tedy dovoluje, aby se pro jednu aktivitu vybralo stejné umístění maximálně dvakrát v dané periodě, definované délkou tabu-listu. Druhé vybrání stejného umístění je povoleno pouze tehdy, je-li to nejlepší nalezené umístění pro aktivitu.
4.6 Použití algoritmu pro řešení obecných problémů s omezujícími podmínkami V tomto odstavci je zamyšlení nad dalšími možnostmi využití prezentovaného algoritmu. Nejdříve je pokus o formulaci varianty tohoto algoritmu řešící problém obarvení grafu. Následuje diskuse uvedeného řešení pro obecný CSP problém s binárními podmínkami. Problém obarvení grafu je jeden z klasických NP-úplných problémů. Zadáním je graf G=(V,E), kde V je množina vrcholů a E množina hran. Úkolem je obarvit vrcholy minimálním počtem barev tak, aby žádné dva vrcholy spojené hranou neměly stejnou barvu. Jak bylo již uvedeno výše, vrcholy mohou odpovídat proměnným a hrany podmínkám mezi proměnnými. Obarvení vrcholu pak odpovídá přiřazení hodnoty
- 42 -
proměnné. Zadání lze pozměnit tak, že bude dán maximální počet použitelných barev n a budou se hledat obarvení grafu těmito barvami. Daný problém pak pomocí algoritmu lze řešit následovně: Algoritmus bude opět pracovat v iteracích a bude pracovat s konzistentními neúplnými řešeními. To znamená, že v každém kroku bude existovat graf, kde nemusí být všechny vrcholy obarveny, ale mezi každými dvěma obarvenými vrcholy bude platit výše uvedená podmínka (tj. pokud jsou dané dva vrcholy spojeny hranou, musí mít jinou barvu). V každé iteraci bude nejdříve vybrán ještě neobarvený vrchol (což přesně odpovídá výběru nenaplánované aktivity) a k danému vrcholu pak bude hledána vhodná barva, kterou bude následně obarven (což zase přesně odpovídá výběru umístění aktivity). Takové obarvení vrcholu však bude moci způsobit nekonzistence, a tedy vrcholy, které budou obarveny stejnou barvou a budou hranou spojeny s daným vrcholem, budou následně odbarveny. Jak je vidět, tento algoritmus obarvení grafu přesně koresponduje s výše uvedeným rozvrhovacím algoritmem. Dokonce lze i zavést tabu-list k prevenci zacyklení, nyní pro páry (vrchol, barva). Dále ještě zbývá navrhnout heuristiky výběru vrcholu a barvy. Je opět snahou vybírat takový vrchol, který půjde nejhůře obarvit. Takový výběr byl ale již uvažován výše. Vybrán tedy může být vrchol: - s největším počtem hran - s největším počtem hran k již obarveným vrcholům - s nejmenším počtem možných bezkonfliktních obarvení Navíc lze tato kritéria nějak ohodnotit, a pak například počítat minimum váženého součtu tak, jak se to dělá při výběru aktivity. Také je možné zavádět další kritéria, jako například minimální či maximální počet vrcholů, které by byly s obarvením daného vrcholu v konfliktu. Při výběru barvy se analogicky zase použije kritéria best-fit. Je tedy snahou najít takové obarvení, které bude nejlépe vyhovovat. Opět lze počítat vážený součet několika kritérií. Takovým kritériem může být například: počet konfliktních vrcholů počet konfliktních vrcholů, které nelze jednoduše přebarvit (nemají jinou volnou, s okolními vrcholy nekolidující barvu) uživatelská preference, například říkající, že co nejvíce vrcholů má být červených
- 43 -
Při bližším prozkoumání je patrné, že jednotlivá kritéria korespondují s kritérii použitými při výběru umístění. Nyní je již velice jednoduché navržený algoritmus použít i na řešení obecného CSP problému s binárními podmínkami. Místo vrcholů se vybírají neohodnocené proměnné, místo jednotlivých barev to budou možné hodnoty. Odbarvení kolidujících vrcholů přejde na zrušení ohodnocení těch proměnných, které budou spojeny s právě ohodnocenou proměnnou nesplněnou podmínkou.
4.7 Shrnutí V této kapitole byl popsán velmi nadějný algoritmus pro řešení problémů rozvrhování, který kombinuje principy lokálního prohledávání s technikami pro řešení problémů s omezujícími podmínkami. Použitelnost navrženého algoritmu v interaktivním prostředí je bezesporu jeho největší výhodou a také vlastností, kterou se liší od tradičních rozvrhovacích algoritmů popsaných v předchozí kapitole. Tento algoritmus je navíc velmi jednoduše rozšiřitelný přidáním nových heuristik popisujících další slabé podmínky a preference.
- 44 -
5 ANALÝZA ZAKOMPONOVÁNÍ DO IS MZLU V BRNĚ 5.1 Aplikační architektura UIS Pod pojmem aplikační architektura je myšlena základní softwarová výstavba celého informačního systému. Univerzitní informacní systém používá klasickou třívrstvou architekturu, ve které je datová část realizována v SŘBD Oracle 9i, aplikační část pomocí webového informačního systému
vystaveném nad webovým
serverem
Apache
a programovacím jazykem Perl (konkrétní implementací mod perl) a šifrování spojení mod ssl. Prezentační vrstva je realizována jádrem systému v jazyce Perl a zobrazuje se v několika typech zařízení – základním je internetový prohlížeč HTML stránek, podporováno je ale i zobrazování na mobilních telefonech pomocí technologie W@P. [2]
5.2 Databáze UIS UIS pracuje s obecným právním systémem, který zajišťuje vhodný kontextový pohled pro pracovníky na všech stupních řízení – tzn. implementovaný právní systém definuje uživatele, skupiny uživatelů (ty mohou obsahovat opět další skupiny uživatelů), práva, role (role je skupina práv) a subjekty (pracoviště, vůči kterým se práva vztahují) – je tedy možné určit, jaká oprávnění či jakou roli má každý uživatel či skupina uživatelů pro každý konkrétní subjekt. UIS umožňuje evidovat místnosti, tzn. UIS sleduje vybavení univerzity z hlediska areálu, budov, místností, kapacity, plánků rozesazení a informace o vybavení místností. Inventarizační modul UIS dovoluje zaměstnancům sledovat vybavení jejich místností a zadávat požadavky na přesun a přísun materiálu a vybavení mezi místnostmi a převody mezi pracovištěm. Všechny tyto sledované informace jsou užitečné pro sestavování rozvrhu. Umožňují zajistit, aby v učebně bylo potřebné vybavení (např. projektor, počítače pro studenty, apod.) a také aby učebna měla dostatečnou kapacitu. Další z tabulek v databázi UIS je katalog předmětů, který umožňuje definovat, které předměty jsou ve kterém období vyučovány, s přihlédnutím ke studijním programům, nutností evidovat vícejazyčné sylaby předmětu, řadu ukončení předmětu včetně jejich kreditního ohodnocení apod.
- 45 -
Nový Studijní a zkušební rád se snaží zavést plně kreditní studium podle standardu ECTS, což je situace, kdy si student volí průchod studiem sám (analogie individuálních studijních plánů) v závislosti na tom, kolik má k dispozici kreditů pro zapsání předmětu v daném období a na Stromu závislostí předmětu, čímž se mu určitým způsobem koriguje průběh studia. Přechodem na kreditní systém tak odpadá složité přerozdělování do skupin, křížení předmětů, volba volitelných předmětů a poměrně nenásilnou cestou je umožněn individuální profil studia. Většina úkonů je dobrovolná, avšak jejich neprovedení může studentovi poměrně zkomplikovat studium (např. nemusí mít tzv. slušný rozvrh apod.). Naopak by se měla zmírnit tendence studentů kritizovat rozvrhy, protože si sami mohou tímto způsobem rozvrh ve velké míře ovlivnit a jsou tedy jeho spolutvůrci. V systému UIS je k dispozici nástroj, pomocí kterého si student může stanovit, o jaké předměty má v
novém
období
zájem
s
přihlédnutím
ke Stromu
závislostí
a případně Vyváženým předmětům mimo fakultu (tj. lze si zapsat i předměty z jiných fakult, případně škol). Systém se musí postarat o povinné předměty, povinná opakování apod. Strom závislostí studentovi mírně komplikuje zápis předmětů, protože hlídá zavedením vazeb, kdy má být předmět studován (např. ne v prvním ročníku, tedy závislost některého předmětu na úvodním předmětu apod.). Toto omezení je hlídáno již při registraci předmětů studentem. Registrace předmětů zjišťuje zájem studentů o vypisované předměty a vytváření pořadí pro předměty s kapacitním omezením (specializované laboratoře). Podklady z registrací určují, které předměty se budou v příslušném období otevírat. Druhou fází registrace je tzv. předzápis, který potřebuje rozvrh pro své provedení (k zjištění kolizí, kapacitního omezení, počty skupin apod.). Výsledkem této pasáže je kompletně předpřipravený zápis pro studijní oddělení. Studentům, kteří neprovedou žádnou registraci jsou zapsány předměty ze Standardního průchodu studiem. Doporučený či Standardní průchod studiem stanovuje, jak student má postupovat studiem, aby za standardní délku studia dospěl k cíli. Tento standardní průchod má pro studenty jen jednu nevýhodu – automatická registrace se provádí až na závěr té části období, ve které probíhá registrace, proto už mohou být některé skupiny ve výhodných časových termínech zaplněny. Místo pro standardní průchod je vždy zajištěno – není tedy nutné se o nic starat, student však nedostane žádnou jinou výhodu. - 46 -
Na základě těchto údajů již může být sestaven rozvrh a nastává období předzápisu, kdy si zredukovaná množina studentů může zapsat předměty zvolené v registraci a libovolné jiné (pokud jsou volné kapacity a mají dostatek registračních poukázek) a rozdělí se do skupin, do kterých chce patřit v daném předmětu, podle vlastního zájmu, což umožňuje plynulejší a variabilnější rozvrh závisející pouze na aktivitě studentů. Studentům, kteří se předzápisu nezúčastní, se do předzápisu přenesou všechna data z registrace, a protože pro všechna místa z registrace je vyhrazeno místo v předzápise, přidělí se jim volná místa ve skupinách. Tento proces probíhá až na konci předzápisu. Vzhledem k velmi složité algoritmické situaci nelze zatím při automatickém doplňování skupin brát v potaz křížení rozvrhových akcí apod. Studenti by se tedy ve vlastním zájmu měli účastnit registrace a především předzápisu. Na základě těchto údajů (tzv. předzápisového kola) se na studijním oddělení provádí dvoukolový zápis (zápis a kontrola) a stanoví se definitivní zařazení do skupin, upraví se rozvrh a rozdělí se do učeben. Garanti předmětu nejpozději v tomto okamžiku určují, který přednášející/cvičící bude přednášet/cvičit kterou rozvrhovou akci. Zápis je tedy sekvence činností, které provádí student a studijní v okamžiku, kdy student přechází do nového období; dochází zde k potvrzení operací provedených v registraci (příp. změně struktury zapisovaných předmětů), nutné kontrole zapisovaných předmětů (nesplnění požadavku pro zápis), zapisování do konkrétního cvičení a vytvoření zápisového archu pro studenta i studijní a tvorby rozložení studentů do skupin pro vyučující. Garant předmětu má možnost podrobně udržovat strukturovanou formou sylabů ke svým předmětům. Samozřejmostí jsou vícejazyčné sylaby o předem dané struktuře. V současné době patří do struktury závislosti, cíl předmětu, obsah včetně hodinové dotace, metody výuky, ukončení předmětu a doporučená literatura. Garant dále musí specifikovat učitele, kteří se předmětu věnují z hlediska několika rolí – přednášející, cvičící, zkoušející (role lze kumulovat). V případě, že garant propojí učitele na příslušnou rozvrhovou akci v rozvrhu svého předmětu, dostávají studenti možnost sledovat, kdo a kdy příslušný předmět přednáší nebo cvičí. Toto rozdělení hraje důležitou úlohu ve využívání základní aplikace pro učitele – Záznamníku učitele. Studijní evidence – jádro studijního systému umožňující evidovat informace o studentech, sledovat průběh jejich studia v jednotlivých obdobích, evidovat žádosti studentů, vytvářet řadu sestav a studentům prezentovat dosažené výsledky jejich studia; - 47 -
tato část je propojena s celostátním systémem Sdružené informace matrik studentu (SIMS). Dále eviduje stipendia provázející zápisy nebo naopak udělovaná po uzavření Zkušebních zpráv, evidence neschopenek apod. [2, 3]
5.3 Rozšíření UIS o automatickou tvorbu rozvrhů Modul Zobrazení rozvrhů zajišťuje oprávněným uživatelům systému vkládání rozvrhových akcí, kontrolu konzistence rozvrhu, zobrazování a tisk rozvrhu dle řady kritérií a rezervaci místností pro (nejen) zkouškové akce. V další fázi vývoje by měl rozvrhový subsystém UIS podporovat tvorbu rozvrhu (průběžná kontrola konzistence, nabídka nezařazených akcí, poloautomatizovaná tvorba rozvrhu aj.). Pro tuto fázi bych doporučil využít již stávajícího řešení vyvinutého českým pracovníkem Tomášem Müllerem, Ph.D. z Purdue University v USA, který se stará o rozvrhy zmiňované univerzity a již se tomuto problému a problémům řešení s omezujícími podmínkami delší dobu věnuje. Jak již bylo uvedeno v kapitole popisující návrh algoritmu pro řešení problémů rozvrhů, algoritmus použitý v práci Tomáše Müllera podává dostačující výsledky pro vyřešení univerzitního rozvrhování.
Obr. 6: Logo produktu UniTime [18]
5.4 University Course Timetabling UniTime 3.0 (University Timetabling Application) je volný software, který je výhradně určen pro univerzitní rozvrhování. Logo produktu vyobrazuje obr. 6 a domovská stránka je na adrese http://www.unitime.org [18]. Software lze redistribuovat a modifikovat pod podmínkami
Obecné
veřejné
licence
GNU
(neoficiální
český
překlad
http://staff.cesnet.cz/~lhotka/gnugpl-cz.html). Jedná se o třívrstvou webovou aplikaci založenou na programovacím jazyku Java, která je schopná běhu na operačních systémech rodiny Windows, Unix/Linux, ale i OS X. Základem je databáze (otestovanými jsou
- 48 -
Oracle 9i, Oracle 10g, MySQL 4.1, MySQL 5.0, ale lze použít jakoukoliv jinou), Java Development Kit 5.0 nebo vyšší a webový server Apache Tomcat, který s pomocí technologie Java Server Pages zprostředkovává výstup a komunikaci s uživatelem. Celý projekt má velmi dobře zpracovánu wiki dokumentaci včetně diskusního fóra. Ukázky vybraných částí aplikace jsou na obr. 7 a obr. 8.
Obr. 7 Ukázka práce s kurzy [18]
- 49 -
Obr. 8: Ukázka přehledu místností [18]
5.5 Zhodnocení UniTime 3.0 Hlavní výhody •
Dovoluje manuální zásahy při tvorbě rozvrhu
•
Zohledňuje všechny požadavky kladené univerzitou na tvorbu rozvrhů
•
Pracuje s daty v databázi a tyto lze jednoduše použít pro stávající aplikace Zobrazení rozvrhů
•
Pro rychlou prezentaci umožňuje export do PDF formátu.
•
Má propracovanou dokumentaci a diskusní fórum a díky českému vývojáři lze snadněji navázat komunikaci.
•
Lze změnou mnoha vlastností přizpůsobit, aniž by bylo potřeba něco doprogramovávat.
Nevýhody, které znemožňují okamžité nasazení •
K běhu potřebuje na serveru nainstalovaný webový server Apache Tomcat.
•
Je dostupný pouze v anglickém jazyce.
- 50 -
Zmiňované nevýhody ovšem nemusí být překážkou, protože díky třívrstvé architektuře lze využít stávající systém pro řízení báze dat Oracle 9i používaný UIS, a jelikož se jedná pravděpodobně pouze o malou skupinu lidí sestavující rozvrhy a to pouze jen ve dvou krátkých obdobích školního roku, lze pro instalaci webového serveru Apache Tomcat využít vyhrazeného počítače, který ani nemusí být přístupný celému Internetu. Jazykové omezení rovněž nemusí být bariérou, protože dnes komunikace v angličtině pro většinu pracovníků není problém a navíc díky licencování produktu lze aplikaci lokalizovat do českého jazyka.
- 51 -
6 DISKUSE Jak je psáno v [2] po mnohých debatách pracovníků univerzity se dospělo k názoru, že počítačem sestavený rozvrh nemůže splňovat kritérium optimality, protože toto kritérium nelze přesně vyslovit (každý rozvrh totiž obsahuje něco ve smyslu části osobnosti svého tvůrce, protože odráží určité těžko formulovatelné podmínky). Problém rozvrhu je tedy jen velice těžko algoritmizovatelný a proto do této doby nebylo žádné řešení do UIS zakomponováno. Problém manuálního zásahu do automatizované tvorby rozvrhu však rozvrhovací systém UniTime řeší a je proto více než vhodné jeho potenciálu využít. Ve [2] jsou zmíněny další úskalí návrhu rozvrhů: Pro zobrazení rozvrhu je vhodné užít počítače a především informačního systému. Otázka přenosu rozvrhu do informačního systému formou zadání rozvrhových akcí zůstává otevřena. Vlastním opisem se zanáší řada chyb a nepřesností, nehledě k velké pracnosti a ztrátě času. Bylo by proto vhodné najít pro přenos ručně sestaveného rozvrhu do automaticky zpracovatelné podoby lepší způsob. Nabízí se několik řešení – provádět sestavení ručním způsobem, ovšem v automatizované počítačové podobě. Bohužel velikost současných obrazovek v nižších cenových relacích nepřesahuje výrazně dvacet palců, což je pro zobrazení rozvrhu v přehledné podobě málo. Velkoplošné obrazovky s úhlopříčkou několik desítek palců jsou zase k tomuto jednoúčelovému řešení příliš drahé. Další variantou je zobrazování promítáním na zeď či plátno – zde ovšem přecházející postava rozvrháře vrhá na zeď stín, který komplikuje proces zobrazování. Umístění projektoru mimo centrální pozici zase deformuje zobrazovanou plochu do kónického tvaru, což vede k matoucímu dojmu při práci s časovou linií dne. Dalším nápadem je využití brýlí na virtuální realitu, resp. spíše jen brýlí na pozměnění reality. Tyto brýle zobrazují realitu dokreslenou počítačem, což znamená, že nyní užívané tabule s rozvrhy by se zobrazovaly pouze virtuálně (ve skutečnosti by neexistovaly) a data by byla uložena v počítači. I toto řešení nese řadu nevýhod – od technického problému s kabeláží (řešením by bylo použít přenos infračerveným zářením nebo bezdrátovým přenosem) po psychický odpor – pohybovat se v prázdné místnosti podél zdi by v případě vyrušení náhodným příchozím bez brýlí mohlo působit zavádějícím dojmem. Otázka není vyřešena, ovšem pro úsporu času je toto řešení třeba nalézt. Vlastní technika návrhu je potom možná pomocí například
- 52 -
3D myši, tzv. „netopýr. Tato pomůcka umožňuje manipulovat s předměty v prostoru. Dalším krokem by pak mohla být senzorická rukavice apod. Výhoda automatizovaného návrhu se projeví nejen v rychlosti a správnosti přenosu návrhu do informačního systému, ale i při kontrolách správnosti rozvrhu, při možnosti rychle a optimálně si zobrazovat pohledy z různých hledisek apod., čehož na ryze mechanickém řešení nástěnných tabulí nelze nikdy dosáhnout. Vzhledem k tomu, že by podobné zařízení mohly sdílet všechny fakulty, lze se dostat u řady návrhů do přijatelných cenových relací. Pro automatizovaný návrh rozvrhu v informačním systému mluví jasně i myšlenka dynamické změny rozvrhů na základě přeregistrování předmětů studenty a též zpětná kontrola správnosti rozvrhu, kontrola křížení apod. V dalších krocích lze uvažovat i o preferenci časů vyučovaných předmětů od jednotlivých studentů. To je případ např. dálkových studentů, kteří se nemohou dostavit na ranní vyučování apod.
- 53 -
7 ZÁVĚR Cílem této práce byl návrh rozšíření informačního systému Mendlovy zemědělské a lesnické univerzity v Brně o automatizovanou tvorbu rozvrhů. V práci jsou rozebrány možné způsoby návrhu univerzitního informačního systému, jemný úvod do programování s omezujícími podmínkami a výčet programovacích jazyků, které lze pro toto programování použít. V části o programování s omezujícími podmínkami je zmíněno několik algoritmů, které se všeobecně používají pro tato řešení i s popisem jejich výhod a nevýhod nasazení. V třetí kapitole je teoreticky pojednáno o problematice tvorby univerzitních rozvrhů, jaké jsou nástrahy při jejich sestavování a také popis podmínek, které musí každý návrh zohledňovat. Čtvrtá kapitola popisuje velmi nadějný algoritmus pro tvorbu rozvrhů, který dokáže zohlednit většinu kritérií a zabraňuje vzniku zacyklení tím, že umožňuje manuálně přejít na jiné řešení. Stěžejní pátá kapitola analyzuje IS MZLU, jeho možnosti a schopnosti pomoci při rozvrhování a popisuje již vyvinuté a funkční řešení zvané UniTime. Z analýzy vyplývá, že IS MZLU je schopen poskytnout dostatek informací pro automatickou tvorbu rozvrhů. Řešení UniTime je naopak schopno všechny tyto informace zpracovat a použít pro automatickou tvorbu s možností manuálních úprav, proto bych doporučil integraci UniTime s univerzitním informačním systémem MZLU. UniTime je nové nadějné řešení univerzitního rozvrhování, které díky své otevřenosti a odbornému zázemí má velkou šanci na úspěch a rozšíření. MZLU by mohla být jednou z prvních univerzit, které díky tomuto řešení opět posunou vývoj svých univerzitních informačních systémů o kus dále a umožní tak optimalizovat tolik drahocenný čas svým studentům a možná právě díky této optimalizaci se zvedne počet uchazečů o studium.
- 54 -
8 POUŽITÁ LITERATURA [1] BASL, J. Podnikové informační systémy: Podnik v informační společnosti., 1. vyd. Praha: Grada Publishing, 2002,. ISBN 80-247-0214-2. [2] ŠORM, M. Univerzitní informační systém. In ŠORM, M. – RYBIČKA, J. S4U Seminář o Univerzitním informačním systému. Brno: MZLU v Brně, 2007, ISBN 978-80-7375-043-5. [3] ŠORM, M. Využití principu skládání komponent při návrhu webového informačního systému. Disertační práce. Brno: MZLU Brno, 2005. [4] MÜLLER, T. Interaktivní tvorba rozvrhu, Diplomová práce. Absolventská práce. UK Praha, 2001, s. 50-77. ISBN 80-247-0214-2. [5] MÜLLER, T. Constraint-based Timetabling, Disertační práce.. UK Praha, 2005. [6] VLK, M. Měkké podmínky při rozvrhování, Diplomová práce. Absolventská práce. MU Brno, 2006. [7] BARTÁK, R. Expertní systémy založené na omezujících podmínkách, Disertační práce. UK Praha, 1997. [8] HRUŠKA, T., MÁČEL, M., KŘIVKA, Z. Pokročilé informační systémy. Studijní opora. VUT Brno, 2007. [9] Kolektiv autorů. Podnikové informační systémy. Praha: Grada Publishing, 2000. [10] VOŘÍŠEK, J. Strategické řešení informačního systému a systému integrace. Praha: Management Press, 1999 [11] MOLNÁR, Z. Moderní metody řízení informačních systémů. Praha: Grada, 1992. [12] TIETZE, P. Strukturální analýza – úvod do projektu řízení. Praha: Grada, 1992. [13] PTIME : P (complexity) [online]. Anglicky. WWW:
. [14] Drucker, P. Postkapitalistická společnost. Praha: Management Press, 1993. [15] Marriot, K., Stuckey, P. J. Programming with Constraints: An Introduction. The MIT Press, 1998. [16] Wren, A. Scheduling, timetabling and rostering – a special relationship? In Edmund Burke and Peter Ross, editors, Practice and Theory of Automated Timetabling. SpringerVerlag LNCS 1153, 1996. [17] Schaerf, A. A survey of automated timetabling. Technical Report CS-R9567, CWI, Amsterdam, NL, 1995. [18] MÜLLER, Tomáš, http://www.unitime.org/ : University Timetabling [online]. 2007. - 55 -