Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Jan Jelínek. Plánování operací solárních panelů na ISS

Rozměr: px
Začít zobrazení ze stránky:

Download "Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Jan Jelínek. Plánování operací solárních panelů na ISS"

Transkript

1 Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Jan Jelínek Plánování operací solárních panelů na ISS Katedra teoretické informatiky a matematické logiky prof. RNDr. Roman Barták, Ph.D. Studijní program: Informatika Studijní obor: teoretická informatika Praha 2014

2 Poděkování: Na tomto místě bych chtěl velice poděkovat prof. RNDr. Romanu Bartákovi, Ph.D. za jeho pomoc a rady při vedení této diplomové práce a také za zajímavé přednášky z oblasti umělé inteligence, které ve mně probudily zájem o toto téma. Dále bych chtěl poděkovat panu Jeremymu D. Frankovi za ochotu při objasňování nejasností kolem zadání a panu Peru Mildnerovi za rychlé opravení chyby v používaném programu. Závěrem bych rád poděkoval své rodině za jejich podporu.

3 Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle 60 odst. 1 autorského zákona. V... dne... podpis

4 Název práce: Plánování operací solárních panelů na ISS Autor: Jan Jelínek Katedra / Ústav: Katedra teoretické informatiky a matematické logiky Vedoucí diplomové práce: prof. RNDr. Roman Barták, Ph.D., Katedra teoretické informatiky a matematické logiky Abstrakt: Práce se zabývá problémem plánování operací solárních panelů na Mezinárodní vesmírné stanici. Úkolem je nalézt vhodné orientace a módy pro deset kloubů, kterými jsou panely přichyceny ke stanici. Tyto orientace a módy musí splňovat různé podmínky a zároveň by měl výsledný rozvrh zohledňovat určité preference. Jde o úlohu vhodnou pro automatické plánování a rozvrhování, ale v oblasti pilotovaných vesmírných letů se nové technologie prosazují velmi pomalu. V práci proto bude analyzováno aktuální řešení tohoto problému a bude představen nový algoritmus, který by měl více využívat možností automatického plánování a rozvrhování. V kontrastu s původním hladovým algoritmem, navržený algoritmus nejprve nalezne libovolný rozvrh a poté se ho snaží zlepšovat optimalizováním jednotlivých částečných optimalizačních funkcí. Vzhledem k velikosti prohledávaného prostoru jsou hledání omezena časovým limitem. Klíčová slova: plánování, ISS, solární panel Title: Planning Solar Array Operations on the ISS Author: Jan Jelínek Department: Department of Theoretical Computer Science and Mathematical Logic Supervisor: prof. RNDr. Roman Barták, Ph.D., Department of Theoretical Computer Science and Mathematical Logic Abstract: This work focuses on the problem of planning solar array operations on the International Space Station. The goal is to find a viable orientation for ten joints which attach panels to the station. These orientations and modes must satisfy various constraints and the final schedule should also take into account certain preferences. This is a task suitable for automated planning and scheduling, but new technologies are gaining very slowly in the field of the human spaceflights. In this work we will analyze the current solution of this problem and then we will propose a new algorithm that will exploit techniques of automated planning and scheduling. In the contrast with the original greedy algorithm, the suggested algorithm initially finds any solution and then tries to improve it by optimazing partial objective functions. Due to the size of the search space, the search attempts are limited by the time limit. Keywords: planning, ISS, solar array

5 Obsah Úvod Problém tvorby rozvrhů solárních panelů na ISS Solární panely Problém Vstup Rozvrh orientací Rozvrh motorů Tabulky podmínek Podmínky na řešení Ohodnocení řešení Cíl Shrnutí Aktuálně používaný přístup Možnosti vylepšení Použité technologie Konzistenční techniky Větvící strategie Výběr proměnné Hledání optimálního řešení Pravidla Řešící přístup CSP Model stanice Konstanty a proměnné Proměnné popisující rozvrh Konstanty a proměnné popisující zadání Proměnné optimalizační funkce Pomocné proměnné Instance problému Zakódování tabulek Podmínky Zamykání a odemykání kloubů Otáčení kloubů... 45

6 Autotrack Hledání rozvrhu Ohodnocování rozvrhu Dolní limit a předchozí řešení Částečné ohodnocení Zjednodušené modely Experimenty Testovací data Výsledky Ladění algoritmu Srovnání Závěr Seznam použité literatury Seznam použitých zkratek Příloha A. Obsah přiloženého DVD Příloha B. Instance problému Příloha C. Model problému Příloha D. Reálná data ze senzorů stanice

7 Úvod Jedním ze symbolů pokroku minulého století jsou lety do vesmíru. Ačkoliv se první let do vesmíru uskutečnil až ve druhé polovině minulého století, už na konci téhož století obíhala Zemi trvale obydlená vesmírná stanice. Lety do vesmíru jsou extrémní záležitost pohybující se na hraně lidských možností, je proto pochopitelný jistý konzervatismus a nedůvěra k novým technologiím, které nejsou nasazovány, dokud nejsou důkladně otestovány. I po důkladném otestováni jsou nasazeny nejprve u nepilotovaných letů a teprve poté, co se osvědčí, jsou nasazeny i u letů s lidskou posádkou. Také je jen zřídka testováno více nových technologií naráz, aby se minimalizovala pravděpodobnost selhání. Příkladem nové technologie je automatické plánování a rozvrhování. Jednou z prvních aplikací byl framework SPIKE 1 vyvinutý pro automatickou tvorbu rozvrhu pozorování na Hubbleově vesmírném dalekohledu. Významným úspěchem byla sonda Deep Space 1 2 z roku 1998, která byla netypická tím, že testovala více nových technologií. Mezi nimi byly i tři různé autonomní systémy. Navzdory těmto úspěchům se o automatickém plánování pro pilotované lety začalo hovořit až v roce 2008, kdy byla představena aplikace SACE 3 (Solar Array Constraint Engine), která by nakonec měla tvořit rozvrhy pro solární panely na ISS (zkratka pochází z anglického International Space Station, česky známé též jako Mezinárodní vesmírná stanice). Rozvrh se tvoří pro osm solárních panelů ISS, které jsou pomocí kloubů připojeny ke stanici. Některé klouby jsou společné pro více panelů, takže problém nejde rozložit na osm nezávislých problémů a každý panel řešit samostatně. Klouby mohou nabývat různých orientací a režimů (nazývaných módy). Přípustné orientace a módy kloubů jsou omezeny různými podmínkami, například tím, kolik panely vygenerují energie nebo jaké riziko poškození jim hrozí. Tato omezení vztahující se k jednotlivým panelů závisí na konfiguraci stanice. Hledány jsou takové přípustné rozvrhy pro každý kloub, které budou optimální vzhledem k zadané funkci, např

8 budou minimalizovat pravděpodobnost poškození panelů nebo maximalizovat množství generované energie. Vývoj aplikace SACE probíhá v několika fázích a ačkoliv pouze sleduje postupy, které používají lidští plánovači, její certifikace pro reálné nasazení není dosud dokončena. Použit je hladový přístup, kdy algoritmus začíná s prázdným rozvrhem, který se postupně snaží prodlužovat. Jde o prohledávání bez navracení, takže pokud se rozvrh prodloužit nepodaří, tak není hledán rozvrh alternativní. Místo toho jsou problematické konfigurace sloučeny a je hledán takový stav kloubů, který vyhovuje oběma sloučeným konfiguracím. Použití hladového přístupu bez navracení může mít za následek, že nebude rozvrh solárních panelů nalezen ani pokud existuje. Zároveň nás tento přístup může připravit o optimální řešení. V této práci proto bude podrobněji přiblížen problém tvorby rozvrhů pro solární panely na ISS, bude detailněji popsán přístup použitý v aplikaci SACE a bude navržen alternativní přístup, který se pokusí odstranit některé nedostatky aktuálně používaného přístupu a využít více možností automatického plánování. Uspořádání práce bude následující: V první kapitole bude popsáno zadání řešeného problému. Druhá kapitola přiblíží existující přístup a upozornění na některé jeho nedostatky. Třetí kapitola seznámí se základními technikami problému splňování podmínek, které jsou použity při řešení problému. Ve čtvrté kapitole bude představena kostra řešícího přístupu a jednotlivé části budou podrobně popsány v následujících dvou kapitolách. Poslední kapitola seznámí s testovacími daty a s výsledky testů. 2

9 1. Problém tvorby rozvrhů solárních panelů na ISS Problém plánování operací solárních panelů na Mezinárodní vesmírné stanici [1] byl jednou ze tří úloh vyhlášených v kategorii Challenge Track v rámci soutěže ICKEPS 2012 (The International Competition on Knowledge Engineering for Planning and Scheduling) konané při ICAPS 2012 (International Conference on Automated Planning and Scheduling). Popis problému obsahoval několik nejasností a nepřesností, byla tak nutná komunikace s autorem zadání, panem Jeremy Frankem kvůli jejich vyjasnění. Zadání problému bude přiblíženo v této kapitole Solární panely ISS má osm solárních panelů, čtyři na levé a čtyři na pravé straně. Každý ze čtyř panelů na levé straně je pomocí kloubu zvaného Beta Gimbal Assembly (značeno BGA) přidělán k jedné společné konstrukci nosníků. Stejně jsou ke druhé konstrukci nosníků přidělány čtyři panely na pravé straně. Obě tyto konstrukce jsou ke zbytku stanice připojeny pomocí kloubu zvaného Solar Alpha Rotary Joint (značeno SARJ). Panely, klouby a jejich osy otáčení jsou znázorněny na obrázku č. 1. Orientace kloubů se měří ve stupních a v rámci úlohy se uvažuje, že orientace kloubů nabývá pouze celočíselných hodnot, tj. hodnoty jsou z intervalu 0 ;360 ). Kloub může být v jednom z následujících módů. Autotrack: Tehdy by měl palubní software automaticky sledovat Slunce, avšak v rámci úlohy se má uvažovat, že se v tomto stavu kloub pouze otáčí maximální povolenou rychlostí nezávisle na pozici Slunce. 4 Je-li panel v tomto módu, musí v něm setrvat alespoň 90 minut. Otáčení probíhá pouze v kladném směru. Park: Motor udržuje kloub v nastavené orientaci. Lock (v případě SARJ)/ Latch (v případě BGA): Při těchto módech je použita fyzická bariéra, aby se zabránilo kloubu v pohybu. V zájmu 4 Takovéto použití automatického sledování by neplnilo svůj účel, ale bylo nám panem Jeremy Frankem (NASA, výzkumné centrum Ames) potvrzeno, že pro účely soutěže ICKEPS 2012 se má mód Autotrack skutečně interpretovat takto. 3

10 Obrázek 1: Náčrt ISS s označením jednotlivých kloubů a naznačením jejich os otáčení. Obrázek je převzatý z [2]. přehlednosti textu bude dále používáno Lock i v případě BGA kloubů, kdy by se správně mělo použít pojmenování Latch. Kromě těchto tří módů se může kloub ještě otáčet (např. když je potřeba změnit orientaci mezi dvěma sousedními módy Park v různých pozicích), ale tato akce není počítána mezi módy. Otáčet se kloub může oběma směry. Jako stav kloubu bude dále označována kombinace jeho orientace a módu Problém Na vstupu problému jsou rozvrhy, které popisují stav stanice. Definována je v nich například rychlost, jakou se mohou klouby otáčet, jaká událost na stanici probíhá nebo časový horizont, v jakém tato událost proběhne. Úkolem je nalézt pro jednotlivé klouby rozvrh, který určí, v jakém stavu mají klouby během jednotlivých událostí být, a zvolí akce, kterými bude stav kloubů měněn Vstup Rozvrh stanice není zadáván vcelku, je rozdělen do dvou rozvrhů. Prvním rozvrhem je rozvrh orientací (ATL), který informuje o orientaci stanice a událostech na ní. Druhým rozvrhem je rozvrh motorů (TRTL), který definuje, jaké motory jsou používány k ovlivňování orientace stanice. ATL a TRTL společně definují vývoj konfigurací stanice v čase, přičemž posloupnost konfigurací je bez mezer, tedy nová 4

11 konfigurace začíná právě v okamžiku, kdy předcházející konfigurace končí. Jako první krok je tedy nutné tyto dva rozvrhy sloučit. Výsledný rozvrh bude označován jako rozvrh stanice. Sloučení rozvrhů je znázorněno na obrázku č. 3. Samostatně jsou zadávány tabulky podmínek, které pro jednotlivé klouby popisují, jak jsou jednotlivé stavy kloubů preferované během různých konfigurací stanice. Některé informace v rozvrhu stanice nejsou principiálně nezbytné pro vlastní hledání rozvrhu, slouží pouze jako složený index do slovníku říkajícího, která skupina tabulkových podmínek se pro danou konfiguraci stanice vztahuje. ATL, TRTL i tabulkové podmínky budou blíže popsány v samostatných podkapitolách Rozvrh orientací První informací na vstupu je rozvrh orientací, který obsahuje informace o dění probíhajícím na stanici a o orientaci stanice. Položky jsou v něm seřazeny chronologicky a neobsahuje mezery, tj. položka číslo i začíná právě v okamžiku, kdy položka číslo (i- 1) končí. Příklad rozvrhu je uveden v tabulce č. 1. Není specifikováno, v jakém formátu bude na vstupu zadáván, ale je známo, že obsahuje následující atributy: Čas: Časy jsou uvedeny ve formátu den mise/hodiny:minuty GMT. Může být uveden jeden nebo dva časy. Jsou-li uvedeny dva časy, pak první z uvedených časů znamená čas počátku a druhý čas znamená čas, kdy konfigurace končí. Je-li uveden jeden čas, pak není vyžadováno, aby konfigurace začala a skončila v konkrétní čas, pouze musí začít nejpozději v uvedený čas. Čas počátku, resp. konce ale může být vynucen (má-li předcházející položka pevný konec, resp. následující položka pevný začátek) tím, že na sebe jednotlivé konfigurace navazují. Událost: Aktivita, která v té době na ISS probíhá. Události lze seskupit do několika skupin podle toho, zda a kdy lze během nich otáčet panely. Není povoleno otáčet panely: Docking (loď, port): Loď přistává u příslušného portu. [ATV, Orbiter, Soyuz, Progress]: Možné lodě (zkratka ATV pochází z anglického Automated Transfer Vehicle). 5

12 # Čas Událost Beta úhel 1 170/05:30 Attitude Hold 2 170/08:00 170/10:00 Approach (ATV) 3 170/12:00 Docking (ATV, SM) YPR Soustava souřadnic Nepředvídaná událost Rychlost otáčení SARJ XVV/LVLH N 9 XVV/LVLH N 9 XVV/LVLH N 9 Tabulka 1: Ukázka rozvrhu událostí. [SM, DC1, FGB]: Možné porty (služební modul Zvezda, stykovací modul a přechodová komora Pirs, skladový modul Zarja). Undocking ([ATV, Orbiter, Soyuz, Progress]): Loď odlétá od stanice. Reboost: Obnova orbity stanice. Maneuver ([debris-avoidance, attitude]): Vyhýbání se troskám, resp. změna orientace. Je povoleno otáčet panely na konci položky: Approach ([ATV, Orbiter, Soyuz, Progress]): Loď přilétá ke stanici. Prop purge (SM, DC1): Čištění palivového potrubí. Water dump (Lab, Orbiter): Vypouštění odpadních vod. Je povoleno otáčet panely na začátku i konci položky: Attitude hold: Klidový stav, kdy neprobíhají žádné nebezpečné operace. Beta úhel: Sklon orbity stanice vzhledem ke Slunci. Hodnota je udávána celočíselně ve stupních a může nabývat hodnot v intervalu 60 ; V testovacích datech je u jedné položky i hodnota úhlu 61. Ze sklonu orbity stanice vzhledem k Zemi 51,64 a sklonu rotační osy Země 23,44 získáme maximální teoretický možný rozsah 75 ;75. Reálný rozsah záleží na tom, v které fázi roku nabývá beta úhel maximální hodnotu a jestli se trajektorie vůči Slunci mění. Nelze tedy jednoznačně říct, zda je chybně hodnota v testovacích datech nebo zda by měl být interval přípustných hodnot širší. 6

13 Soustava souřadnic: Definice soustavy souřadnic stanice se sestává ze dvou složek: orientace os a vztažné soustavy. Možné jsou tři různé orientace stanice 6 : XVV/LVLH: x-ová osa míří ve směru vektoru rychlosti, z-ová osa míří do středu Země (doslovně zkratky znamenají X-axis toward the Velocity Vector/ Local Vertical, Local Horizontal). YVV/LVLH: y-ová osa míří ve směru vektoru rychlosti, z-ová osa míří do středu Země (doslovně zkratka znamená Y-axis toward the Velocity Vector). XPH/XPOP: x-ová osa je kolmá na rovinu orbity, rovina definovaná osami x a z je rovnoběžná s rovinou definovanou slunečním vektorem a vektorem momentu hybnosti družice (doslovně zkratky znamenají X- axis Parallel to the H/ X-axis Perpendicular Out of Plane, kde H je vektor momentu hybnosti). YPR (bočení, klopení, klonění): Orientace stanice vzhledem k dané soustavě souřadnic. Sestává se ze tří desetinných čísel ve stupních s přesností na jedno desetinné číslo, tj. 0,0 ; 360,0) 0,0 ; 360,0 ) 0,0 ; 360,0 ). Pohotovostní režim: Pokud se vyskytl nějaký problém, může se stanice nacházet v nouzovém módu, kdy není vyžadováno dodržení některých podmínek. Rychlost otáčení SARJ: Aktuální možná rychlost otáčení SARJ se může měnit (na rozdíl od rychlosti otáčení BGA, která je vždy 18 /min) a její hodnota je součástí vstupu. Jedná se o celočíselné hodnoty ve stupních za minutu v rozsahu 9;30. Při řešení úlohy se přímo pracuje s časem události, typem události (vzhledem k tomu, kdy je při něm možné otáčet klouby), rychlostí otáčení kloubů SARJ a informací, zda jde o pohotovostní režim. Ostatní informace uvedené v rozvrhu určují pouze to, jaká sada tabulkových podmínek se má použít. 6 Podle zadání by mohly být na vstupu i kombinace XPH/LVLH, XVV/XPOP a YVV/XPOP, které však nemají interpretaci. 7

14 Rozvrh motorů Druhou položkou na vstupu je rozvrh motorů, který říká, jaké motory mohou být použity pro změnu orientace stanice a udržování zvolené orientace. Orientaci objektu v prostoru lze definovat pomocí pootočení kolem tří základních os (bočení, klopení, klonění). V každý časový okamžik je pro každou z os zadefinován v rozvrhu právě jeden motor, který může být zažehnut, aby korigoval orientaci stanice. Příklad rozvrhu je uveden v tabulce č. 2. Formát rozvrhu na vstupu není definován, je ale známo, že bude obsahovat následující atributy: Složka: Osa, ke které se příslušná položka vztahuje. Čas: Čas je definován stejně jako v případě rozvrhu událostí, tedy den mise/hodiny:minuty GMT a mohou být uvedeny dva časy (pevný počátek a konec) nebo jeden čas (konfigurace musí začít nejpozději v uvedený čas). Motor: Informace o motoru, který příslušnou osu ovládá: ISS-SM: Systém raketových korekčních trysek. ISS-CMG: Systém silových gyroskopů (Control Moment Gyroscopes) Docked: Osa je kontrolována vesmírným plavidlem připojeným ke stanici. V případě této varianty jsou uvedeny ještě dva atributy: [ATV, Orbiter, Soyuz, Progress]: Vesmírná loď, zajišťující řízení svými motory. [SM, DC1, FGB]: Port, ke kterému je ona loď připojena. Položky jsou v rozvrhu seřazeny chronologicky a na každý časový okamžik se vztahují tři položky rozvrhu, jedna za každou složku orientace. Rozvrh neobsahuje v žádné složce orientace mezery, to znamená, že položka j začíná právě když končí poslední položka i, která předchází položce j a která se vztahuje na stejnou složku, tj. když končí položka i = max{n n<j & n.složka=j.složka}. Ve skutečnosti tak nejde o jeden rozvrh, ale o tři rozvrhy seskupené dohromady. V případě tohoto rozvrhu budeme pracovat přímo s časem položky a se složkou orientace, ke které se daná položka vztahuje. Zbylé informace jsou pouze součástí indexu určující, která sada tabulkových podmínek se má použít. 8

15 # Čas Složka Motor Loď Port 1 170/06:00 170/13: /05:30 170/08: /05:30 170/09: /08:00 170/13: /09:30 170/13:00 Tabulka 2: Ukázka rozvrhu motorů. Y Docked Soyuz SM P ISS-CMG N/A N/A R Docked Progress FGB P Docked ATV DC1 R ISS-SM N/A N/A Tabulky podmínek Poslední součástí vstupu jsou tabulky podmínek. Každá tabulka je přiřazena nějakému panelu (tj. dvojici jednoho kloubu BGA a příslušného kloubu SARJ) a definuje, které stavy kloubů tohoto panelu jsou přípustné při zohlednění určitých aspektů. Přípustné stavy dále dělí do několika kategorií podle jejich preference. Protože orientace každého kloubu může nabývat 360 různých stavů, je každá tabulka velká pixelů. y-ová souřadnice reprezentuje orientaci SARJ, x-ová orientaci BGA, přičemž levý horní roh odpovídá orientaci [0; 0] a pravý dolní roh orientaci [359; 359]. Každý pixel může nabývat tří barev, které odpovídají závažnosti podmínky: zelená znamená optimální orientaci, žlutá znamená orientaci přípustnou a červená znamená zakázanou orientaci (ve většině případů). Příklad tabulky podmínek je na obrázku č. 2, kde je navíc černě zvýrazněna orientace [193; 87]. Pokud se uvažuje o hodnotě v tabulkách podmínek, nezáleží pouze na orientaci kloubů, ale také na jejich módu. Jsou-li oba příslušné klouby Lock nebo Park, bere se jako hodnota podmínky hodnota pixelu v y-tém řádku a x-tém sloupci, kde x je orientace kloubu BGA a y je orientace kloubu SARJ. Je-li právě jeden kloub v módu Autotrack, pak je kvůli rotaci kloubu nutné brát nejhorší hodnotu z x-tého sloupce (jde-li o kloub BGA), resp. y-tého řádku (jde-li o kloub SARJ). To je zapříčiněno tím, že se kloub během módu Autotrack otáčí a tedy kloub během tohoto módu projde skrz každý pixel tohoto sloupce, resp. řádku (kloub musí být v módu Autotrack alespoň 90 minut a minimální rychlost otáčení je 9 /min., takže kloub stihne projít 9

16 BGA SARJ 180 Obrázek 2: Příklad tabulky podmínek se zvýrazněním hodnot při nastavení SARJ na 87 a BGA na každou orientací alespoň 2x). Jsou-li v módu Autotrack oba klouby, bere se nejhorší hodnota z celé tabulky 7. V případě tabulky na obrázku č. 2 se tedy uplatní zelená barva v případě, že kloub BGA je v orientaci 193 a není v módu Autotrack (lhostejno zda je kloub SARJ v módu Autotrack); v případě, že je kloub BGA v módu Autotrack a kloub SARJ je v orientaci 87 a není v módu Autotrack, pak má podmínka žlutou hodnotu; pokud jsou v módu Autotrack oba klouby, pak má uvažovaná podmínka červenou hodnotu. Tabulkové podmínky jsou čtyř typů: Generování energie (značeno P, z anglického Power Generation): Říká, zda příslušná orientace generuje dostatek energie pro běh systémů podpory života, dostatek energie pro provádění experimentů atd. Pevnostní zatížení (značeno L, z anglického Structural Load): Definuje míru namáhání panelů a riziko jejich poškození. 7 Při aktuální definici Autotrack módu by bylo možné spočítat, kterými buňkami panel skutečně projde, takže by nebylo nutné uvažovat celou tabulku. Navzdory tomu se má skutečně brát nejhorší buňka z celé tabulky. 10

17 Znečištění prostředí (značeno E, z anglického Environmental Contamination): Mnoho částic v okolí může znečistit panely a ovlivnit tak dlouhodobě množství generované energie. Stínění na nosníky (značeno S, z anglického Longeron Shadowing): Vzhledem k teplotní roztažnosti materiálů může nevhodné stínění způsobit strukturální poškození panelů. Pro každý solární panel je při každé konfiguraci určena jedna čtveřice tabulek, která obsahuje po jedné tabulce od každého typu. Každému SARJ tak přísluší čtyři čtveřice tabulek, jedna čtveřice za každé BGA, které je k němu vztažené. Tabulky překvapivě nezávisí přímo na čase, kdy konfigurace nastává, ale jsou určeny všemi zbývajícími parametry položky rozvrhu kromě rychlosti otáčení SARJ a nouzového módu. Na čase tak závisí pouze nepřímo tím, že na čase závisí konfigurace stanice. Indexem tabulky tedy je solární panel, typ tabulky, beta úhel, orientace os, vztažná soustava, YPR, událost a nastavení motorů. Přiřazení tabulek jednotlivým relevantním konfiguracím 8 je zadáváno formou XLS souboru. Obrázek č. 3 ukazuje, jak jsou rozvrhy ATL a TRTL sloučeny do jednoho rozvrhu stanice, který nese všechny informace o tom, které tabulkové podmínky se k jednotlivým panelům vztahují v závislosti na čase Podmínky na řešení V nalezeném rozvrhu musí být v každém okamžiku každý kloub v jednom ze stavů (stavem kloubu je označována kombinace jeho orientace a módu), otáčet se, přecházet z jednoho módu do jiného, nebo čekat na dokončení otáčení nebo změny módu u některého jiného kloubu. Zároveň během každé položky rozvrhu stanice může být každý kloub v nejvýše jednom stavu. Není tedy možné, aby byl kloub část položky v jednom stavu, pak svůj stav změnil a zbytek této položky byl v jiném stavu. Má-li být kloub během následující položky v jiné orientaci, musí být otáčení na konci aktuální nebo začátku následující události přípustné a musí být na otočení dostatek času. Klouby BGA se mohou otáčet teprve poté, co skončí otáčení kloubu SARJ. Potřebuje-li se otáčet více kloubů BGA, musí se začít otáčet současně. Během 8 Generovány jsou pouze tabulky pro konfigurace, které se v rozvrhu mohou vyskytnout, protože podíváme-li se na domény parametrů, kterými jsou tabulky indexovány, tak zjistíme, že všech možných konfigurací je o mnoho řádů více, než konfigurací během měsíčního rozvrhu. 11

18 6:00 7:00 8:00 9:00 10:00 11:00 ATL TRTL.Y TRTL.P TRTL.R Rozvrh stanice #1 #2 #3 #1 #2 #4 #3 #5 #1 #2 #3 #4 Obrázek 3: Sloučení rozvrhu orientací (ATL) a rozvrhů motorů pro jednotlivé osy (TRTL.Y, TRTL.P a TRTL.R) do rozvrhu stanice. Rozvrh ATL je převzat z tabulky č. 1 a rozvrh TRTL je převzat z tabulky č. 2. otáčení se neuvažují podmínky plynoucí z tabulek. Pořadí událostí během jedné položky rozvrhu stanice je na obrázku č. 4. Není povoleno přiřadit panelu orientaci, která má v tabulce P červenou hodnotu, neboť taková orientace nezajišťuje dostatek energie pro běh systému podpory života. Červená hodnota v tabulkách L, resp. S znamená síly, resp. rozdíly teplot schopné poškodit panel a taková orientace také nejsou povoleny. V případě znečištění panelů podobně kritické situace nenastávají a není tedy zakázáno, aby se panel nacházel v orientaci, která má v tabulce E červenou hodnotu, bude to ale zohledněno při posuzování kvality rozvrhu. Přípustné módy jsou omezeny tzv. Lock-Latch podmínkami. Pokud by se panel při nastavení některého z kloubů do Autotrack módu mohl v L tabulce dostat do žluté hodnoty, tak není Autotrack na tomto kloubu přípustný. Pokud by se navíc dostal do červené hodnoty, tak je nutné, aby byl tento kloub nastaven do módu Lock. Autotrack také není povolený, pokud by se jím mohlo dostat do červené hodnoty v tabulce E. Poslední omezení se nevyžaduje, jedná-li se o nouzovou situaci. 9 Základní případy Lock-Latch podmínek jsou popsány u obrázku č. 5. Autotrack musí trvat alespoň 90 minut, přechod z a do Lock, resp. Latch módu trvá 20 minut. Tyto limity nemusí být splněny během jedné položky rozvrhu, 9 V zadání soutěže je tato podmínka zadána jednak textem a jednak tabulkou. Tyto dva zápisy ale nedávají stejné podmínky. Vzhledem k tomu, že u tabulky není jednoznačné, jak ji interpretovat, byla zvolena verze, která je zadefinována textem. 12

19 Unlocking Locking Turning Stav kloubu Čekání Obrázek 4: Akce a stavy během jedné položky rozvrhu. Modře je vyznačen kloub SARJ, červeně a zeleně jsou dva klouby BGA. Odemykání probíhá od začátku položky. Jakmile skončí odemykání kloubu SARJ, začne se otáčet. Kloub BGA, který je již odemčen, čeká, dokud neskončí otáčení kloubu SARJ a dokud nejsou odemčeny všechny BGA, které se chtějí otáčet. Když jsou všechny klouby BGA odemčeny a otáčení kloubu SARJ skončilo, začnou se otáčet klouby BGA. Po skončení otáčení je každý kloub ve svém stavu. Obdobná je situace na konci položky. je-li doba trvání položky příliš krátká, může se podmínka propagovat do další (resp. předchozí) položky a časy se sečtou. Pokud by výsledný rozvrh obsahoval posloupnost Lock, Park, Lock ve stejné orientaci, pak je upřednostňován rozvrh, který bude obsahovat Lock po celou dobu posloupnosti. Pokud by rozvrh obsahoval několik položek ve stejném stavu, mohou být sloučeny do jedné položky Ohodnocení řešení Není explicitní funkce, která by ohodnocovala celý plán, je pouze funkce, která umožňuje porovnat jednotlivé stavy. Tato funkce se skládá ze čtyř částí, přičemž každá další část se aplikuje teprve když předchozí není schopná konfigurace porovnat. Nejvyšší prioritu má preference hodnot v tabulkách podmínek (kombinace hodnot ze všech čtyř typů podmínek je dále označována jako obarvení). Základem je preference lepšího obarvení pro jednotlivé panely. Nejdůležitější je preference barvy v tabulce S, následuje barva L, E a nejméně podstatná je barva v tabulce P. Připomínám, že jediná tabulka E připouští červenou barvu, v ostatních tabulkách se červená nepřipouští. Tyto preference jsou zobrazeny v tabulce č. 3 (nižší číselná 13

20 Obrázek 5: Lock-Latch podmínky: Pokud je levá tabulka typu L, pak v bodě A musí být kloub SARJ v módu Lock, v bodě C musí být kloub BGA v módu Lock, v bodě B musí být oba klouby v módu Lock a v bodě D musí být alespoň jeden kloub v módu Lock. Pokud je levá tabulka typu E (a nejde o pohotovostní režim) nebo pravá tabulka typu L, pak v bodě A nesmí být kloub SARJ v módu Autotrack, v bodě C nesmí být kloub BGA v módu Autotrack, v bodě B nesmí být ani jeden kloub v módu Autotrack a v bodě D nesmí být alespoň jeden kloub v módu Lock. hodnota v prvním sloupci je preferována). Vzhledem k tomu, že čtveřice BGA sdílí jeden SARJ, může nastat situace, že kdy se optimalizace orientace jednoho panelu dostává do konfliktu s požadavky druhého panelu. Je-li nutné porovnat různé kombinace obarvení, porovnají se součty ohodnocení obarvení jednotlivých panelů (první sloupec tabulky č. 3) a porovnají se tyto hodnoty. 10 Druhá v pořadí je preference na mód kloubů. Nejvyšší prioritu má mód Autotrack, následuje mód Park a nejnižší prioritu mají módy Lock a Latch. Další v pořadí je minimalizace počtu změn směru otáčení. Je-li kloub během některé položky v módu Autotrack, ale následující položce rozvrhu nevyhovuje orientace, v které kloub končí, lze (dovolují-li to ostatní podmínky, např. časové) před začátkem módu nebo po jeho skončení otáčet kloubem zpět do vhodné pozice. Počet těchto změn směru je minimalizován, nepočítají se tedy otáčení, která jsou oddělena např. módem Park. Poslední částí je minimalizace délky otáčení, tj. neotáčet klouby více, než je nezbytně nutné. 10 V původním zadání je ještě porovnávání, které popisuje, jak horší hodnotu v důležitém typu tabulek vyměnit za horší barvy v méně důležitých tabulkách. Takovéto porovnání má však problémy s tranzitivitou a proto zde není uvažováno. 14

21 1 S L E P 7 S L E P 13 S L E P 19 S L E P 2 S L E P 8 S L E P 14 S L E P 20 S L E P 3 S L E P 9 S L E P 15 S L E P 21 S L E P 4 S L E P 10 S L E P 16 S L E P 22 S L E P 5 S L E P 11 S L E P 17 S L E P 23 S L E P 6 S L E P 12 S L E P 18 S L E P 24 S L E P Tabulka 3: Ohodnocení barev z jednotlivých tabulkových podmínek na základě stavu jednoho kloubu BGA a příslušného kloubu SARJ Cíl Požadovaným výstupem je posloupnost stavů jednotlivých kloubů a akcí měnících tyto stavy (změny módu a změny orientace), která je konzistentní, tj. neporušuje podmínky na řešení, a je optimální vzhledem k preferencím. Jak již bylo řečeno, není zadefinována funkce, která by ohodnocovala celý plán, je pouze funkce, která porovnává různé stavy během jedné položky rozvrhu stanice. Hledáno je tedy pouze Pareto-optimální řešení, tj. řešení takové, u kterého není možné u žádné položky rozvrhu hodnotu optimalizační funkce zlepšit, aniž by to mělo za následek zhoršení hodnoty optimalizační funkce u jiné položky rozvrhu. Optimalita není striktně vyžadována Shrnutí Mnoho informací v zadání není pro řešení podstatných. Nyní proto bude následovat shrnutí toho nejdůležitějšího. Stanice má osm solárních panelů, které jsou seskupeny do dvou čtveřic. Každá čtveřice sdílí jeden kloub SARJ, ke kterému je každý z panelů přichycen pomocí jednoho kloubu BGA. Stav kloubu je definován módem a orientací. Orientace je měřena v celých stupních. Módy jsou možné tři: Autotrack, během kterého se kloub plynule otáčí v pozitivním směru (vzhledem k tomu, že se orientace kloubu mění, tak se u tohoto módu jako orientace kloubu označuje orientace, ve které kloub skončí); Park, během kterého kloub zůstává v zadané orientaci; a Lock/ Latch, během kterého je kloub uzamčen, aby se nemohl pohybovat. Kromě těchto módů mohou 15

22 klouby měnit svůj stav, tj. se buď otáčet (v pozitivním i negativním směru) a měnit tak svou orientaci, nebo přecházet z jednoho módu do jiného. Na vstupu problému jsou dva rozvrhy ATL, který definuje rozvrh stanice, a TRTL, který definuje rozvrh motorů. Položky jsou v rozvrzích seřazeny chronologicky a rozvrhy jsou bez mezer. Jejich spojením získáme rozvrh, který jednoznačně definuje konfiguraci stanice v čase. Nejdřív je nutné rozdělit rozvrh TRTL do tří rozvrhů podle hodnoty v poli 'Složka'. Následně se projde každý ze čtyř rozvrhů (jeden rozvrh ATL a tři rozvrhy vzniklé z TRTL) a pro každou hranici mezi položkami (tj. okamžik, kdy jedna položka končí a druhá začíná) se zajistí existence ekvivalentní hranice i v ostatních rozvrzích. Náčrt tohoto algoritmu je v obrázku č. 6. Poté jsou rozvrhy zarovnány tak, aby měly stejný začátek i konec. Může se totiž stát, že jeden rozvrh začíná např. v 5:00, zatímco jiný až v 6:00, takže pro interval 5:00-6:00 není rozvrh zadefinován. Nyní má každá položka z libovolného rozvrhu ve všech třech zbylých rozvrzích protějšek, který začíná a končí stejnými hranicemi. Tyto čtyři položky se stejnými hranicemi se sloučí do jedné položky v rozvrhu stanice. Problém by mohl nastat v případě položek s volitelným časem, pokud by nějaká položka neměla jednoznačně zadefinováno, zda má začít dříve, nebo později, než nějaká položka v jiném rozvrhu. Taková situace by nastala například v případě rozvrhu TRTL zadefinovaném tabulkou č. 4. Položka #2 končí (a položka #4 začíná) v 8:00, zatímco o položce #5 víme pouze to, že začne (a tedy položka #3 skončí) nejpozději v 9:30. Může ale také začít např. už v 7. V takové situaci není jasné, zda slučováním vznikne posloupnost (#2-#3, #2-#5, #4-#5), (#2-#3, #4-#3, #4-#5), nebo (#2-#3, #4-#5). Bylo však řečeno, že takováto situace nemůže nastat a sloučený rozvrh je vždy jednoznačný. Není proto nutné takovouto speciální situaci řešit. V získaném rozvrhu stanice nás zajímá: Čas položky, který říká kdy položka začíná a končí (pokud jde o položku s fixním časem), nebo kdy nejpozději musí položka začít (jde-li o položku s variabilním časem). Typ události ovlivňující to, zda se mohou klouby na začátku nebo konci položky otáčet, aby změnily svůj stav. 16

23 foreach Timetable R: foreach Boundary H(T1,T2) in R: foreach Timetable S, S R: find Item P(H1(T3,T4),H2(T5,T6)) from S, T4 T1 & T2 T5 if T4 T1 T2 T5 split P -> P1(H1(T3,T4),H(T1,T2)) & P2(H(T1,T2),H2(T5,T6)) Obrázek 6: Fragmentace jednotlivých rozvrhů podle ostatních. Hranice je zadefinována pomocí času, kdy nejdříve může a kdy nejpozději musí nastat. Položka je reprezentována dvěma hranicemi. Rychlost otáčení SARJ říká, jak rychle klouby mění svou orientaci během otáčení a během módu Autotrack. Pohybuje se v rozmezí od 9 /min. do 30 /min. Rychlost otáčení kloubů BGA je konstantních 18 /min. To, zda jde o pohotovostní režim ovlivňuje to, jaké podmínky budou kladeny na rozvrh. Zbylé informace uvedené v rozvrhu jsou pouze indexem do slovníku, který říká, jaké tabulkové podmínky se mají pro tuto položku rozvrhu stanice použít. Pro každou položku rozvrhu existuje pro každý panel čtveřice tabulkových podmínek (značené jako P, L, E a S), která definuje kvalitu jednotlivých stavů kloubu. Tabulky jsou velikosti 360x360px, řádky odpovídají orientaci příslušného kloubu SARJ a sloupce odpovídají orientaci příslušného kloubu BGA. Pokud jsou oba klouby v módu Park nebo Lock/ Latch, tak se jako barva stavu bere hodnota odpovídajícího pixelu. Je-li v módu Autotrack pouze kloub BGA, bere se jako hodnota orientace nejhorší barva z příslušného řádku. Je-li v módu Autotrack pouze kloub SARJ, bere se jako hodnota orientace nejhorší barva z příslušného sloupce. Pokud jsou v módu Autotrack oba klouby, platí nejhorší barva z celé tabulky. Je-li kloub v módu Autotrack, musí v něm setrvat alespoň 90 minut. Pro ostatní módy podobná podmínka neexistuje. Přechod do/ z módu Lock/ Latch trvá 20 minut, zbylé přechody jsou okamžité. Pokud není během jedné položky rozvrhu dostatek času na splnění těchto podmínek, mohou se sčítat časy trvání u po sobě jdoucích položek. Je-li potřeba kloubem otáčet, je možné jím otáčet pouze na začátku, resp. konci položky rozvrhu, pokud to umožňuje typ události. Otáčení probíhá předem danou rychlostí (rychlost otáčení kloubu SARJ je zadefinována ve vstupním rozvrhu, 17

24 # Čas Složka Motor Loď Port 1 170/06:00 170/13: /05:30 170/08:00 Y Docked Soyuz SM P ISS-CMG N/A N/A 3 170/05:30 R Docked Progress FGB 4 170/08:00 170/13:00 P Docked ATV DC /09:30 R ISS-SM N/A N/A Tabulka 4: Ukázka rozvrhu událostí, který by vedl k nejednoznačnému rozvrhu. rychlost otáčení kloubu BGA je 18 /min.) a pokud je nutné otáčet kloubem BGA i příslušným kloubem SARJ, otáčí se nejdříve kloub SARJ a teprve poté, co jeho otáčení skončí, se může otáčet kloub BGA. Kloub nesmí být v orientaci, která má v tabulce P, L nebo S červenou hodnotu. Pokud by se kloub v módu Autotrack dostal v tabulce L do žluté oblasti nebo, pokud nejde o pohotovostní režim, v tabulce E do červené oblasti, nesmí být v módu Autotrack. Pokud by se kloub navíc při módu Autotrack dostal v tabulce L do červené oblasti, musí být kloub v módu Lock/ Latch. Kloub musí mít pro každou položku rozvrhu zadefinovaný stav, který se může měnit pouze na začátku a konci položky, je-li na změnu při dodržení podmínek (např. klouby BGA se otáčí až poté, co skončí otáčení kloubu SARJ; kloub musí být odemčen, aby se mohl otáčet) dostatek času. Optimalizační funkce neohodnocuje celý plán, ohodnocuje pouze jednotlivé stavy kloubů a skládá se ze čtyř složek, z nichž každá je nadřazená všem následujícím. Nejdůležitější je optimalizace barvy, která je počítána na základě hodnot v tabulkách podmínek. Pořadí barev je zachyceno v tabulce č. 3 na straně č. 15. Druhá v pořadí je optimalizace módu. Preferovaný je mód Autotrack a následuje mód Park a nejméně žádané jsou módy Lock/ Latch. Třetí složkou optimalizační funkce je počet změn směru otáčení. Nejméně důležitou složkou je délka otáčení. Vzhledem k tomu, že není zadefinována jedna globální optimalizační funkce, ale sada lokálních funkcí, jde vlastně o úlohu vícekriteriální optimalizace. Existují 18

25 dva základní přístupy, jak k takovému problému přistupovat (přístupy budou popsány pro případ, kdy se snažíme hodnoty optimalizačních funkcí minimalizovat). Prvním přístupem je předem zadefinovat důležitost jednotlivých optimalizačních funkcí. Místo optimalizace n funkcí pak lze optimalizovat jednu funkci f=c 1 *f 1 +c 1 *f 2 + +c n *f n, přičemž koeficienty c i jsou voleny podle důležitosti příslušných funkcí. Například pokud jsou všechny funkce stejně důležité, tak c 1 =c 2 = =c n. Pokud je naopak požadováno, aby se hodnota podle funkce f i zohledňovala teprve tehdy, když funkce f 1 až f i-1 nejsou schopny případy rozlišit a bude známo, že obor hodnot všech funkcí f i je 0 ;10), tak budou koeficienty zadefinovány rekurzivně jako c i =10*c i+1. Opačným přístupem je rozhodování na základě hodnot jednotlivých optimalizačních funkcí. Lze tak například hledat řešení, které je podle funkce f i lepší než limitní hodnota L i, přičemž limit může být zadefinován pro každou optimalizační funkci, případně lze limitní hodnoty měnit na základě průběžných výsledků (zpřísňovat, pokud je nalezeno příliš mnoho řešení, resp. zmírňovat, pokud není nalezeno žádné řešení). Pokud jsou jednotlivé funkce porovnatelné a normované, tak lze hledat řešení, které minimalizuje minimum (pokud chceme co nejlepší výsledek v libovolné funkci) nebo maximum (pokud chceme minimalizovat škodu způsobenou nejhorším výsledkem) hodnot jednotlivých optimalizačních funkcí, tj. minimalizovat funkci min f i, resp. max f i. V problému plánování solárních panelů máme zadefinovanou optimalizační funkci, která porovnává jednu položku rozvrhu. Při hledání rozvrhu panelů pro vstupní rozvrh délky n máme n funkcí f 1, f 2,,f n, které porovnávají jednotlivé c položky rozvrhu. Každá z těchto funkcí se skládá ze čtyř částí f i (hodnota obarvení), m d t d f i (cena módů), f i (počet změn směru otáčení) a f i (délka otáčení). Funkce f ic, f im, f i t m a f i mají zadefinované pořadí podle f i se rozhoduje teprve tehdy, pokud nelze d c rozhodnout podle f ic ; podle f i se rozhoduje teprve když nelze rozhodnout podle f i ani t m f im ; a podle f i se rozhoduje pouze když není možné rozhodnout podle f ic, f i ani f id. * Pořadí f 1*, f 2*,, f n zadefinováno není. Lze ale předpokládat, že f i bude mírně důležitější než f i+1, protože s časovou vzdáleností od současnosti roste pravděpodobnost, že nastane neočekávaná situace a bude nutné rozvrh přeplánovat. 19

26 Je tedy vhodnější použít spíše přístup, který zkombinuje jednotlivé optimalizační funkce do jedné, a koeficienty zvolit tak, aby s časem důležitost funkce klesala. Cílem je nalézt rozvrh, který pro každou položku rozvrhu stanice řekne, v jakém stavu mají jednotlivé klouby být, určí akce (změna jeho módu; otáčení kloubu definované pomocí směru a délky otáčení), které se mají provést, aby byla zachována kontinuita stavů mezi položkami rozvrhu stanice, a rozhodne, kdy mají jednotlivé akce začít. V případě položek rozvrhu stanice, které mají volitelný čas počátku, navíc rozhodne, kdy mají tyto položky začít. Nalezený rozvrh musí splňovat podmínky na něj kladené a mělo by jít o Paretovo optimum vzhledem k optimalizační funkci. Optimalita rozvrhu ale není striktně vyžadována. 20

27 2. Aktuálně používaný přístup Rozvrh stanice je tvořen iterativně za spolupráce několika týmů. Například tabulky stínění je možné vypočítat teprve, když je rozvrh panelů znám a tedy je možné odsimulovat tepelné namáhání materiálu. Tyto tabulky jsou ale vstupem pro tvorbu rozvrhu panelů. Rozvrhy jsou tak počítány opakovaně na základě toho, jak se mění požadavky některých skupin, a toho, že hotové rozvrhy umožní dopočítat skutečnosti neznámé v předchozím kroku. Vytvořit týdenní rozvrh tak trvá přibližně 80 člověkohodin a zahrnuje 6 iterací plánování (podle [2]), přičemž standardně se tvoří čtyřtýdenní rozvrh a jeho tvorba trvá čtyři týdny. Je tudíž problematické plán operativně měnit v závislosti na aktuálním vývoji. V zájmu snížení času potřebného pro tvorbu rozvrhu vyvíjí v posledních letech v rámci NASA tým z výzkumného centra Ames aplikaci SACE (Solar Array Constraint Engine). Při ruční tvorbě rozvrhu se používá hladový algoritmus bez navracení. Aplikace používá stejný přístup, není tedy schopna nalézt lepší řešení než lidé, avšak dobu nutnou pro nalezení týdenního rozvrhu zmenšuje z hodin na minuty. Přístup použitý v SACE byl postupně popsán v [3], [2] a [4] a vypadá následovně: Kostra použitého algoritmu je zobrazena v obrázku č. 7. Algoritmus je rozdělen do tří fází. V první je rozvrh předzpracován, ve druhé je prováděna vlastní tvorba rozvrhu a v poslední fázi je prováděn postprocessing. Během předzpracování jsou vytvořeny struktury použité během zbytku procesu tvorby rozvrhu. Jsou vytvořeny časové osy reprezentující konfigurace v ATL a v TRTL. Z nich je vytvořena časová osa reprezentující konfigurace stanice. Jsou také vytvořeny časové osy reprezentující jednotlivé klouby. Na tyto osy budou umisťovány stavy kloubů a akce reprezentující změny stavů. Stavy a akce jsou společně označovány jako tokeny a jejich umístění vyvolává kontrolu podmínek, které se k jejich použití váží. Dále jsou v tomto kroku sloučeny konfigurace, které jsou vyhodnoceny jako příliš krátké, protože je-li konfigurace příliš krátká, je u ní pravděpodobné, že by se panely nestihly přetočit do optimální konfigurace a tedy by ke slučování stejně došlo. Slučování bude popsáno v rámci druhé fáze. Algoritmus rozhodování, které konfigurace jsou příliš krátké na to, aby byly optimalizovány 21

28 foreach konfiguraci c k if c k příliš krátká, sloučit s předcházející foreach konfiguraci c k Optimalizovat orientaci panelů Dopočítat módy kloubů if konflikt mezi optimálními řešeními pro c k a c k-1 Sloučit konfigurace c k a c k-1 Optimalizovat orientaci panelů pro novou konfiguraci Dopočítat módy kloubů Prořezat pozice c k+1 na základě rychlosti otáčení a orientací foreach konfiguraci c k Odstranit zbytečné odemykání a zamykání Doplnit do rozvrhu otáčení kloubů a změny módů Obrázek 7: Náčrt algoritmu použitého v aplikaci SACE. samostatně, popsán není, je pouze zmíněno, že jsou příliš krátké položky sloučeny s předcházející konfigurací před první optimalizací. Ve druhé fázi se odehrává vlastní tvorba výstupního rozvrhu zpracováním konfigurací na časové ose v chronologickém pořadí. Pro každou konfiguraci je nejdříve hledána optimální orientace panelů. Způsob optimalizace bude popsán později v této kapitole. Následně jsou k optimálním orientacím dopočítány optimální módy. Optimalizace orientace panelů probíhá pro levobok a pravobok nezávisle. Poté je testováno, zda lze do nalezeného optimálního stavu skutečně přejít z předchozího stavu (pokud například byl v předchozím stavu zvolen pro nějaký kloub mód Autotrack a v aktuálním stavu nikoliv, musí předchozí položka trvat dostatečně dlouho na to, aby byla splněna minimální doba trvání tohoto módu). Pokud přejít možné není, jsou tyto dvě konfigurace sloučeny, stav zvolený pro předchozí konfiguraci je z řešení odebrán a optimalizační proces se opakuje nad nově vzniklou konfigurací, dokud nastává konflikt. Slučování probíhá také tehdy, je-li doména možných řešení aktuální konfigurace prázdná (k tomu může dojít při prořezávání domény na základě stavu zvoleného pro předchozí konfiguraci). V případě sloučených konfigurací se při volbě optimální orientace a optimálního módu uvažuje vždy nejhorší barva z tabulek všech konfigurací v příslušném sloučení. V okamžiku, kdy lze z předchozího stavu do aktuálního přejít, je aktuální stav přidán do řešení. Na závěr jedné iterace této fáze je prořezána doména následující konfigurace na základě 22

29 stavu zvoleného pro aktuální konfiguraci a rychlosti otáčení. Jak vyčerpávající prořezávání je, zmíněno není. V závěrečné fázi je nejdříve zkontrolováno, zda je nalezený plán přípustný vzhledem ke stínění na nosníky, neboť toto nelze předpočítat. Dále zde probíhá vyhlazení rozvrhu. Posloupnosti Lock Park Lock ve stejné orientaci jsou na příslušné časové ose nahrazeny jednou položkou Lock po celou dobu trvání posloupnosti. Po sobě jdoucí položky ve stejném stavu jsou nahrazeny jednou položkou v příslušném stavu. V této fázi jsou také na časové osy doplněny tokeny reprezentující změny módu a změny orientace. Na závěr je dopočítáno přesné množství dostupné energie v závislosti na čase a je ověřeno, zda jsou energetické nároky uspokojeny. Optimalizace orientace probíhá ve dvou etapách. V první se pomocí optimalizační funkce optimalizuje orientace β i jednotlivých kloubů BGA v závislosti na orientaci α příslušného kloubu SARJ. Optimalizační funkce L i (α,β i )=w c L c i (α, β i )+w m L m i (α,β i )+w d L d i (α, β i )+w θ L θ i (α, β i ) zohledňuje cenu barvy orientace, módu, změny směru otáčení kloubu a vzdálenosti od předchozí orientace. Váhy jsou zvoleny tak, aby se každá další složka projevila teprve tehdy, když ta předchozí není schopna orientace porovnat (tj. nejdříve se rozhoduje podle ceny barvy, nelze-li na základě barvy rozhodnout, tak podle ceny módu atd.). V této etapě je místo ceny módu použit optimistický odhad, neboť pro přesné určení jeho ceny je nutné znát možnosti ostatních panelů, s kterými je SARJ sdíleno. Ve druhé etapě optimalizace orientace je hledána optimální orientace α kloubů SARJ. K tomu slouží optimalizační funkce L(α )= L i (α,β * i )+w p L p (α, β * ). * β i značí optimální β i nalezené pro příslušné α v předchozí etapě. Navíc se v této etapě zohledňují jemné rozdíly v napájení vyjádřené členem L p, které jsou způsobeny vzájemným stíněním panelů a proto je nelze zohlednit již v předchozí etapě optimalizace. Je-li v nějakém kroku více orientací rovnocenných, je vybrána první z nich. 23

30 2.1. Možnosti vylepšení Existující přístup je založený na postupech, které používají lidští plánovači ručně. To je z toho důvodu, že takovýto přístup bude snáze schválen a certifikován k reálnému nasazení. Navíc bude takovýto hladový přístup bez navracení dostatečně rychlý na to, aby mohl být použit v případě nouzových situacích tvorba týdenního rozvrhu trvá podle [2] minut. Na druhou stranu tento algoritmus téměř nevyužívá možností automatického plánování a není schopen nalézt řešení lepší, než by nalezli lidé, ačkoliv je v případě dlouhodobých plánů dostatek času, aby se prohledala větší část prostoru možných řešení. Hladový algoritmus bez navracení může vést do situace, kdy není řešení nalezeno ani v případě, kdy nějaké přípustné řešení existuje. Úplný algoritmus zde sice není nezbytný, neboť nenalezení řešení je pouze informací pro skupiny tvořící vstupní rozvrhy, že je nutné vytvořit jiný harmonogram. Přesto však úplný algoritmus může vést ke snížení počtu iterací mezi jednotlivými týmy a vést tak k úspoře času. Nedostatky také plynou z algoritmu slučování konfigurací. V případě sloučení se bere striktně nejhorší barva z tabulek sloučených konfigurací a nejsou tedy zohledňovány barvy v ostatních konfiguracích. Tento nedostatek lze jednoduše odstranit rozšířením optimalizační funkce tak, že by neohodnocovala pouze jedno obarvení, ale posloupnost obarvení neomezené délky. Taková funkce by nebyla zadefinována na celých číslech v intervalu 1; 24, ale na racionálních číslech z intervalu 1; 25), a počítala by se podle vzorce n 1 c L * i (α, β i )= j=0 k c kde n je počet slučovaných položek a L i 1 24 j f ( j) L c i (α, β i ), je funkce určující cenu barvy u k-té slučované položky. f je funkce definující důležitost položek, závisí tedy na našich požadavcích. Pokud chceme minimalizovat hodnotu nejhorší barvy, pak bude pořadí záviset na hodnotě barvy. Pokud bychom preferovali být dlouho v dobré barvě na úkor krátkého setrvání ve špatné barvě, pak bude pořadí záviset na době trvání položky. 24

31 Dalším problémem slučování konfigurací je, že si jím můžeme připravit o dobrý stav v jedné konfiguraci, protože druhá ho neumožňuje (např. pokud by první konfigurace umožňovala Autotrack ve svém druhém nejlepším stavu, zatímco druhá konfigurace Autotrack neumožňuje, tak se o tuto možnost připravíme kvůli sloučení konfigurací po zavrhnutí prvního nejlepšího stavu). Místo skutečné ceny módu se při výběru optimální orientace používá pouze její optimistický odhad. To je proto, že čtveřice panelů sdílí jeden kloub SARJ, takže pro zjištění možných módů kloubu SARJ je nutné znát možnosti u všech jeho panelů. Kvůli tomu ale může nastat situace, že je na základě optimistického odhadu zvolena orientace, u níž je skutečná cena módů horší, než by byla skutečná cena módů povolených u orientace, která má optimistický odhad horší. Významným omezením je, že v případě, že si je několik stavů rovno, je zvolen první z nich. Zavržení alternativních možností sice zjednoduší algoritmus, ale může znamenat výrazné prořezání domény u následující konfigurace a tedy připravení se o optimální stav u ní. To se projeví zejména u položek, které neumožňují otáčení, a u kloubů, které musí být v módu Lock. V této práci bude představen algoritmus, který se vyhne problémům plynoucím ze slučování položek. Algoritmus nebude používat hladový přístup, takže se vyhne tomu, že by se zafixováním částí rozvrhu připravil o řešení. Úplný algoritmus by však byl časově náročný, takže algoritmus bude používat časové omezení, které prohledávání zastaví, pokud vyhledávání trvá příliš dlouho, optimalita rozvrhu tedy také nebude zaručena. 25

32 3. Použité technologie Problém tvorby rozvrhu pro solární panely na ISS může být zakódován jako problém splňování podmínek [5] (označováno jako CSP podle anglického Constraint Satisfaction Problem). V této kapitole proto budou popsány základy CSP. Problém CSP je zadefinován pomocí: Konečné množiny proměnných V, které popisují ty vlastnosti řešení, o kterých je nutné rozhodnout. V našem případě jde například o orientace a módy jednotlivých kloubů během různých položek rozvrhu. Konečných domén jednotlivých proměnných D. Například domény proměnných reprezentujících orientace budou 0 ; 360) a domény proměnných reprezentujících módy budou { NO, END, BOTH }. Konečné množiny podmínek C. Podmínky jsou relace zadefinované nad libovolnou podmnožinou množiny proměnných V. V našem případě podmínky vyplynou například z tabulkových podmínek, které některým kloubům nedovolí být v libovolném módu při libovolné orientaci. Ohodnocení proměnných V je úplné, pokud je každé proměnné z V přiřazena hodnota z její domény. Ohodnocení je konzistentní, pokud neporušuje žádnou podmínku z C. Přípustné řešení je takové ohodnocení proměnných V, které je úplné a konzistentní. Často nás nezajímá libovolné řešení, ale je požadováno řešení v jistém smyslu optimální. V takovém případě jde o tzv. CSOP (podle anglického Constraint Satisfaction and Optimization Problem) a oproti CSP je navíc zadána optimalizační funkce f, která ohodnocuje rozvrh. Hledáno je takové přípustné řešení, které hodnotu optimalizační funkce minimalizuje/ maximalizuje. Vzhledem k tomu, že přípustné řešení musí být úplné a konzistentní, lze k jeho hledání přistupovat ze dvou stran. První možností je začínat s úplným řešením a snažit se ho upravit tak, aby bylo konzistentní. Příkladem metod využívajících tohoto přístupu je metoda simulovaného žíhání [6]. Tato metoda na začátku vygeneruje úplné řešení a poté generuje lokální změny, které aplikuje (a) pokud vedou do lepšího stavu (lepší stav je takový, v němž je menší počet porušených podmínek); (b) s pravděpodobností p(t) pokud vedou ke zhoršení stavu, přičemž 26

33 pravděpodobnost p(t) je závislá na čase. Více se této třídě metod věnovat nebudeme, protože vzhledem k povaze našeho problému nás zajímá spíše druhý přístup, kdy se začíná s konzistentním řešením a snaží se doohodnotit neohodnocené proměnné tak, abychom stále měli konzistentní řešení a abychom zmenšovali množinu dosud neohodnocených proměnných, dokud nezískáme řešení úplné. Na tuto třídu metod se podíváme blíže. Základním principem při řešení CSP je prohledávání do hloubky. Při něm algoritmus postupně ohodnocuje jednotlivé proměnné a po každém ohodnocení testuje, zda se tímto přiřazením neporušila některá ze zadaných podmínek. Pokud se žádná podmínka neporušila, tak pokračuje s ohodnocováním u další proměnné. Pokud se nějaká podmínka porušila, tak se pokusí do proměnné přiřadit jinou hodnotu. Pokud se do proměnné žádnou hodnotu přiřadit nepodařilo, tak se vrací k předchozí proměnné. Rychlost prohledávání lze ovlivnit na několika způsoby: pořadím, v jakém proměnné ohodnocujeme; pořadím, v jakém dosazujeme hodnoty do proměnných; a způsobem, jakým testujeme konzistenci Konzistenční techniky V základním prohledávání do hloubky jsou podmínky testovány v okamžiku, kdy jsou ohodnoceny všechny proměnné, které jsou touto podmínkou svázané. Podmínky lze ale často využít dřív. Pokud například máme proměnné A 0 ; 10) a B 0 ; 10) a podmínku A>B+5, pak můžeme z domény proměnné A vyřadit hodnoty {0, 1,, 5} a z domény proměnné B můžeme vyřadit hodnoty {4, 5,, 9}. Unární podmínky lze promítnout do domén příslušných proměnných přímo. Pokud pro každou proměnnou každá hodnota v její aktuální doméně splňuje všechny unární podmínky, které se k dané proměnné váží, hovoříme o vrcholové konzistenci. Vrcholovou konzistenci stačí zajistit pouze jednou na začátku běhu algoritmu. Složitější je situace u binárních podmínek. Uspořádaná dvojice proměnných V i, m V j je hranově konzistentní, pokud pro každou hodnotu D i z aktuální domény n proměnné V i existuje v aktuální doméně proměnné V j hodnota D j taková, že při m n ohodnocení V i =D i a V j =D j jsou splněny všechny binární podmínky svazující proměnné V i a V j. Jak je vidět z příkladu v úvodu kapitoly, v případě binárních podmínek nestačí zajistit konzistenci na začátku běhu algoritmu, protože vyřazením 27

34 nějaké hodnoty z domény jedné proměnné (např. kvůli ohodnocení třetí proměnné) může přijít o podporu nějaká hodnota z domény jiné proměnné. Existuje řada algoritmů zajišťujících hranovou konzistenci, které se liší ve způsobu hledání podpor pro jednotlivé hodnoty. Jmenujme například AC-4 [7], AC-3.1 [8] nebo AC-2001 [9], ale jejich popis však není pro tuto práci nezbytný. Ačkoliv existují i silnější typy konzistence, při řešení problému plánování solárních panelů byla použita knihovna, která udržuje nejvýše hranovou konzistenci. Jde o knihovnu CLPFD [10], která je součástí systému SICStus Prolog Větvící strategie Prohledávání do hloubky ve své základní podobě zkouší proměnné postupně přiřadit jednotlivé hodnoty z její domény. To znamená, že pokud doména D i proměnné V i obsahuje n hodnot, tak se výpočet rozdělí do n případů V i =D i1, V i =D i2,, V i =D in. Jde o tzv. enumeraci. Při využití konzistenčních technik ale můžeme při větvení využít i informaci, že se proměnná nějaké hodnotě nerovná, protože zmenšení aktuální domény D i u proměnné V i může mít za následek zmenšení aktuálních domén u ostatních proměnných. Toho využívá strategie zvaná step labelling, která výpočet dělí do dvou j případů V i =D i a V i D ij. Dalším možným přístupem je nezkoušet do proměnné V i dosadit konkrétní hodnotu D ij, ale pouze zmenšit její aktuální doménu typicky půlením, tj. rozdělení m m výpočtu na dva případy V i <D i a V i D im, kde D i je prostřední hodnota z domény D i proměnné V i Výběr proměnné Efektivita algoritmu závisí také na pořadí, v jakém se proměnné ohodnocují. Nejjednodušším principem je ohodnocovat proměnné v pořadí, v jakém jsou předloženy uživatelem. Aby byl tento přístup efektivní, musí mít uživatel vnitřní znalost o problému a musí toho využít při tvorbě pořadí proměnných. Při výběru proměnných se často používá tzv. first-fail princip. Při něm se jako první ohodnocuje proměnná s nejmenší aktuální doménou. Tato heuristika využívá

35 toho, že u proměnných s menší doménou je větší pravděpodobnost, že se všechny hodnoty z její domény ukáží jako nepřípustné a takovou situaci je lepší zjistit dřív. Naopak pokud řešení existuje, u proměnné s menší doménou je větší šance, že vybereme hodnotu, která se v nějakém řešení vyskytne. First-fail princip lze rozšířit tak, že v případě, že má více proměnných stejně velkou doménu, tak se jako první vezme ta, která se účastní nejvíce podmínek. Složitější metody zohledňují výsledky v předchozích fázích výpočtu. Jmenujme například dynamický backtracking [11], který se v případě neúspěchu nevrací k předchozí proměnné, ale k nejbližší proměnné, která způsobila konflikt. Při tom mění pořadí proměnných podle toho, zda se konfliktu účastní. Použitá knihovna CLPFD ale tyto komplexnější techniky nevyužívá Hledání optimálního řešení Při hledání optimálního řešení je dána nějaká funkce, která řešení ohodnocuje. Při hledání optimálního řešení je v principu nutné projít celý prostor řešení, abychom měli jistotu, že optimální řešení nevynecháme. Procházet všechna řešení výčtem by ale bylo časově náročné. Proto je i v případě hledání optimálního řešení vhodné využívat informace plynoucí z optimalizační funkce co nejdříve, stejně jako v případě podmínek. Základní technikou je metoda větví a mezí [5]. Při ní je nutné mít heuristickou funkci h zadefinovanou nad částečnými ohodnoceními, pro kterou (v případě minimalizace) platí, že pro každé částečné řešení X a každé přípustné řešení Y, které je z X odvozené doohodnocením neohodnocených proměnných, platí h(x) f(y), kde f je optimalizační funkce. Algoritmus pak probíhá tak, že nejdřív se vyhledá libovolné řešení a poté se vždy prozkoumávají pouze větve, u nichž heuristická funkce h dává hodnotu ostře lepší (tj. v případě minimalizace menší), než je hodnota nejlepšího dosud nalezeného přípustného řešení podle funkce f Pravidla Ačkoliv bude většina podmínek použitých při popisu modelu aritmetických nebo logických, bude pro efektivní popis některých podmínek vhodné mít zadefinovány následující podmínky. 29

36 table(vars, Rel): Touto podmínkou se definují n-ární relace. Vars je uspořádaná n-tice proměnných. Rel je seznam n-člených seznamů přirozených čísel nebo jejich intervalů, které definují relaci. Podmínka je splněna, pokud je n-tice Vars v relaci Rel. Například funkce signum by se na množině celých čísel zadefinovala pomocí podmínky table jako table([v,r],[[inf..(-1),-1],[0,0],[1..sup,1]]). case(vars, Dag): Také tato podmínka definuje n-ární relace. Avšak na rozdíl od podmínky table je nedefinuje výčtem, ale formou orientovaného acyklického multigrafu. Vars je uspořádaná n-tice proměnných. Dag je seznam uzlů ve tvaru node(id,v,branches), které definují graf podmínky. ID je unikátní identifikátor uzlu. V je proměnná z Vars. Branches je seznam hran ve tvaru (min..max)-idnext nebo (min..max)-constraints-idnext v případě vnitřních uzlů a (min..max) nebo (min..max)-constraints v případě listů. Z uzlu s identifikátorem ID se do uzlu s identifikátorem IDnext přechází, pokud je proměnná V v intervalu min..max a jsou splněny všechny podmínky v Constraints. Constraints je seznam podmínek ve tvaru scalar_product(coeffs,vs,lim), kde Coeffs je seznam koeficientů, Vs je seznam proměnných z Vars a Lim je přirozené číslo. Tato dílčí podmínka je splněna, pokud Coeffs Vars Lim. Celá podmínka case je splněna, pokud se podaří grafem vytvořeným podle Dag projít až do listu a splnit i dílčí podmínky u něj uvedené. Graf vytvořený jednotlivými uzly by měl být acyklický a měl by proměnnými procházet v takovém pořadí, v jakém jsou uvedeny ve Vars. Například podmínka (B C A=0 B=0)) ( ( B>C A=B), jejíž graf je zobrazen na obrázku č. 8, by se s pomocí podmínky case zadefinovalo jako case([a,b,c], [ node(0,a, [ (0..0)-[scalar_product((1,-1),(B,C),0)]-1, node(1,b,[(0..0)-3]), (inf..sup)-[scalar_product((1,-1),(c,b),-1), node(2,b,[(inf..sup)-3]), node(3,c,[(inf..sup)])]). scalar_product((1,-1),(a,b),0), scalar_product((-1,1),(a,b),0)]-2]), 30

37 A B C 0; B C 0 inf..sup; B>C; A=B inf..sup inf..sup Obrázek 8: Graf podmínky (B C ( A=0 B=0)) ( B>C A=B). Použití tohoto zápisu podmínek je preferovanější než použití logického zápisu, protože použitá knihovna CLPFD přes logicky zapsané podmínky při udržování konzistence nepropaguje, zatímco u podmínek case a table si lze zvolit, jak silně se mají změny domén jednotlivých proměnných propagovat. 31

38 4. Řešící přístup Řešení problému lze rozdělit do několika částí. Popis prohledávaného prostoru (dále zvaný jako model problému) je oddělen od algoritmu hledajícího optimální rozvrh. Při hledání optimálního rozvrhu jsou pouze systému pro řešení CSP pokládány dotazy, zda v rámci modelu existuje řešení, které splňuje dodatečné podmínky. Model problému je dále rozdělen na část, která je specifická pro konkrétní instanci problému (hledání rozvrhu pro konkrétní vstup), a na část, která je univerzální, tj. společná pro všechna zadání. Specifická část je generována nová pro každou instanci problému na základě vstupních dat. Oproti tomu univerzální část je vygenerována jednou a při řešení konkrétních instancí problému se používá opakovaně. Vstup problému (rozvrh a tabulky podmínek) je zadáván ve formě, se kterou se nepracuje nejlépe. Je proto vhodné ho transformovat do podoby, se kterou bude snazší pracovat. Rozvrhy ATL a TRTL jsou sloučeny do jednoho. Jsou nalezeny tabulky, které patří jednotlivým položkám sloučeného rozvrhu a čtveřice tabulek (P, L, E, S) náležící jednomu panelu jsou sloučeny do jedné. Informace o rozvrhu a tabulkách jsou poté zakódovány tak, aby se s nimi dobře pracovalo. Při kódování tabulek jsou rovnou zohledněny Lock-Latch podmínky. Příklad takového souboru je v příloze B. V univerzální části popisu problému jsou zachyceny podmínky, které musí platit nezávisle na konkrétním vstupu a proto je není nutné definovat pokaždé znovu. Jde zejména o časové závislosti. Každá položka musí začínat v okamžiku, kdy předcházející položka končí a žádná položka nesmí končit dříve než začne. Zakódovány jsou podmínky, které jsou způsobeny zamčenými klouby. Zamčené klouby se totiž nemohou otáčet a jejichž zamykání a odemykání trvá nenulovou dobu. Další podmínky plynou z toho, že otáčení kloubů trvá nenulovou dobu a že se některé klouby nemohou otáčet současně a jiné se naopak musí začít otáčet současně. Poslední skupina podmínek souvisí s módem Autotrack, který musí trvat alespoň 90 minut a při němž se mění orientace kloubu. Také je zde zadefinován výpočet hodnot optimalizační funkce. Soubor obsahující tuto část modelu je v příloze C. 32

39 Odděleně od popisu problému je veden optimalizační algoritmus. Není jedna optimalizační funkce, která by ohodnocovala celý rozvrh, ale sada navzájem neporovnatelných optimalizačních funkcí, které ohodnocují jednotlivé položky rozvrhu. Z toho důvodu jsou během procesu hledání optimalizačního algoritmu hledány optimální hodnoty jednotlivých optimalizačních funkcí a úplné rozvrhy, které dokazují, že existuje rozvrh, který těchto hodnot dosahuje. d Optimalizační funkce f i samotná se sestává ze čtyřech složek f ic, f im, f i a f it, z nichž každá je důležitější než všechny následující (nejdůležitější je cena obarvení d f ic, následuje cena módů f im, poté počet změn směru otáčení f i a nejméně důležitá je t délka otáčení f i ). Každá optimalizační funkce je rozdělena do těchto čtyř složek a optimální hodnoty jednotlivých složek jsou hledány samostatně. Díky tomu je možné jako první minimalizovat cenu obarvení u všech položek rozvrhu, poté u všech položek rozvrhu optimalizovat cenu módů... a až jako poslední bude minimalizována délka otáčení u všech položek rozvrhu. Jednotlivé složky optimalizačních funkcí tedy budou optimalizovány v pořadí f 1c, f 2c,, f nc, f 1m,, f nm, f 1d,, f nd, f 1t,, f nt. Detaily jednotlivých částí podílejících se na hledání rozvrhu solárních panelů budou přiblíženy v následujících kapitolách. 33

40 5. CSP Model stanice V této kapitole bude popsán model problému. V první podkapitole jsou popsány proměnné důležité pro popis modelu a jejich domény. Druhá podkapitola popisuje zakódování konkrétní instance problému do jazyka podmínek. Tyto podmínky jsou zapsány do souboru 'domains.pl'. Tento soubor je tvořen dynamicky pro každé zadání problému. Příklad tohoto souboru pro rozvrh o dvou položkách se nachází v příloze B. Poslední bude popis podmínek nezávislých na konkrétní instanci problému. Půjde například o podmínky, které svazují stavy kloubů v sousedních položkách. Tyto podmínky se nacházejí v souboru 'server.pl', který je přiložen jako příloha C. Tento soubor je fixní a nemění se pro jednotlivé instance problému Konstanty a proměnné Konstanty a proměnné použité v modelu lze rozdělit do čtyř skupin. V první skupině se nacházejí proměnné, které jednoznačně popisují výsledný rozvrh. Ve druhé skupině jsou konstanty a proměnné, které popisují konkrétní instanci problému. Zbylé proměnné sice nejsou nezbytné pro popis vstupu nebo výstupu, protože jsou proměnnými výstupního rozvrhu a konstantami vstupního rozvrhu jednoznačně určeny, ale jejich použití je vhodné pro přirozenější zápis některých podmínek. Jde o proměnné odpovídající jednotlivým složkám optimalizační funkce, které pomohou při hledání optimálního rozvrhu, a o pomocné proměnné, jejichž použití má za následek výrazné zjednodušení zápisu podmínek kladených na výstupní rozvrh. Názvy proměnných se sestávají ze jména, které charakterizuje, o jakou jde proměnnou, tj. například proměnná reprezentující mód se jmenuje M a proměnná reprezentující délku otáčení na konci položky rozvrhu se jmenuje Lout. Následuje index říkající, o kterou položku rozvrhu jde. Půjde-li o proměnnou, která se váže ke konkrétní straně stanice, tak druhý index říká, o jakou stranu stanice jde. Pokud se v názvu vyskytne třetí index, tak tento index informuje, zda se proměnná váže k panelu, nebo kloubu a případně k jakému kloubu. Pokud jde o panel bude použita proměnná p, pokud jde o libovolný kloub, bude použita proměnná k, pokud jde o kloub BGA, bude použita proměnná b, pokud půjde o kloub SARJ, bude použit 34

41 index A, a půjde-li o proměnnou, která je společná pro všechny klouby BGA, bude použit index B. Tj. např. O i,s,b je orientace kloubu b během položky i, zatímco T i je čas počátku i-té položky rozvrhu. V závěru kapitoly bude v obrázku č. 11 uveden přehled všech popsaných proměnných a konstant Proměnné popisující rozvrh Přípustný rozvrh je takový, kde pro každou položku vstupního rozvrhu má každý kloub přiřazený stav, ve kterém se nachází. To znamená, že pro každý kloub a každou položku rozvrhu musí existovat dvě proměnné. První proměnná M i,s,k { AUTOTRACK, PARK, LOCK} reprezentuje mód kloubu. Druhá proměnná O i,s, k 0 ;360 ) reprezentuje orientaci kloubu. V případě módů Lock a Park je kloub po celou dobu trvání módu v jedné orientaci, ale v případě módu Autotrack se kloub plynule otáčí a svou orientaci mění. Jako orientace kloubu je proto považována orientace na konci položky před tím, než začne otáčení tohoto kloubu (případně na konci položky, pokud se kloub na jejím konci neotáčí). Další proměnné musí nést informaci, jak se mají klouby otáčet. Tyto proměnné musí jednak reprezentovat směr otáčení a jednak jeho délku. Délka otáčení může být určena jednoznačně pokud se kloub na konci aktuální položky nemůže otáčet, pak délka otáčení na začátku následující položky je jednoznačně určena pomocí rozdílu orientace kloubu v aktuální a následující položce a směru otáčení. (Stejná je situace v případě otáčení na začátku položky, pokud se kloub nemůže otáčet na konci předcházející položky.) Pokud je ale možné otáčet na konci aktuální i na začátku následující položky, pak je nutné alespoň jednu délku otáčení zadefinovat. Možností, jak otáčení reprezentovat je více: Pro každý začátek a každý konec položky reprezentovat délku a směr otáčení pomocí jedné proměnné Rin i,s,k, resp. Rout i,s,k ( 360 ;360). 0 znamená, že se kloub na začátku, resp. konci položky neotáčí; záporné číslo znamená, že se úhel kloubu zmenšuje, zatímco kladné číslo znamená, že se úhel zvětšuje. Absolutní hodnota Rin i,s,k i Rout i,s,k je omezena na 359, protože otočení o alespoň 360 znamená otočení o minimálně jeden celý kruh, což by bylo zamítnuto při minimalizaci délky otáčení. Máme-li otočení o m ( 360 ;0), 35

42 stejnou orientaci dává také n=360+m. V tomto případě se však kloub otáčí opačným směrem, což může mít vliv na počet změn směru otáčení Použít pro každé otáčení dvě proměnné, kde jedna bude reprezentovat směr otáčení a druhá jeho délku. Proměnné Din i,s,k a Dout i,s,k { -,0,+} reprezentují směr otáčení na začátku, resp. konci položky. 0 znamená, že se kloub neotáčí, + znamená pozitivní směr a - znamená negativní směr otáčení. Proměnné Lin i,s,k a Lout i,s,k 0;360) reprezentují délku otáčení. Tato reprezentace je méně úsporná než předchozí (pokud je směr otáčení 0, tj. kloub se neotáčí, tak u délky otáčení nedávají hodnoty (0; 360) smysl), ale v některých situacích je úspěšnější. Poslední možností je mít pro každé otáčení pouze jednu proměnnou Din i,s,k, resp. Dout i,s,k { -,0,+} reprezentující směr otáčení, která je stejná jako v předchozím případě. Kromě toho se použije ještě jedna proměnná Oout i, s, k =Oin i+1, s, k 0 ;360) pro přechod mezi položkami, která je společná pro otáčení na konci položky číslo i a otáčení na začátku položky číslo i+1. Tato proměnná říká, v jaké orientaci je kloub v okamžiku, kdy skončí otáčení na konci jedné položky (v této položce je pojmenována Oout i,s,k ) a zároveň předtím, než začne otáčení na začátku následující položky (v této položce je označena jako Oin i+1,s,k ). Díky tomu, že dvě otáčení spolu sdílí informaci o tom, kam/ odkud se otáčí, je tato reprezentace ze všech tří zmíněných reprezentací nejúspornější. Jednotlivé reprezentace jsou na sebe navzájem převoditelné, ale některé proměnné použité u jedné reprezentace mohou být využity u jiné reprezentace jako pomocné proměnné, pokud je s jejich pomocí zápis podmínek jednodušší. Jde zejména o délku otáčení, jejíž výpočet je v případě třetí reprezentace složitý. Poslední množinou proměnných, které jednoznačně definují rozvrh jsou časy T i, které definují hranice mezi položkami, tj. pro pokud jako n označíme počet položek v rozvrhu, tak pro i 0; n) říkají, kdy i-tá položka začíná, a pro i (0 ;n říkají, kdy položka číslo i-1 končí. 36

43 Konstanty a proměnné popisující zadání Pro každou položku vstupního rozvrhu je zde konstanta F i { NO, END, BOTH}, která říká, do které třídy aktuální položka patří podle toho, zda se může na okrajích otáčet. Tyto třídy jsou tři: NO znamená, že není možné otáčet klouby na začátku ani na konci položky; END znamená, že není možné otáčet klouby na začátku, ale je možné jimi otáčet na konci položky; a BOTH znamená, že je možné panely otáčet na začátku i na konci položky. Druhou konstantou zadefinovanou pro každou položku vstupního rozvrhu STR i 9;30 je rychlost otáčení kloubů SARJ zadaná ve stupních za sekundu. Připomínám, že pro BGA je rychlost otáčení konstantních 18 /min. Nakonec je zde pro každou položku vstupního rozvrhu za každý panel jedna proměnná C i, s, p 1 ;24, která reprezentuje obarvení aktuální konfigurace panelu. Kódování obarvení čtveřice tabulek P, L, E a S odpovídá tabulce č. 3 na stránce č. 15. Nepřípustné kombinace (červená v tabulce P, L nebo S) nejsou zakódovány, protože stavy, které by jich dosahovaly, jsou zakázány Proměnné optimalizační funkce Optimalizační funkce má čtyři části a každá z nich hraje roli teprve tehdy, když předcházející části nedokáží možnosti rozlišit. Nejdůležitější je cena obarvení, následuje cena módu, poté cena změn směru a nejméně důležitá je cena délky otáčení. Pro každou z těchto složek optimalizační funkce existuje pro každou stranu každé položky rozvrhu jedna proměnná, která reprezentuje její hodnotu. Proměnná Clim i, s 4;96 je reprezentuje barvu konfigurace panelů na jedné straně stanice, tj. Clim i, s = C i,s, p. Proměnná Mlim i, s 0;10 reprezentuje cenu módů. Cena módů je vypočtena jako součet módů jednotlivých kloubů, přičemž 0 reprezentuje mód Autotrack, 1 reprezentuje mód Park a 2 reprezentuje mód Lock. Složitější je situace u počítání změn směru, jejichž počet je reprezentován proměnnou Dlim i, s 0;15. Každý z pěti kloubů na jedné straně stanice může během jedné položky provést nejvýše tři změny otáčení první změna může být na 37

44 počátku položky, druhá změna může být na konci otáčení na začátku položky a třetí změna může být na začátku otáčení na konci položky. Jednotlivé případy, kdy ke změně směru dochází jsou vyznačeny červeně na obrázku č. 9. Poslední proměnná Tlim i, s 0;3590 reprezentuje délku otáčení, tj. Tlim i, s = ( Lin i, s, k + Lout i, s, k ). k Pomocné proměnné Některé proměnné jsou použity pro zajištění splnění požadavku na dobu trvání změny módu. Nenulový čas (konkrétně 20 minut) trvá pouze přechod do a z módu Lock. Pro odemykání i zamykání kloubů jsou použity dvě proměnné. Situace je u odemykání a zamykání případů symetrická, proto popíši proměnné pouze pro případ odemykání kloubu. Pomocí proměnné DunlockNext i,s,k =DunlockPrev i+1,s,k říká aktuální položka následující položce, že je potřeba na jejím začátku kloub příslušný čas odemykat. Proměnnou Dunlock i,s,k používá následující položka pro reprezentaci doby, jakou by měla skutečně odemykat. Pokud je totiž aktuální kloub uzamčen, může se následující položka jeho odemykání vyhnout, pokud bude také uzamčená ve stejné pozici. Zatímco pokud by následující položka měla kloub odemykat delší dobu, než je její trvání, propaguje zbývající čas do další položky. Alternativně je možné použít pouze jednu proměnnou a při jejím ohodnocování rovnou zohledňovat mód následujícího panelu, ale protože zvolená reprezentace neměla vliv na výkon, použil jsem první variantu. Všechny tyto proměnné jsou z intervalu 0 ; 20, protože odemykání trvá 20 minut a čas je počítán v celých minutách. Přejde-li kloub do módu Autotrack, musí v něm setrvat minimálně 90 minut. Každá položka tedy obsahuje pro každý kloub dvě proměnné vztahující se k tomuto módu. Proměnná Da i, s, k 0 ; ) říká, jak dlouho je kloub v módu Autotrack během aktuální položky rozvrhu. Pokud kloub nebyl během aktuální položky v módu Autotrack, tak Da i,s,k =0. V proměnné Anext i 1, s, k = Aprev i, s,k 0; ) informuje položka číslo i-1 položku číslo i, kolik z časového limitu na minimální dobu trvání módu Autotrack již uplynulo u předchozí položky. 38

45 Předchozí položka Aktuální položka Následující položka Autotrack Turning (+) Turning (-) Turning (-) Turning (-) Turning (+) Turning (-) Autotrack Turning (-) Autotrack Autotrack Turning (-) Obrázek 9: Jednotlivé možnosti, kdy může nastat pro aktuální položku změna směru otáčení. Místo, kde ke změně směru dochází je vyznačeno červeně. '+' a '-' značí směr otáčení. Tlustší svislá čára značí přechod mezi položkami, slabší svislá čára značí začátek nebo konec otáčení. S módem Autotrack souvisí také proměnná Ot i,s, k 0 ;360), která reprezentuje informaci o orientaci kloubu po ukončení otáčení na začátku položky. V případě módů Lock a Park je tato orientace shodná s orientací O i,s,k, ale v případě módu Autotrack se liší v závislosti na době jeho trvání a rychlosti otáčení. Vzhledem k tomu, že u jednotlivých položek není nutné znát časy počátku a konce, důležitá je pouze doba trvání položky, tak jednotlivé položky rozvrhu pracují pouze s proměnnou Td i 0; ), která informuje o délce položky. Proměnné Dbegin i,s,k a Dend i,s,k říkají, jak dlouho trvá otáčení příslušného kloubu na začátku, resp. konci položky. Jejich možná hodnota závisí na rychlosti otáčení kloubu, tj. v případě BGA jsou z intervalu 0 ;20, zatímco v případě SARJ jsou z intervalu 0; 360 /STR i. Zbylé proměnné se týkají otáčení panelů a to konkrétně jejich počátku, neboť při rozhodování o tom, kdy se může kloub začít otáčet, je nutné rozlišit kloub SARJ a klouby BGA. To je proto, že se klouby BGA mohou začít otáčet teprve poté, co skončí otáčení kloubu SARJ, a protože se musí začít otáčet současně. Proměnná DminStart i,s,k říká, kdy po začátku rozvrhu se může kloub začít otáčet. Možné hodnoty závisí na tom, zda jde o kloub SARJ, nebo o kloub BGA. Pro klouby SARJ 39

46 je DminStart i, s, A 0; 20, protože pokud není kloub zcela odemčený, musí se nejdříve odemknout. U kloubů BGA je DminStart i, s, B 0 ; / STR i, protože se klouby BGA mohou otáčet teprve po otočení kloubu SARJ, který ale může být nutné nejdříve odemknout. Podobně proměnná DminEnd i,s,k říká, kdy před koncem položky se kloub musí začít otáčet. DminEnd i, s, B 0 ;40 pro klouby BGA (maximální doba otáčení kloubu plus maximální doba zamykání kloubu) a DminEnd i, s, A 0 ; /STR i pro SARJ (maximální hodnota DminEnd i,s,b plus maximální doba otáčení kloubu). Na obrázku č. 10 jsou zobrazeny časové závislosti jednotlivých proměnných pro jeden kloub během jedné položky rozvrhu Instance problému Na vstupu problému jsou dva rozvrhy, ATL a TRTL. Ty je potřeba sloučit, abychom získali rozvrh stanice. Ačkoliv některé položky rozvrhů nemusí mít pevné časy počátku nebo konce, je zaručeno, že rozvrh vzniklý jejich sloučením bude vždy jednoznačná časová osa. Situace by byla řešitelná i kdyby tomu tak nebylo v takovém případě bychom neměli časovou osu, ale hledali bychom průchod časovým (orientovaným) grafem, problém by tak byl výpočetně náročnější, protože kromě ohodnocení jednotlivých stavů a otáčení by bylo nutné rozhodovat, kterou větví grafu se bude procházet. Výsledný rozvrh obsahuje několik informací. Pro nás je podstatný čas, který lze zakódovat jako jednoduchý interval (proměnné T i ). Dále se zaznamenává rychlost otáčení kloubu SARJ (konstanty STR i ). Událost není důležitá přímo, záleží pouze na tom, jaké kategorie je (konstanty F i ). Události lze je rozdělit do tří kategorií podle toho, zda během položky není možno klouby otáčet kategorie NO: Docking ([ATV, Orbiter, Soyuz, Progress], [SM, DC1, FGB]), Undocking ([ATV, Orbiter, Soyuz, Progress]), Reboost, Maneuver ([debris-avoidance, attitude]); je povoleno otáčet panely na konci položky kategorie END: 40

47 Td i Dunlock i,s,k DminStart i,s,k Oin i,s,k Rin i,s,k Dbegin i,s,k Ot i,s,k M i,s,k Da i,s,k O i,s,k Rout i,s,k Dend i,s,k DminEnd i,s,k Oout i,s,k Dlock i,s,k Obrázek 10: Diagram zobrazující časovou závislost jednotlivých proměnných v průběhu jedné položky rozvrhu. V případě proměnných Da i,s,k, O i,s,k a Ot i,s,k je nutné rozlišit případ, kdy je kloub v módu Autotrack (horní varianta) od případů, kdy je v módu Park, nebo Lock (spodní varianta). Approach ([ATV, Orbiter, Soyuz, Progress]), Prop purge (SM, DC1), Water dump (Lab, Orbiter), je povoleno otáčet panely na začátku i konci položky kategorie BOTH: Attitude hold. Ostatní informace zakódované v rozvrhu již není nutné kódovat přímo. Jsou pouze indexem říkajícím, jaké tabulky podmínek při dané položce rozvrhu platí nebo jaké Lock-Latch podmínky se na ně vztahují. Tyto tabulky jsou poslední kódovanou informací. V jejich zakódování jsou zohledněny i Lock-Latch podmínky. Příklad vstupu transformovaného do formátu, v jakém se s ním pracuje dál je zobrazen v příloze B. 41

48 M i,s,k : Mód kloubu k na straně s během i-té položky rozvrhu. O i,s,k : Orientace kloubu k na straně s během i-té položky rozvrhu (pokud je kloub v módu Autotrack, tak na jeho konci). Ot i,s,k : Je-li kloub v módu Autotrack, jde o orientaci na jeho počátku. V ostatních případech je totožná s O i,s,k. Oin i,s,k : Orientace kloubu k na straně s na začátku i-té položky rozvrhu. Oout i,s,k : Orientace kloubu k na straně s na konci i-té položky rozvrhu. Rin i,s,k, resp. Rout i,s,k : Vektor otáčení kloubu k na straně s na začátku, resp. konci i-té položky rozvrhu. Din i,s,k, resp. Dout i,s,k : Směr otáčení kloubu k na straně s na začátku, resp. konci i-té položky rozvrhu. Lin i,s,k, resp. Lout i,s,k : Délka otáčení kloubu k na straně s na začátku, resp. konci i-té položky rozvrhu. T i : Čas počátku položky číslo i a konce položky číslo i-1. Td i : Doba trvání i-té položky rozvrhu. F i : Kdy se mohou klouby během i-té položky rozvrhu otáčet. STR i : Rychlost otáčení kloubů SARJ během i-té položky rozvrhu otáčet. C i,s,p : Cena obarvení panelu p na straně s během i-té položky rozvrhu. Clim i,s : Cena obarvení kloubů strany s během i-té položky rozvrhu. Mlim i,s :Cena módů kloubů strany s během i-té položky rozvrhu. Dlim i,s : Počet změn směru kloubů strany s během i-té položky rozvrhu. Tlim i,s : Délka otáčení kloubů strany s během i-té položky rozvrhu. DunlockNext i,s,k, resp. DunlockPrev i+1,s,k : Jak dlouho potřebuje položka číslo i, aby se kloub k na straně s odemykal na začátku položky číslo i+1. Dunlock i,s,k : Jak dlouho se bude odemykat kloub k na straně s na začátku i-té položky rozvrhu. DlockPrev i,s,k, resp. DlockNext i-1,s,k : Jak dlouho potřebuje položka číslo i, aby se kloub k na straně s zamykal na konci položky číslo i-1. Dlock i,s,k : Jak dlouho se bude zamykat kloub k na straně s na konci i-té položky rozvrhu. Da i,s,k : Jak dlouho je kloub k na straně s v módu Autotrack během i-té položky rozvrhu. Anext i,s,k, resp. Aprev i+1,s,k : Jak dlouho již byl kloub k na straně s v módu Autotrack na konci i-té položky rozvrhu. Dbegin i,s,k : Doba otáčení kloubu k na straně s na začátku i-té položky rozvrhu. Dend i,s,k : Doba otáčení kloubu k na straně s na konci i-té položky rozvrhu. DminStart i,s,k : Čas od začátku i-té položky, kdy se kloub k na straně s na začátku této položky rozvrhu může začít otáčet. DminEnd i,s,k : Čas do konce i-té položky, kdy se kloub k na straně s na konci této položky rozvrhu může začít otáčet. Obrázek 11: Přehled proměnných použitých při popisu modelu. 42

49 Zakódování tabulek Tabulky nejsou zakódovány tak, jak jsou na vstupu. Jsou nejdříve sloučeny a zapisuje se přímo číselná hodnota dané konfigurace, tedy kombinace orientací a módů vždy jednoho BGA a příslušného SARJ podle tabulky č. 3 ze strany č. 15. Připomínám, že pokud není žádný kloub v módu Autotrack, bere se jako barva konfigurace barva v daném bodě. Pokud je jeden kloub v módu Autotrack, bere se nejhorší barva z daného řádku (v případě, že je v módu Autotrack kloub BGA), nebo sloupce (pokud je v módu Autotrack kloub SARJ). A pokud jsou v módu Autotrack klouby oba, pak se bere nejhorší barva z celé tabulky. Tabulky jsou zakódovány pomocí podmínky table jako pětice [O i,s,a, O i,s,b, M i,s,a, M i,s,b, C i,s,p ]. Není tedy kódována tabulka samotná, ale je rovnou kódováno hodnota obarvení konfigurace, protože jsou zohledněny i módy jednotlivých kloubů. Kódovány jsou pouze přípustné pětice, tj. pokud by například při konfiguraci O i,s,a, O i,s,b, M i,s,a, M i,s,b byla v tabulce P červená hodnota, pak nebude zakódována žádná pětice [O i,s,a, O i,s,b, M i,s,a, M i,s,b, _]. Při kódování tabulek jsou rovnou aplikovány Lock-Latch podmínky. Připomínám, že Lock-Latch podmínky říkají, že kloub nemůže být v módu Autotrack, pokud by se při něm dostal do žluté oblasti v tabulce L nebo do červené oblasti v tabulce E (pokud nejde o pohotovostní režim), a musí být v módu Park, pokud by se při módu Autotrack dostal do červené oblasti v tabulce L. Jednotlivé pětice jsou generovány nejdříve pro módy Park nebo Lock na obou kloubech. Poté jsou generovány pětice u nichž je jeden z kloubů v módu Autotrack a na závěr je vygenerována pětice pro případ, kdy jsou oba klouby v módu Autotrack. Je tedy jednoduché zakódovat Lock-Latch podmínky, které zakazují na jednom z kloubů mód Autotrack, protože to znamená menší počet pětic a tedy kompaktnější zápis. V případě, že Lock-Latch podmínka vynucuje na jednom, ale libovolném z kloubů Lock, znamená to naopak nárůst počtu pětic, protože se pětice tvaru [O i,s,a, O i,s,b, Park..Lock, Park..Lock, C i,s,p ] musí nahradit dvěma pěticemi [O i,s,a, O i,s,b, Park..Lock, Lock, C i,s,p ] a [O i,s,a, O i,s,b, Lock, Park, C], což může vést až ke zdvojnásobení počtu pětic. 43

50 5.3. Podmínky Jednotlivé strany stanice jsou navzájem slabě provázané. Svazuje je pouze to, že jednotlivé položky vstupního rozvrhu musí začínat i končit na obou stranách stanice současně. To znamená, že pokud se v rozvrhu nevyskytuje žádná položka s volitelným časem, jsou jednotlivé strany zcela nezávislé. Aby šlo o smysluplný rozvrh, nesmí žádná položka končit dříve, než započne, tj T i T i+1. Rozvrh pro jednotlivé strany stanice je rozdělen do jednotlivých položek. V každé z nich je zajištěno splnění podmínek souvisejících se zamykáním a odemykáním kloubů, podmínek souvisejících s módem Autotrack a podmínek souvisejících s otáčením kloubů Zamykání a odemykání kloubů Žádný kloub se nemůže současně zamykat i odemykat. Pokud ale není-li pro zamčení, resp. odemčení kloubu dostatek času, může se zbývající doba propagovat do dalších položek. V případě, že se zbývající doba potřebná k odemčení propaguje do další položky, tak se už kloub během této položky nemůže zamykat. A naopak, pokud se z této položky propaguje doba potřebná k zamčení kloubu, tak se kloub nemůže během této položky odemykat. Musí tedy platit podmínka Dunlock i,s,k +Dlock i,s,k Td i Dlock i,s,k =0 Dunlock i,s,k =0. Pokud je z předchozí položky rozvrhu propagován požadavek na to, že se nějaký kloub musí odemykat (proměnná DunlockPrev i,s,k ), pak se tento kloub musí během této položky požadovanou dobu odemykat (proměnná Dunlock i,s,k ). Této podmínce se lze vyhnout, pokud je kloub během předchozí i aktuální položky rozvrhu v módu Lock. Podmínku, že předcházející kloub byl v módu Lock můžeme nahradit podmínkou, že se propaguje požadavek s maximální požadovanou dobou na odemykání tj. DunlockPrev i,s,k =20, protože tato podmínka implikuje to, že byl tento kloub během předchozí položky v módu Lock. Hodnota proměnné Dunlock i,s,k je tedy určená pravidlem Dunlock i,s,k =DunlockPrev i,s,k (DunlockPrev i,s,k =20 M i,s,k =Lock Dunlock i,s,k =0). Obdobně je určena hodnota proměnné Dlock i,s,k. 44

51 Závěrem je nutné určit, jaké časy zamykání se mají propagovat do předcházející položky a jaké časy odemykání se mají propagovat do následující položky. To je možné provést pomocí dvou implikací M i,s,k LOCK DunlockNext i,s,k =max(dunlock i,s,k -Td i,0), M i,s,k =LOCK (Dunlock i,s,k =0 DunlockNext i,s,k =20), (obdobně pro zamykání). Alternativně je možné zadat tuto dvojici podmínek pomocí jednoho case pravidla, které má oproti implikacím tu výhodu, že propaguje změny v doménách jednotlivých proměnných a sílu této propagace lze ovlivnit. Graf této podmínky je zobrazen na obrázku č Otáčení kloubů V závislosti na typu události (proměnná S) se klouby mohou na začátku nebo konci příslušné položky otáčet. Pokud F i =NO, tak musí pro obě strany a všechny klouby platit Oin i,s,k =Ot i,s,k a O i,s,k =Oout i,s,k. Pokud F i =END, tak jsou proměnné O i,s,k a Oout i,s,k navzájem nezávislé. Pokud F i =BOTH tak jsou navzájem nezávislé i Oin i,s,k a Ot i,s,k. To, zda se kloub může otáčet, závisí také na módu, ve kterém se nachází. Pokud kloub není v módu Autotrack, tak je jeho orientace na začátku i konci módu stejná, tedy platí: M i,s,k Autotrack Ot i,s,k =O i,s,k. Pokud je tento kloub navíc v módu Lock, tak se nemůže otáčet ani na začátku a konci položky, tj. M i,s,k =Lock (Oin i,s,k =Ot i,s,k Oout i,s,k =O i,s,k ). Kvůli podmínkám zajišťujícím, že na otáčení bude dostatek času, je nutné vypočítat, kdy se jednotlivé klouby mohou začít otáčet. Při tom je nutné rozlišit, zda jde o kloub SARJ, nebo o kloub BGA. Kromě toho, že otáčení SARJ musí skončit před tím, než začne otáčení BGA, se musí také BGA začít otáčet současně. Pro všechny klouby navíc platí, že se mohou začít otáčet až poté, co jsou zcela odemčeny. Čas, kdy se jednotlivé klouby mohou na začátku položky začít otáčet, je tedy spočítán jako 45

52 Td M Dunlock DunlockNext 0..sup sup 0; Dunlock Td 1..sup; Dunlock Td DunlockNext = Td-Dunlock Obrázek 12: Graf podmínky zajišťující propagaci doby potřebné k odemčení kloubu. DminStart i, s, A =Dunlock i, s, A, DminStart i, s, B =max((dbegin i, s, A =0?0: Dunlock i, s, A +Dbegin i, s, A ), max {Dunlock i, s,b} b, Dbegin i, s,b >0 ). V zápisu pravidla je použit ternární operátor podmíněného přiřazení, který sice lze rozepsat pomocí implikací, ale popis pravidla je s jeho pomocí kompaktnější a přehlednější. Výraz Test?A:B je interpretován jako pokud platí Test, tak použij A, jinak použij B. Čas, kdy nejpozději se musí klouby začít otáčet na konci položky, je spočítán jako DminEnd i, s, B = max b, Dend i,s, b >0 {Dend i, s, b +Dlock i, s,b }, DminEnd i, s, A =( Dend i, s, A = 0? DminEnd i, s, B :(max(dlock i,s, A,DminEnd i, s, B )+Dend i, s, A )). Přičemž pokud by se žádné BGA na konci neotáčelo (tj. b: Dend i,s,b =0), pak DminEnd i,s,b =0. Pokud Dend i,s,a =0, tak ve skutečnosti není nezbytné DminEnd i,s,a definovat. Aktuální definice však znamená jednodušší pravidla a tato definice se nám bude hodit později v této kapitole. Na základě znalosti proměnných DminStart i,s,k a DminEnd i,s,k lze vynutit, že na kloubu nebudou probíhat dvě akce zároveň, resp. že současně s otáčením nebude probíhat jiná akce, protože současné zamykání a odemykání kloubu je vyloučeno pravidlem z předchozí kapitoly. Připomínám, že doba zamykání, resp. odemykání může být delší než doba trvání aktuální položky (v tom případě se propaguje do 46

53 položky předcházející, resp. následující), ale v takovém případě už kloub nesmí během aktuální položky provádět jinou akci. Pravidlo tedy bude vypadat následovně: Dunlock i,s,k +Dlock i,s,k Td i (Dbegin i,s,k =0 Dend i,s,k =0), Dunlock i,s,k +Dlock i,s,k Td i (Dbegin i,s,k =0? Dunlock i,s,k : DminStart i,s,k +Dbegin i,s,k ) + (Dend i,s,k =0? Dlock i,s,k : DminEnd i,s,k ) Td i. Alternativně lze podmínku popsat pomocí case pravidla. Hlavní část grafu této podmínky je zobrazena spolu s postupem výpočtu doby trvání módu Autotrack na obrázku č. 13. Diagram zobrazující časové závislosti je zobrazen na obrázku č. 14. Na hodnotě proměnných Td i, Dunlock i,s,k, Dlock i,s,k, DminStart i,s,k, Dbegin i,s,k a DminEnd i,s,k nezáleží, proto nejsou na obrázku zachyceny a skrývají se pod uzlem rest. V podmínce se vyskytují pouze proto, že to vyžaduje její syntax, aby je bylo možné použít v nerovnostech a dosazeních. Poslední podmínka svazující otáčení říká, že otáčení všech kloubu na začátku položky musí skončit dříve než začne otáčení libovolného kloubu na konci položky. Lze ji zapsat následovně: max {DminStart i, s, k + Dbegin i, s,k }+DminEnd i, s, A Td i. k Zde není nutné hledat maximum pouze nad klouby, které se na začátku položky otáčejí, protože to je zohledněno ve způsobu výpočtu DminStart i,s,k, které je nenulové pouze tehdy, když se alespoň jeden kloub na začátku položky otáčí a tedy pro tento kloub bude hodnota DminStart i,s,k +Dbegin i,s,k větší než pro kloub, který se neotáčí. V případě konce položky není nutné hledat maximum, protože pokud se kloub SARJ neotáčí, pak je z definice DminEnd i,s,a =DminEnd i,s,b, a pokud se kloub SARJ otáčí, pak DminEnd i,s,a >DminEnd i,s,b Autotrack Na začátku položky musí být zajištěno, že pokud byl kloub na konci předchozí položky v módu Autotrack, bude splněna podmínka na jeho minimální dobu trvání nebo se musí v tomto módu pokračovat. To je splněno podmínkou Aprev i,s,k =0 Aprev i,s,k 90 (M i,s,k =Autotrack Dbegin i,s,k =0). 47

54 M Dbegin Dend Da rest Td MinStart+Dbegin+MinEnd Td MinStart+Dbegin+Dlock 0 Td Dunlock+MinEnd Dunlock+Dlock Td Dunlock+Dlock Td Da = Td-Dunlock-Dlock Da = Td-Dunlock-MinEnd 0 0..sup Da = Td-MinStart-Dbegin-Dlock Da = Td-MinStart-Dbegin-MinEnd Obrázek 13: Graf kontroly, že položka trvá dostatečně dlouho, aby se stihla odemykání, zamykání a otáčení na začátku i konci položky, a výpočtu doby trvání módu Autotrack. Zobrazeny jsou pouze uzly, jejichž hodnoty hrají roli při průchodu grafem. Proměnné, na jejichž hodnotách nezávisí a jsou nutné pouze kvůli kontrole nerovností nebo výpočtu proměnné Da, jsou skryty pod uzlem rest. Vrchní červený uzel reprezentuje situace, kdy kloub není v módu Autotrack, ale může se otáčet a je tak nutné zajistit, že je na vše dost času. Prostřední červený uzel reprezentuje situaci, kdy se kloub odemyká, nebo zamyká celou dobu trvání položky, takže není možné kloubem otáčet. Spodní červený uzel reprezentuje situaci, kdy je kloub v módu Autotrack a je tak nutné spočítat, jak dlouho v něm zůstane, aby bylo možné spočítat jeho orientaci na konci položky. 48

55 Dunlock i,s,k DminStart i,s,k Dbegin i,s,k Dend i,s,k DminEnd i,s,k Dlock i,s,k Obrázek 14: Diagram zobrazující časové závislosti odemykání a zamykání kloubů. První dva případy reprezentují situaci, kdy se kloub celou položku odemyká nebo zamyká. Následují dva příklady, kdy se kloub na začátku ani konci položky neotáčí. Poslední tři příklady reprezentují situaci, kdy se na začátku nebo na konci položky otáčí Při pokračování v módu Autotrack by mělo platit, že Dunlock i,s,k =0, ale tato proměnná by byla nenulová pouze v případě, že by byl kloub během předchozí položky v módu Lock, nebo by se celou položku odemykal a byl tedy v módu Park. To by ale znamenalo, že bude splněna první podmínka, tj. Aprev i,s,k =0. Pro určení orientace kloubu na konci položky je nutné spočítat dobu jeho setrvání v Autotrack módu. Pokud kloub nebyl v módu Autotrack, pak Da i,s,k =0. Pokud byl kloub v módu Autotrack, tak se výpočet podobá kontrole toho, zda se stihne otáčení kloubů z předchozí kapitoly. Dokonce se v případě módu Autotrack 49

56 tato kontrola nemusí provádět, protože je provedena implicitně při výpočtu Da, neboť tato proměnná musí být nezáporná. Výpočet pravidla vypadá následovně: Da i,s,k = Td i - (Dbegin i,s,k =0? Dunlock i,s,k : DminStart i,s,k +Dbegin i,s,k ) - (Dend i,s,k =0? Dlock i,s,k : DminEnd i,s,k ). V zápisu je pro přehlednost opět použito podmíněné přiřazení. Grafické znázornění délky Da i,s,k je na obrázku č. 15 a důležitá část rozhodovacího grafu je zobrazena na obrázku č. 13. Pravidlo počítající, v jaké orientaci bude kloub na konci módu, je jednoduché: O i,s,k = (Ot i,s,k + STR i *Da i,s,k ) mod 360. Zároveň je ale toto pravidlo zdrojem problémů, protože se přes tuto podmínku špatně propagují omezení domén jednotlivých proměnných. Na závěr je nutné zajistit, že byl kloub v módu Autotrack dostatečně dlouho na to, aby byla splněna podmínka na minimální dobu jeho trvání. Ta závisí na tom, zda se kloub na začátku odemykal nebo otáčel, nebo jestli lze připočíst dobu propagovanou z předchozí položky. Podmínka také nemusí být splněna, pokud se kloub na konci neotáčí ani nezamyká, protože v tom případě se uplynulá doba propaguje dál a splnění podmínky bude zajištěno později. Toto lze vynutit následující skupinou pravidel: M i,s,k AUTOTRACK Anext i,s,k = 0, (M i,s,k =AUTOTRACK Dunlock i,s,k =0 Dbegin i,s, =0 Dend i,s,k =0 Dlock i,s,k =0) Anext i,s,k =Aprev i,s,k +Da i,s,k, (M i,s,k =AUTOTRACK Dunlock i,s,k =0 Dbegin i,s,k =0 (Dend i,s,k >0 Dlock i,s,k >0)) (Aprev i,s,k +Da i,s,k 90 Anext i,s,k =0), (M i,s,k =AUTOTRACK (Dunlock i,s,k >0 Dbegin i,s,k >0) Dend i,s,k =0 Dlock i,s,k =0) Anext i,s,k =Da i,s,k, (M i,s,k =AUTOTRACK (Dunlock i,s,k >0 Dbegin i,s,k >0) (Dend i,s,k >0 Dlock i,s,k >0)) (Da i,s,k 90 Anext i,s,k =0). 50

57 Dunlock i,s,k DminStart i,s,k Dbegin i,s,k Da i,s,k Dend i,s,k DminEnd i,s,k Dlock i,s,k Obrázek 15: Doba Da i,s,k, kterou je kloub v módu Autotrack v závislosti na tom, zda se tento kloub na začátku a na konci položky otáčí, odemyká nebo zamyká. Graf této podmínky je zachycen na obrázku č. 17. Výpočet proměnné Anext i,s,k je navíc graficky znázorněn na obrázku č

58 Aprev i,s,k Dunlock i,s,k Dbegin i,s,k Da i,s,k Dend i,s,k Dlock i,s,k Anext i,s,k Obrázek 16: Diagram velikosti proměnné Anext i,s,k v závislosti na tom, zda se kloub k strany s během i-té položky rozvrhu odemyká, zamyká nebo otáčí. 52

59 M Dunlock Dbegin Dend Dlock Anext Da Aprev Da sup Anext = Da sup 0..sup {0} 90..sup Aprev+Da sup Anext = Aprev+Da Obrázek 17: Zajištění minimální doby trvání módu Autotrack a propagace uplynulé doby trvání do další položky. 53

60 6. Hledání rozvrhu Prvním krokem při hledání výstupního rozvrhu je načtení vstupního rozvrhu a doplnění CSP modelu o informace, které jsou specifické pro konkrétní zadání (viz kapitola 5.2). Příklad souboru 'domains.pl', ve kterém jsou tyto informace uchovávány, se nachází v příloze B. Zároveň je vytvořena časová osa reprezentující vstupní rozvrh. Poté, co je vytvořena časová osa, je možné přejít k hledání optimálního rozvrhu. Optimalizační funkce je rozložena na jednotlivé složky. První je optimalizace barvy, druhá je optimalizace módů, třetí je minimalizace počtu změn směru otáčení a poslední je minimalizace délky otáčení kloubů. Při optimalizaci budou tyto složky používány postupně, v pořadí podle důležitosti. Vzhledem k částečné nezávislosti jednotlivých stran stanice, které svazuje pouze čas, lze optimalizovat jednotlivé strany postupně, takže budeme-li hovořit o zpracování položky (optimalizace položky atd.), je odděleně zpracována nejdříve její levá strana a poté pravá strana. Nejdříve se vezme nejdůležitější složka a najde se její optimální hodnota pro první položku. Poté se hledá optimální hodnota příslušné složky u druhé položky za předpokladu, že je dodržena již nalezená hodnota u první položky. Poté, co jsou nalezeny optimální hodnoty této složky pro celý rozvrh, hledají se pro jednotlivé položky optimální hodnoty hodnoty podle druhé složky za předpokladu, že jsou dodrženy již nalezené hodnoty. Poté co jsou nalezeny optimální hodnoty u všech položek podle všech složek, optimálním rozvrhem je takový rozvrh, jehož hodnoty podle jednotlivých složek optimalizační funkce odpovídají nalezeným hodnotám. Pokud si tedy rozvrh představíme na horizontální ose a jednotlivé složky optimalizační funkce jako sloupec buněk, tak optimalizace probíhá po řádcích. Při hledání optimálních hodnot jednotlivých složek optimalizačních funkcí se vždy hledá úplný rozvrh, který tuto hodnotu dosahuje. V každém kroku optimalizace je tak zaručeno, že nebude potřeba navracení, protože určitě existuje rozvrh, který nalezené hodnoty dosahuje. 54

61 6.1. Ohodnocování rozvrhu Při ohodnocování proměnných je pro minimalizování zvolené proměnné použita metoda větví a mezí. Vzhledem k velikosti prohledávaného prostoru může nastat situace, že nalezení optimálního řešení nebo zjištění, zda je nalezené řešení optimální, by trvalo příliš dlouho. Z toho důvodu je prohledávání spouštěno s časovačem, který zajistí, že není hledáno příliš dlouho. Pro další práci je důležité rozlišit, zda je vrácené řešení optimální, nebo zda jde pouze o nejlepší řešení, jaké se podařilo nalézt do vypršení časovače, protože s touto informací bude pracováno dále. Zvolená implementace nerozlišuje, zda řešení neexistuje, nebo zda se do vypršení časovače nepodařilo nalézt žádné řešení. Při řešení to ale není podstatně. Pokud optimalizujeme první složku u první položky, je to po skončení všech pokusů o nalezení nějakého rozvrhu považováno za neexistenci řešení, protože není rozvrh, který bychom mohli zlepšovat. Pokud se optimalizuje některá z dalších složek nebo položek, znamená to, že jsme v předchozím kroku již nějaké řešení našli. Vzhledem k tomu, že nyní nepřibyla žádná podmínka která by předchozí řešení zakazovala, pouze se optimalizuje další položka nebo složka, musí nějaké řešení existovat i nyní. Navíc, pokud se žádné řešení nepodařilo najít, můžeme použít řešení z předchozího kroku a za nejlepší prohlásit hodnotu, která je vypočtená z něho. Tato hodnota může být také použita jako první horní mez při vyhledávání. Tím se může urychlit nalezení optimální hodnoty, protože horší řešení budou zahozena dříve, ale také to může vést naopak k horším výsledkům, protože ořezání některých domén může u heuristik, které velikost domény zohledňují, vést k jinému pořadí při ohodnocování proměnných. Existuje množství heuristik, v jakém pořadí a jakým způsobem proměnné ohodnocovat, přičemž různé heuristiky si nevedou u všech úloh stejně. Je proto vhodné nehledat rozvrh pouze pomocí jedné metody, ale mít sadu metod a v případě neúspěchu jedné zkoušet další, dokud se nenalezne optimum, nebo dokud nejsou se nejsou neúspěšné všechny metody. Pokud nějaká metoda dokáže najít řešení lepší, než je to aktuální, ale neřekne, že je optimální, tak se znovu zkouší všechny metody, ale s nově nalezeným limitem, protože (platí zejména u minimalizace směru otáčení) nižší horní limit může mít za následek další zlepšení u jiného nastavení. Může tak 55

62 nastat situace, kdy se několik nastavení postupně střídá ve zlepšování nalezeného řešení, až se dosáhne řádově lepšího výsledku, než by jednotlivá řešení dokázala najít bez opakování i s řádově delším limitem, protože by uvízla v lokálním minimu. Nejednoznačné je, zda hledat řešení alespoň tak dobré, jako poslední nalezené, nebo řešení lepší než nalezené. Může se totiž stát, že máme řešení optimální, ale aktuální parametry vyhledávání to nejsou schopny rozpoznat, zatímco některé z následujících parametrů by to rozpoznaly, takže pokud budeme hledat ostře lepší řešení, bude se zbytečně neúspěšně hledat se všemi zbylými parametry. Taková situace nastává pouze výjimečně, ale na druhou stranu se rozdíl ±1 ve většině případů neprojeví, protože se hodnoty limitů délky otáčení (kdy toto nastává nejčastěji) pohybují v řádech stovek až tisíců Dolní limit a předchozí řešení Kromě horního omezení optimalizované proměnné je užitečné znát také její dolní limit. Tato znalost je užitečná v okamžiku, kdy ohodnocovací algoritmus najde řešení, v němž minimalizovaná proměnná dosáhne optima, ale není schopen rozpoznat, že lepší řešení nemůže existovat. Pokud je v případě vypršení časovače hodnota nalezeného řešení rovna hodnotě dolního limitu, víme, že máme optimum. Znalost dolního limitu může být užitečná také tehdy, pokud máme uchované řešení z předchozího kroku, které optimalizovalo předcházející proměnnou. Pokud totiž toto řešení dosahuje dolního limitu u aktuální proměnné, znamená to, že známe optimum a máme řešení, které optima dosahuje, takže není nutné hledat nové řešení. Toto šetří čas díky tomu, že vyhodnocení optimalizační funkce na základě známého rozvrhu je rychlejší, než ohodnocovat celý rozvrh znovu. Určení dolního limitu záleží na tom, která složka je optimalizována. Pokud jde o optimalizaci ceny obarvení, tak se při prvním hledání bere jako dolní limit hodnota 4. To je proto, že v dostupných rozvrzích existuje téměř vždy orientace kloubů taková, která má u aktuální položky pro všechny panely ve všech příslušných tabulkách zelenou barvu. Hledat dolní limit na začátku by tedy znamenalo pouze čas navíc. Může sice nastat situace, kdy je optimálním řešením obarvení větší než 4 a že ji máme z hledání v předchozím kroku, tato situace je však méně pravděpodobná než situace, kdy 56

63 z předchozího kroku optimální řešení nemáme a jsme schopni ho najít i rozpoznat při prvním hledání. Hledání dolního limitu, má smysl pouze tehdy, pokud je nalezeno řešení, které má horší obarvení a ohodnocování vyprší časovač (tj. není rozpoznáno, zda jde o optimální řešení). V takovém případě se nalezne optimální hodnota za situace, že by příslušná položka byla v rozvrhu samotná, a tato hodnota poslouží jako dolní limit. Tuto hodnotu stačí u každé optimalizované položky hledat pouze jednou. Alternativně lze optimální hodnotu předpočítat při kódování vstupních tabulek podle vzorce c lower =min α 4 i =1 min c i (α, β). β Při hledání dolního limitu pro cenu módů je nutné zohlednit omezení ceny obarvení zafixované v předchozí fázi, protože limit na cenu obarvení může u kloubu zakázat mód Autotrack, pokud nemají příslušné tabulky celé stejnou barvu. I zde je možné si dolní limit předpočítat při tvorbě tabulek. Oproti předchozímu případu je ale situace složitější tím, že se při počítání limitů zohledňuje i cena obarvení, takže by nestačilo předpočítat jednu nejlepší hodnotu. V případě optimalizace ceny módu může mít smysl zjistit z tabulek dolní limit již před prvním hledáním optimální hodnoty, protože pokud nejsou všechny tabulky celé zelené, tak je velká šance, že u některého kloubu bude mód Autotrack zakázán již nalezeným limitem na cenu barvy, takže optimální hodnota bude vyšší než 0. Příliš obtížné je vyhledávání dolního limitu u počtu změn směru otáčení, neboť pro jejich odhad, který by byl alespoň trochu smysluplný, je nutné znát minimálně stav okolních položek rozvrhu. Protože pokud budeme uvažovat položku samotnou, tak ji nebude nic nutit se na okrajích otáčet. Pro tři položky by již byl výpočet příliš náročný, jako limit je tedy vždy používáno minimum domény této proměnné, tj. 0 změn. U minimalizace délky otáčení je situace stejná jako u minimalizace počtu změn směru. I zde tedy není dolní limit přepočítáván a jako limit je použito 0. 57

64 Šance, že řešení nalezené při optimalizaci předchozí funkce bude dosahovat dolního limitu také u aktuálně optimalizované funkce, závisí na způsobu ohodnocování jednotlivých proměnných. Je tedy vhodné domény jednotlivých proměnných uspořádat tak, aby pořadí, v jakém budou hodnoty zkoušeny odpovídalo preferencím. Použitá implementace zkouší dosazovat hodnoty od nejmenší po největší. Z toho důvodu 0 reprezentuje mód Autotrack, zatímco mód Lock je reprezentován hodnotou 2. Z téhož důvodu je u proměnných Din i,s,k a Dout i,s,k (reprezentujících směr otáčení kloubu) reprezentováno otáčení v záporném hodnotou 2 a ne hodnotou -1, která by byla přirozenější. Díky tomu je jako první zkoušeno, že se kloub neotáčí, což minimalizuje délku otáčení i počet změn směru otáčení, a jako poslední se zkouší negativní směr otáčení, což minimalizuje počet změn směru otáčení. V případě reprezentace pomocí proměnných Rin i,s,k a Rout i,s,k (otočení kloubu; kladná čísla otáčení v kladném směru, záporná otočení v záporném směru; absolutní hodnota proměnné dává délku otáčení) by záleželo na tom, zda chceme upřednostnit směr, nebo délku otáčení. Počet změn směru má při optimalizaci větší váhu, ale na druhou stranu hraje roli pouze pokud je kloub během položky v módu Autotrack a zároveň se otáčí, nebo se otáčí zároveň na konci jedné a začátku následující položky. Chceme-li upřednostnit směr, pak je vhodné ohodnocovat v pořadí 0, 1, 2,, 359, -1, -2,, Pokud chceme upřednostnit délku otáčení, tak je vhodné pořadí 0, 1, -1, 2, -2,, 359, Částečné ohodnocení Máme tři třídy událostí. Během první se klouby nemohou otáčet na začátku ani na konci položky, během druhé se mohou otáčet pouze na konci položky a během třetí se mohou otáčet na začátku i na konci položky. Pro každý přechod mezi položkami je tedy devět možností, jaká dvojice tříd událostí ho obklopuje (viz obrázek č. 18). U sedmi z nich (ty, které se neotáčí na konci aktuální i začátku následující položky, tj. prvních pět, sedmá a osmá odshora) je, pokud se kloub v následující položce nenachází v módu Autotrack, orientace na přechodu jednoznačně určena na základě orientací přiléhajících položek. Ve zbylých možnostech může být orientace jednoznačně určena, pokud je Dout i,s,k =0 nebo Din i,+1s,k =0 a tedy se kloub během aktuální nebo následující položky neotáčí. V těchto 58

65 Aktuální položka Událost typu NO Událost typu NO Následující položka Událost typu NO Událost typu END Turning Událost typu NO Turning Událost typu BOTH Turning Událost typu END Turning Událost typu NO Událost typu END Turning Událost typu END Turning Událost typu END Turning Turning Událost typu BOTH Turning Turning Událost typu BOTH Turning Událost typu NO Turning Událost typu BOTH Turning Událost typu END Turning Turning Událost typu BOTH Turning Turning Událost typu BOTH Turning Obrázek 18: Možné přechody mezi položkami. případech, kdy je orientace na přechodu jednoznačně určena, není nutné ohodnocovat proměnnou Lout i,s,k, resp. Lin i,+1s,k (délka otáčení) ani Oout i,s,k =Oin i,+1s,k (orientace na přechodu z aktuální do následující položky), protože při ohodnocení proměnné Dout i,s,k =0, resp. Din i,+1s,k budou jednoznačně určeny i tyto proměnné. Vzhledem k této znalosti je každé hledání rozvrhu rozděleno do několika kroků. V prvním kroku se ohodnocují pouze proměnné T i, O i,s,k, M i,s,k, Din i,s,k, Dout i,s,k a minimalizovaná proměnná. Vynecháním Lin i,s,k a Lout i,s,k resp. Oin i,s,k =Oout i,s,k se prohledávaný prostor řádově zmenší a prohledávání je tak rychlejší a úspěšnější. V případech, kdy některé proměnné Lin i,s,k nebo Lout i,s,k, resp. Oin i,s,k =Oout i,s,k zůstanou neohodnocené, tak následuje druhý krok, v němž se ohodnotí dosud neohodnocené proměnné. Vzhledem k tomu, že většina proměnných je ohodnocená z prvního kroku, je toto hledání rychlé. Může nastat situace, kdy pro neohodnocené proměnné neexistují hodnoty takové, aby vznikl validní rozvrh. Takové případy ale nastávají pouze výjimečně a pro takové případy následuje ještě třetí krok, při němž se částečný rozvrh zahodí a hledá se nový rozvrh s ohodnocením všech proměnných. 59

66 Toto zrychlení nelze použít, pokud je pro reprezentaci rozvrhu použita proměnná R, která je proto méně úspěšná než zbylé dvě reprezentace. Zároveň díky tomuto není znatelný rozdíl mezi reprezentací Din i,s,k +Dout i,s,k +Lin i,s,k +Lout i,s,k a reprezentaci Din i,s,k +Dout i,s,k +Oout i,s,k, protože rozdíl by se mohl projevit pouze ve třetím kroku, ke kterému dochází pouze výjimečně a v němž se úspěšnost těchto dvou reprezentací příliš neliší. V případě, že se optimalizovaná proměnná shora omezuje na základě předchozího nalezeného řešení pouze neostrou nerovností, tak (pokud nejde o první hledání rozvrhu) je nutné doohodnocení nehodnocených proměnných provést pouze tehdy, pokud je nalezené řešení ostře lepší než to, které již máme Zjednodušené modely Pokud je hledání v úplném modelu příliš náročné, může být užitečné použít zjednodušený model, který zmenší prohledávaný prostor. V takovém případě je nutné dát pozor na to, aby nás použité zjednodušení o žádné řešení nepřipravilo nebo aby případná ztráta nenastávala příliš často a tato ztráta nebyla příliš velká. Při ohodnocování rozvrhu dělá značné problémy mód Autotrack. To je způsobeno tím, že, na rozdíl od ostatních módů, u tohoto není orientace na začátku a na konci položky stejná. Hrát roli může např. i to, zda se nějaký jiný kloub zamyká. Pokud zakážeme v rozvrhu mód Autotrack, vede to k výraznému zrychlení. Optimalizace obarvení je nadřazena optimalizaci ceny módů, takže použijeme-li toto zjednodušení při optimalizaci barvy, tak nám nezabrání splnit limity již nalezených složek optimalizační funkce. Zároveň je ale možné použít zjednodušení pouze při optimalizaci obarvení a nikoliv při optimalizaci ceny módů nebo později, protože mód Autotrack je při optimalizaci ceny módů nejžádanější. Je nutné dát pozor na to, že pokud nám vyhledávání v takto omezeném modelu vrátí výsledek, o kterém tvrdí, že je optimální, ještě to neznamená, že jde skutečně o optimální řešení. Příklad, kdy zakázání módu Autotrack může vést k nenalezení optimálního řešení je zobrazen na obrázku č. 19. Aby taková situace nastala, musí barevné omezení v prostřední položce povolit kloubu mód Autotrack a zároveň nesmí být povoleno otáčet klouby na konci první, začátku a konci druhé a začátku třetí položky. Pokud neexistuje orientace kloubu taková, která by vyhovovala 60

67 Obrázek 19: Příklad, kdy použití zjednodušeného modelu může vést k nenalezení optima. První dvě události musí být typu 0 (není povoleno otáčet klouby na začátku ani konci položky) a třetí událost nesmí být typu 2 (nesmí otáčet panely na začátku položky). Pokud bude mít druhá položka rozvrhu vhodnou délku, bude možné přejít ze zelené oblasti u první položky rozvrhu do zelené oblasti u třetí položky rozvrhu. optimální barvě v první i třetí položce, pak není možné pří zakázaném módu Autotrack přejít z optimální oblasti v první položce do optimální oblasti ve třetí položce. Pokud však bude kloub v módu Autotrack, pak orientace na konci druhé položky nebude záležet pouze na orientaci na jejím začátku, ale také na době, kterou kloub setrvá v módu Autotrack. Při vhodné délce druhé položky je přechod mezi optimálními oblastmi první a třetí položky možný. Abychom si byli jisti, že jde skutečně o optimální hodnotu, pak buď musí nalezená hodnota odpovídat dolnímu limitu proměnné, nebo je nutné optimalitu ověřit na nezjednodušeném modelu. V případě nutnosti ověření by k časové úspoře nedošlo, ale tato možnost nenastává příliš často. Během otáčení kloubu je možné se do každé orientace kromě výchozí dostat dvěma možnými způsoby otočením v pozitivním směru o úhel γ a otočením v negativním směru o úhel 360-γ. Směr otáčení kloubu je důležitý až při optimalizaci třetí složky minimalizaci počtu změn směru otáčení. Při optimalizaci prvních dvou složek optimalizační funkce je možné duplicitní možnosti otáčení vynechat. V závislosti na reprezentaci to lze provést několika způsoby: U reprezentace pomoci Din i,s,k, Dout i,s,k a Oout i,s,k lze domény Din i,s,k a Dout i,s,k omezit na interval 0..1, takže se klouby budou otáčet pouze v pozitivním směru. Některé otáčení tak ale může trvat příliš dlouho na to, aby se stihlo. 61

68 U reprezentace pomocí D i,s,k, Dout i,s,k, Lin i,s,k a Lout i,s,k lze provést omezení stejné jako u předchozí reprezentace. Účinější je ale omezit Lin i,s,k a Lout i,s,k na interval , kdy je jisté, že na každé otáčení bude dostatek času. Stejná omezení jako u reprezentace Din i,s,k, Dout i,s,k, Lin i,s,k a Lout i,s,k je možné provést i u reprezentace pomocí Rin i,s,k a Rout i,s,k, pouze budou jinak zapsaná. V prvním případě se Rin i,s,k a Rout i,s,k omezí na interval Ve druhém případě se doména omezí na interval Otočení o -180 sice znamená stejnou výslednou pozici jako otočení o 180, ale s omezením na interval jsou výsledky výrazně horší. To může být způsobeno tím, že pak má tato proměnná stejně velkou doménu jako proměnné O i,s,k, takže většina použitých heuristik může zvolit jiné pořadí proměnných při ohodnocování. Stejně jako u zanedbání módu Autotrack, toto zjednodušení nás také může připravit o nějaké možnosti. I u tohoto příkladu je možné použít obrázek č. 19. Pokud je první událost typu 0 (na konci položky nelze otáčet klouby), druhá událost je typu 1 (je možné klouby otáčet pouze na konci položky) a třetí událost není typu 2 (není možné otáčet klouby na začátku položky), pak to, zda může být kloub během druhé události v módu Autotrack (při zachování omezení na barvu), může záviset na tom, zda a jak dlouho se bude kloub na konci druhé položky otáčet v negativním směru, tj. jestli se stihne vrátit do vhodné pozice. Pokud nám tedy při tomto zjednodušení vrátí vyhledávání optimum, tak to ještě neznamená, že skutečně máme optimum. Je nutné, v případě, že nejde o dolní limit, ověřit výsledek na úplném modelu. 62

69 7. Experimenty 7.1. Testovací data V původním zadání problému [1] je k článku přiloženo patnáct testovacích příkladů. Tři z nich (E1, E2, E3) obsahují jedinou položku rozvrhu a všechny tabulky zelené. Jeden (E6) obsahuje dvě položky rozvrhu se všemi tabulkami zelenými. Jedná se tedy pouze o základní test, zda lze vůbec program spustit a zda si načte zadání. Další tři (E4, E5, E7) obsahují jednu nebo dvě položky. Všechny tabulky L jsou celé zelené a tabulky P, E a S neobsahují červenou. Jde tedy o test, zda jsou správně zpracovány preference barvy ve vztahu k preferenci módu. Také už může být nutné klouby otočit z výchozí pozice. Dva problémy (M1, M2) neobsahují v žádné tabulce červenou barvu, ale již obsahují žlutou i v některé tabulce L, takže je nutné použít i Lock-Latch podmínky, které si však vynucují pouze mód Park, není tak zatím nutné uvažovat dobu nutnou pro odemknutí a uzamčení kloubu. Oba problémy obsahují dvě položky rozvrhu a obě trvají dostatečně dlouho na to, aby byla splněna podmínka na minimální dobu trvání módu Autotrack. Zbylých šest problémů (M3, M4, M5, H1, H2, H3) má reprezentovat celý problém. Kterákoliv tabulka už může obsahovat červenou barvu, aplikují se tak kompletní Lock-Latch podmínky. Zamykání, resp. odemykání kloubu může způsobit, že kloub nebude mít dostatek času pro mód Autotrack. Problémy obsahují dvě až čtyři položky rozvrhu, přičemž pouze u posledního z nich (H3) je nutné i správné sloučení ATL a TRTL rozvrhů. Nejedná se ale o různé problémy, vyjma problému H1 jsou jednotlivé problémy pouze zesložitěním předchozího rozvrhu ve smyslu, že jsou do jedné tabulky přidány horší barvy, nebo je přidána jedna položka rozvrhu. V případě H1 je naopak pět tabulek zjednodušeno a položky jsou v pohotovostním režimu, odlišné Lock-Latch podmínky se ale neprojeví, protože na příslušných 63

70 panelech je také žlutá v tabulce L, který mód Autotrack také zakazuje. Problém H3 tedy ostatní ve smyslu složitosti pokrývá. Tyto testovací příklady tedy nejsou dostatečné pro otestování programu. Vzhledem k bezpečnostním omezením bohužel nebylo možné dostat reálná data ani data podobná reálným datům 12. Pouze jsme dostali od Jeremy D. Franka návod, jak generovat vlastní testovací data. Návod vypadá přibližně takto: Náhodně určit pravděpodobnost, že tabulka nebude celá zelená. Toto číslo doporučuje zvolit z intervalu 1/32 ;16 /32. Horní hranice není vyšší z toho důvodu, že pro každý panel jsou čtyři tabulky, takže bude pravděpodobnost pouze 1/16, že tabulky panelu nebudou omezovat ani jeden kloub, takže bude malá pravděpodobnost, že bude nějaký kloub v módu Autotrack. Náhodně vybrat velikost žlutého čtverce, obdélníku, řádku, nebo sloupce. Velikost by měla být omezena na 40 pixelů. Zdůvodněno je to tím, že vzhledem k tomu, že 360/16=25, tak je velká šance, že každá kombinace orientací kloubů SARJ a BGA bude v nějaké tabulce omezena. Jenže ke každému panelu se u jedné položky mohou vztahovat maximálně čtyři tabulky. Tomuto omezení také neodpovídá žádný z testovacích příkladů přiložených k zadání. Později je možné zvolit více než pouze jednu žlutou oblast na tabulku. Do žlutých oblastí doplnit červené oblasti. Nahradit vygenerovanými tabulkami tabulky u některého z testovacích příkladů přiložených k zadání. Způsob generování dat tedy není založen na tom, jak reálná data vypadají, ale na tom, co by mělo být nejnáročnější na řešení. Reálná data budou pravděpodobně vypadat výrazně jinak. Takto generované tabulky obsahují pouze jednoduché obdélníkové útvary, které lze snadno reprezentovat a jimi způsobené omezení jednotlivých domén snadno a účinně propagovat. To ale pravděpodobně neodpovídá skutečnosti, soudě podle tabulky uvedené jako příklad v zadání (obrázek č. 20). Tvar oblastí v tabulkách ale může mít značný vliv na velikost tabulek po zakódování. Tabulky z testovacího 12 Ale překvapivě nejsou bezpečnostní omezení problémem při zobrazování aktuální telemetrických dat ze senzorů stanice na ISS Live! ( 64

71 Obrázek 20: Tabulka podmínek, která je uváděna jako ilustrační příklad zadání v zadání. Reddy, Sudhakar Y., Jeremy D. Frank, Michael J. Iatauro, Matthew E. Boyce, Elif Kürklü, Mitchell Ai- Chang a Ari K. Jónsson. Planning solar array operations on the international space station. ACM Transactions on Intelligent Systems and Technology. New York, NY, USA: ACM, 2011, 2(4), 41: příkladu H3 potřebují k zakódování průměrně 225B, přičemž 50B je hlavička identifikující, o jaké proměnné jde. Ale pokud bychom kódovali čtveřici tabulek, jejichž sloučení je na obrázku č. 21 (jde o sloučení čtveřice tabulek P, L, E a S do jedné), bude na její zakódování potřeba téměř 140kB a její načtení potrvá několik sekund. Významný rozdíl je také v délce rozvrhů. Nejdelší rozvrh pokrývá sedm hodin a obsahuje čtyři položky. To je velmi vzdáleno čtyřtýdennímu plánovacímu horizontu. Reálná nemusí být ani doba trvání jednotlivých položek rozvrhu. U nejdelšího rozvrhu se pohybuje v rozmezí od 1 do 2,5 hodiny, s průměrnou dobou 1,75 hodiny. V článku [2] jsou testovány tři úryvky z reálného rozvrhu, přičemž průměrná doba položky se pohybuje od 4 do 5 hodin. Dále testovali čtyři příklady, u nichž je průměrná doba položky výrazně kratší, nejméně dokonce 37,6 minuty. Tyto rozvrhy však byly vytvořeny pro testování chování SACE, nemusí tedy odpovídat realitě. Je ale pravděpodobné, že se doba různých položek výrazně liší, typický rozvrh může obsahovat několik krátkých položek (například změna orientace stanice) proložených dlouhými obdobími klidu. Lze například očekávat, že stanice nebude provádět kritické operace během noci, kdy astronauti spí. 65

72 Obrázek 21: Sloučení čtveřice tabulkových podmínek P, L, E a S do jedné. Černá barva značí zakázanou oblast vynucující si Lock (červená v tabulce L), šedá značí ostatní zakázané oblasti (červená v tabulkách P nebo S). Zbylé barvy reprezentují jednotlivá obarvení podle tabulky č. 3. Barvy jsou přiřazeny tak, aby pořadí poměrů červené a zelené složky odpovídalo pořadí v tabulce preferencí a aby nejlepší kombinace byla obarvena zeleně a nejhorší kombinace červeně. Délka rozvrhu je zásadním problémem zejména z toho důvodu, že na délce rozvrhu závisí množství ohodnocovaných proměnných lineárně. V závislosti na vlastnostech tabulek tak může doba potřebná k nalezení optimálního rozvrhu růst s délkou rozvrhu exponenciálně. V praxi tomu tak být nemusí, pokud jsou mezi položkami dostatečně dlouhé klidné položky bez omezení, kdy se panely stihnou pootočit do libovolné orientace. V takovém případě by se složitost problému projevila až v poslední fázi při minimalizaci délky otáčení. Tomu, že rozvrh takto vypadá nasvědčují data nasbíraná z ISS Live! 13, kde jsou zobrazována aktuální telemetrická data. Data ze tří vybraných dnů jsou zobrazena v příloze D. Během sledovaných tří týdnů 14 nebyly všechny klouby v módu Autotrack pouze čtyřikrát Poté bylo bohužel zobrazování stavu konzoli na ISS Live! ukončeno, zachováno bylo pouze zobrazování vědeckého rozvrhu a rozvrhu posádky. To je škoda zejména proto, že ve sledovaném období nebyl žádný přílet ke stanici, který bude pravděpodobně náročnější než odlet od ní. 66

Plánování solárních panelů na Mezinárodní vesmírné stanici. Jan Jelínek

Plánování solárních panelů na Mezinárodní vesmírné stanici. Jan Jelínek Plánování solárních panelů na Mezinárodní vesmírné stanici Jan Jelínek Obsah Úvod Zadání problému v ICKEPS 2012 Umělá inteligence ve vesmírnných letech Přístup NASA k problému Závěr ISS 1984: První plán

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy Metody lineární optimalizace Simplexová metoda Dvoufázová M-úloha Duální úloha jednofázová Post-optimalizační analýza Celočíselné řešení Metoda větví a mezí Distribuční úlohy 1 OÚLP = obecná úloha lineárního

Více

Univerzita Karlova v Praze

Univerzita Karlova v Praze [Vzor: Pevná deska diplomové práce není součástí elektronické verze] [Verze 3/2013 platná od 18.3.2013 dostupná z http://www.mff.cuni.cz/studium/bcmgr/prace] Univerzita Karlova v Praze Matematicko-fyzikální

Více

45 Plánovací kalendář

45 Plánovací kalendář 45 Plánovací kalendář Modul Správa majetku slouží ke tvorbě obecných ročních plánů činností organizace. V rámci plánu je třeba definovat oblasti činností, tj. oblasti, ve kterých je možné plánovat. Každá

Více

DIPLOMOVÁ PRÁCE OPTIMALIZACE MECHANICKÝCH

DIPLOMOVÁ PRÁCE OPTIMALIZACE MECHANICKÝCH DIPLOMOVÁ PRÁCE OPTIMALIZACE MECHANICKÝCH VLASTNOSTÍ MECHANISMU TETRASPHERE Vypracoval: Jaroslav Štorkán Vedoucí práce: prof. Ing. Michael Valášek, DrSc. CÍLE PRÁCE Sestavit programy pro kinematické, dynamické

Více

Univerzita Karlova v Praze

Univerzita Karlova v Praze [Vzor: Pevná deska bakalářské práce není součástí elektronické verze] Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Rok Jméno a příjmení autora [Vzor :Titulní strana bakalářské

Více

5 Orientované grafy, Toky v sítích

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

2.5 Rovnováha rovinné soustavy sil

2.5 Rovnováha rovinné soustavy sil Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 2.5 Rovnováha rovinné soustavy sil Rovnováha sil je stav, kdy na těleso působí více sil, ale jejich výslednice

Více

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Modul Řešitel (v anglické verzi Solver) je určen pro řešení lineárních i nelineárních úloh matematického programování. Pro ilustraci

Více

Exponenciální modely hromadné obsluhy

Exponenciální modely hromadné obsluhy Exponenciální modely hromadné obsluhy Systém s čekáním a neohraničeným zdrojem požadavků Na základě předchozích informací je potřeba probrat, jaké informace jsou dostupné v počtu pravděpodobnosti řešícím

Více

Abstrakt: Autor navazuje na svůj referát z r. 2014; pokusil se porovnat hodnoty extrémů některých slunečních cyklů s pohybem Slunce kolem barycentra

Abstrakt: Autor navazuje na svůj referát z r. 2014; pokusil se porovnat hodnoty extrémů některých slunečních cyklů s pohybem Slunce kolem barycentra Úvaha nad slunečními extrémy - 2 A consideration about solar extremes 2 Jiří Čech Abstrakt: Autor navazuje na svůj referát z r. 2014; pokusil se porovnat hodnoty extrémů některých slunečních cyklů s pohybem

Více

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

4EK201 Matematické modelování. 2. Lineární programování

4EK201 Matematické modelování. 2. Lineární programování 4EK201 Matematické modelování 2. Lineární programování 2.1 Podstata operačního výzkumu Operační výzkum (výzkum operací) Operational research, operations research, management science Soubor disciplín zaměřených

Více

Univerzita Karlova v Praze

Univerzita Karlova v Praze Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE 2011 Jonáš Bujok Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Jonáš Bujok Nástroj pro převod PDF na

Více

4EK213 LINEÁRNÍ MODELY

4EK213 LINEÁRNÍ MODELY 4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 3. přednáška SIMPLEXOVÁ METODA I. OSNOVA PŘEDNÁŠKY Standardní tvar MM Základní věta LP Princip simplexové metody Výchozí řešení SM Zlepšení řešení

Více

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}.

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}. 5. Náhodná veličina Poznámka: Pro popis náhodného pokusu jsme zavedli pojem jevového pole S jako množiny všech možných výsledků a pravděpodobnost náhodných jevů P jako míru výskytů jednotlivých výsledků.

Více

4EK213 LINEÁRNÍ MODELY

4EK213 LINEÁRNÍ MODELY 4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 Mgr. Sekničková Jana, Ph.D. 2. PŘEDNÁŠKA MATEMATICKÝ MODEL ÚLOHY LP Mgr. Sekničková Jana, Ph.D. 2 OSNOVA PŘEDNÁŠKY Obecná formulace MM Množina

Více

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Pravděpodobnost a učení Doc. RNDr. Iveta Mrázová,

Více

Operační výzkum. Síťová analýza. Metoda CPM.

Operační výzkum. Síťová analýza. Metoda CPM. Operační výzkum Síťová analýza. Metoda CPM. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační číslo

Více

12. Lineární programování

12. Lineární programování . Lineární programování. Lineární programování Úloha lineárního programování (lineární optimalizace) je jedním ze základních problémů teorie optimalizace. Našim cílem je nalézt maximum (resp. minimum)

Více

Optimalizace & soft omezení: algoritmy

Optimalizace & soft omezení: algoritmy Optimalizace & soft omezení: algoritmy Soft propagace Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných

Více

Ing. Alena Šafrová Drášilová, Ph.D.

Ing. Alena Šafrová Drášilová, Ph.D. Rozhodování Ing. Alena Šafrová Drášilová, Ph.D. Rozhodování??? video Obsah typy rozhodování principy rozhodování rozhodovací fáze základní pojmy hodnotícího procesu rozhodovací podmínky rozhodování v podmínkách

Více

6 Ordinální informace o kritériích

6 Ordinální informace o kritériích 6 Ordinální informace o kritériích Ordinální informací o kritériích se rozumí jejich uspořádání podle důležitosti. Předpokládejme dále standardní značení jako v předchozích cvičeních. Existují tři základní

Více

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28. INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.0141 Báze vektorových prostorů, transformace souřadnic Michal Botur Přednáška

Více

CVIČNÝ TEST 24. OBSAH I. Cvičný test 2. Mgr. Kateřina Nováková. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

CVIČNÝ TEST 24. OBSAH I. Cvičný test 2. Mgr. Kateřina Nováková. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15 CVIČNÝ TEST 24 Mgr. Kateřina Nováková OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15 I. CVIČNÝ TEST VÝCHOZÍ TEXT K ÚLOZE 1 Písemnou práci z chemie psalo všech 28 žáků ze

Více

Kybernetika a umělá inteligence, cvičení 10/11

Kybernetika a umělá inteligence, cvičení 10/11 Kybernetika a umělá inteligence, cvičení 10/11 Program 1. seminární cvičení: základní typy klasifikátorů a jejich princip 2. počítačové cvičení: procvičení na problému rozpoznávání číslic... body za aktivitu

Více

xrays optimalizační nástroj

xrays optimalizační nástroj xrays optimalizační nástroj Optimalizační nástroj xoptimizer je součástí webového spedičního systému a využívá mnoho z jeho stavebních bloků. xoptimizer lze nicméně provozovat i samostatně. Cílem tohoto

Více

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je

Více

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory K množina reálných nebo komplexních čísel, U vektorový prostor nad K. Lineární kombinace vektorů u 1, u 2,...,u

Více

4EK213 Lineární modely. 12. Dopravní problém výchozí řešení

4EK213 Lineární modely. 12. Dopravní problém výchozí řešení 4EK213 Lineární modely 12. Dopravní problém výchozí řešení 12. Distribuční úlohy LP Úlohy výrobního plánování (alokace zdrojů) Úlohy finančního plánování (optimalizace portfolia) Úlohy reklamního plánování

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

4EK311 Operační výzkum. 1. Úvod do operačního výzkumu

4EK311 Operační výzkum. 1. Úvod do operačního výzkumu 4EK311 Operační výzkum 1. Úvod do operačního výzkumu Mgr. Jana SEKNIČKOVÁ, Ph.D. Nová budova, místnost 433 Konzultační hodiny InSIS E-mail: jana.seknickova@vse.cz Web: jana.seknicka.eu/vyuka Garant kurzu:

Více

Mechanika

Mechanika Mechanika 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 Mechanika Kinematika 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Více

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB 62 REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB BEZOUŠKA VLADISLAV Abstrakt: Text se zabývá jednoduchým řešením metody nejmenších čtverců v prostředí Matlab pro obecné víceparametrové aproximační funkce. Celý postup

Více

Pohyb Slunce k těžišti sluneční soustavy a sluneční cykly. Jiří Čech

Pohyb Slunce k těžišti sluneční soustavy a sluneční cykly. Jiří Čech Pohyb Slunce k těžišti sluneční soustavy a sluneční cykly Jiří Čech (The movement of the Sun towards the centre of gravity of the Solar System and solar cycles) Abstrakt: V návaznosti na práci Periody

Více

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing. Program pro tvorbu technických výpočtů VIKLAN - Výpočty Uživatelská příručka pro seznámení se základními možnostmi programu Ing. Josef Spilka VIKLAN - Výpočty Verse 1.10.5.1 Copyright 2010 Ing. Josef Spilka.

Více

3. Optimalizace pomocí nástroje Řešitel

3. Optimalizace pomocí nástroje Řešitel 3. Optimalizace pomocí nástroje Řešitel Rovnováha mechanické soustavy Uvažujme dvě různé nehmotné lineární pružiny P 1 a P 2 připevněné na pevné horizontální tyči splývající s osou x podle obrázku: (0,0)

Více

Copyright 2013 Martin Kaňka;

Copyright 2013 Martin Kaňka; Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz Popis aplikace Hlavním cílem aplikace Cubix je výpočet a procvičení výpočtu objemu a povrchu těles složených z kostek. Existují tři obtížnosti úkolů

Více

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE FAKULTA INFORMATIKY A STATISTIKY Hlavní specializace: Ekonometrie a operační výzkum Název diplomové práce Optimalizace trasy při revizích elektrospotřebičů Diplomant: Vedoucí

Více

Lineární programování

Lineární programování Lineární programování Petr Tichý 19. prosince 2012 1 Outline 1 Lineární programování 2 Optimalita a dualita 3 Geometrie úlohy 4 Simplexová metoda 2 Lineární programování Lineární program (1) min f(x) za

Více

FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITA HRADEC KRÁLOVÉ VOLBA TECHNOLOGIE. Semestrální práce MIE2

FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITA HRADEC KRÁLOVÉ VOLBA TECHNOLOGIE. Semestrální práce MIE2 FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITA HRADEC KRÁLOVÉ VOLBA TECHNOLOGIE Semestrální práce MIE2 Vypracoval: Bc. Martin Petruželka Studijní obor: K-IM2 Emailová adresa: Martin.Petruzelka@uhk.cz Datum

Více

5. Lokální, vázané a globální extrémy

5. Lokální, vázané a globální extrémy 5 Lokální, vázané a globální extrémy Studijní text Lokální extrémy 5 Lokální, vázané a globální extrémy Definice 51 Řekneme, že f : R n R má v bodě a Df: 1 lokální maximum, když Ka, δ Df tak, že x Ka,

Více

Pracovní celky 3.2, 3.3 a 3.4 Sémantická harmonizace - Srovnání a přiřazení datových modelů

Pracovní celky 3.2, 3.3 a 3.4 Sémantická harmonizace - Srovnání a přiřazení datových modelů Pracovní celky 3.2, 3.3 a 3.4 Sémantická harmonizace - Srovnání a datových modelů Obsah Seznam tabulek... 1 Seznam obrázků... 1 1 Úvod... 2 2 Metody sémantické harmonizace... 2 3 Dvojjazyčné katalogy objektů

Více

5 Vícerozměrná data - kontingenční tabulky, testy nezávislosti, regresní analýza

5 Vícerozměrná data - kontingenční tabulky, testy nezávislosti, regresní analýza 5 Vícerozměrná data - kontingenční tabulky, testy nezávislosti, regresní analýza 5.1 Vícerozměrná data a vícerozměrná rozdělení Při zpracování vícerozměrných dat se hledají souvislosti mezi dvěma, případně

Více

Aplikace pro srovna ní cen povinne ho ruc ení

Aplikace pro srovna ní cen povinne ho ruc ení Aplikace pro srovna ní cen povinne ho ruc ení Ukázkový přiklad mikroaplikace systému Formcrates 2010 Naucrates s.r.o. Veškerá práva vyhrazena. Vyskočilova 741/3, 140 00 Praha 4 Czech Republic tel.: +420

Více

Univerzitní centrum energeticky efektivních budov, České vysoké učení technické, Buštěhrad

Univerzitní centrum energeticky efektivních budov, České vysoké učení technické, Buštěhrad Zjednodušená měsíční bilance solární tepelné soustavy BILANCE 2015/v2 Tomáš Matuška, Bořivoj Šourek Univerzitní centrum energeticky efektivních budov, České vysoké učení technické, Buštěhrad Úvod Pro návrh

Více

Diskrétní řešení vzpěru prutu

Diskrétní řešení vzpěru prutu 1 z 5 Diskrétní řešení vzpěru prutu Discrete solution of beam buckling Petr Frantík Abstract Here is described discrete method for solution of beam buckling. The beam is divided into a number of tough

Více

Pohyb tělesa po nakloněné rovině

Pohyb tělesa po nakloněné rovině Pohyb tělesa po nakloněné rovině Zadání 1 Pro vybrané těleso a materiál nakloněné roviny zjistěte závislost polohy tělesa na čase při jeho pohybu Výsledky vyneste do grafu a rozhodněte z něj, o jakou křivku

Více

4. Statika základní pojmy a základy rovnováhy sil

4. Statika základní pojmy a základy rovnováhy sil 4. Statika základní pojmy a základy rovnováhy sil Síla je veličina vektorová. Je určena působištěm, směrem, smyslem a velikostí. Působiště síly je bod, ve kterém se přenáší účinek síly na těleso. Směr

Více

7. přednáška Systémová analýza a modelování. Přiřazovací problém

7. přednáška Systémová analýza a modelování. Přiřazovací problém Přiřazovací problém Přiřazovací problémy jsou podtřídou logistických úloh, kde lze obecně říci, že m dodavatelů zásobuje m spotřebitelů. Dalším specifikem je, že kapacity dodavatelů (ai) i požadavky spotřebitelů

Více

CVIČNÝ TEST 17. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

CVIČNÝ TEST 17. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15 CVIČNÝ TEST 17 Mgr. Tomáš Kotler OBSAH I. Cvičný test II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15 I. CVIČNÝ TEST VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 Jsou dány funkce f: y = x + A, g: y = x B,

Více

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem 7 Transformace 2D Studijní cíl Tento blok je věnován základním principům transformací v rovinné grafice. V následujícím textu bude vysvětlen rozdíl v přístupu k transformacím u vektorového a rastrového

Více

Řízení projektů. Konstrukce síťového grafu pro řízení projektů Metoda CPM Metoda PERT

Řízení projektů. Konstrukce síťového grafu pro řízení projektů Metoda CPM Metoda PERT Řízení projektů Konstrukce síťového grafu pro řízení projektů Metoda CPM Metoda PERT 1 Úvod základní pojmy Projekt souhrn činností, které musí být všechny realizovány, aby byl projekt dokončen Činnost

Více

BALISTICKÝ MĚŘICÍ SYSTÉM

BALISTICKÝ MĚŘICÍ SYSTÉM BALISTICKÝ MĚŘICÍ SYSTÉM UŽIVATELSKÁ PŘÍRUČKA Verze 2.3 2007 OBSAH 1. ÚVOD... 5 2. HLAVNÍ OKNO... 6 3. MENU... 7 3.1 Soubor... 7 3.2 Měření...11 3.3 Zařízení...16 3.4 Graf...17 3.5 Pohled...17 1. ÚVOD

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Obsah. 2 Moment síly Dvojice sil Rozklad sil 4. 6 Rovnováha 5. 7 Kinetická energie tuhého tělesa 6. 8 Jednoduché stroje 8

Obsah. 2 Moment síly Dvojice sil Rozklad sil 4. 6 Rovnováha 5. 7 Kinetická energie tuhého tělesa 6. 8 Jednoduché stroje 8 Obsah 1 Tuhé těleso 1 2 Moment síly 2 3 Skládání sil 3 3.1 Skládání dvou různoběžných sil................. 3 3.2 Skládání dvou rovnoběžných, různě velkých sil......... 3 3.3 Dvojice sil.............................

Více

Postup prací při sestavování nároků vlastníků

Postup prací při sestavování nároků vlastníků Postup prací při sestavování nároků vlastníků Obsah 1. Porovnání výměr... 1 2. Výpočet opravného koeficientu... 2 3. Výpočet výměr podle BPEJ... 2 4. Výpočet vzdálenosti... 2 5. Sestavení nárokového listu...

Více

řešeny numericky 6 Obyčejné diferenciální rovnice řešeny numericky

řešeny numericky 6 Obyčejné diferenciální rovnice řešeny numericky řešeny numericky řešeny numericky Břetislav Fajmon, UMAT FEKT, VUT Brno Na minulé přednášce jsme viděli některé klasické metody a přístupy pro řešení diferenciálních rovnic: stručně řečeno, rovnice obsahující

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

3.4.2 Rovnováha Rovnováha u centrální rovinné silové soustavy nastává v případě, že výsledná síla nahrazující soustavu je rovna nule. Tedy. Obr.17.

3.4.2 Rovnováha Rovnováha u centrální rovinné silové soustavy nastává v případě, že výsledná síla nahrazující soustavu je rovna nule. Tedy. Obr.17. Obr.17. F F 1x = F.cos α1,..., Fnx = F. cos 1y = F.sin α1,..., Fny = F. sin α α n n. Původní soustava je nyní nahrazena děma soustavami sil ve směru osy x a ve směru osy y. Tutu soustavu nahradíme dvěma

Více

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např. Matice přechodu Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např. u příkladu 7 (v ) dostaneme: Nyní bychom mohli postupovat jako u matice homomorfismu

Více

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ OBOR GEODÉZIE A KARTOGRAFIE KATEDRA VYŠŠÍ GEODÉZIE název předmětu úloha/zadání název úlohy Vyšší geodézie 1 2/3 GPS - Výpočet drah družic školní rok

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ PRŮVODCE GB01-P03 MECHANIKA TUHÝCH TĚLES

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ PRŮVODCE GB01-P03 MECHANIKA TUHÝCH TĚLES VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STAVEBNÍ Prof. RNDr. Zdeněk Chobola,CSc., Vlasta Juránková,CSc. FYZIKA PRŮVODCE GB01-P03 MECHANIKA TUHÝCH TĚLES STUDIJNÍ OPORY PRO STUDIJNÍ PROGRAMY S KOMBINOVANOU

Více

Dokumentace programu piskvorek

Dokumentace programu piskvorek Dokumentace programu piskvorek Zápočtového programu z Programování II PRM045 Ondřej Vostal 20. září 2011, Letní semestr, 2010/2011 1 Stručné zadání Napsat textovou hru piškvorky se soupeřem s umělou inteligencí.

Více

OPTIMALIZACE A MULTIKRITERIÁLNÍ HODNOCENÍ FUNKČNÍ ZPŮSOBILOSTI POZEMNÍCH STAVEB D24FZS

OPTIMALIZACE A MULTIKRITERIÁLNÍ HODNOCENÍ FUNKČNÍ ZPŮSOBILOSTI POZEMNÍCH STAVEB D24FZS OPTIMALIZACE A MULTIKRITERIÁLNÍ HODNOCENÍ FUNKČNÍ ZPŮSOBILOSTI POZEMNÍCH STAVEB Optimalizace a multikriteriální hodnocení funkční způsobilosti pozemních staveb Anotace: Optimalizace objektů pozemních staveb

Více

Manuál k programu IDP 1.0

Manuál k programu IDP 1.0 Příloha B Manuál k programu IDP 1.0 Toto je manuál k programu IDP - Interakční diagram průřezu 1.0, který byl vytvořen v rámci této diplomové práce za podpory grantu Studentské grantové soutěže ČVUT v

Více

Parametrické programování

Parametrické programování Parametrické programování Příklad 1 Parametrické pravé strany Firma vyrábí tři výrobky. K jejich výrobě potřebuje jednak surovinu a jednak stroje, na kterých dochází ke zpracování. Na první výrobek jsou

Více

24.11.2009 Václav Jirchář, ZTGB

24.11.2009 Václav Jirchář, ZTGB 24.11.2009 Václav Jirchář, ZTGB Síťová analýza 50.let V souvislosti s potřebou urychlit vývoj a výrobu raket POLARIS v USA při závodech ve zbrojení za studené války se SSSR V roce 1958 se díky aplikaci

Více

Zadání soutěžních úloh

Zadání soutěžních úloh Zadání soutěžních úloh Kategorie mládež Soutěž v programování 25. ročník Krajské kolo 2010/2011 15. až 16. dubna 2011 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za

Více

Kritický stav jaderného reaktoru

Kritický stav jaderného reaktoru Kritický stav jaderného reaktoru Autoři: L. Homolová 1, L. Jahodová 2, J. B. Hejduková 3 Gymnázium Václava Hlavatého Louny 1, Purkyňovo gymnázium Strážnice 2, SPŠ Stavební Plzeň 3 jadracka@centrum.cz Abstrakt:

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Úlohy nad rastrovými daty Daniela

Více

Funkce. Definiční obor a obor hodnot

Funkce. Definiční obor a obor hodnot Funkce Definiční obor a obor hodnot Opakování definice funkce Funkce je předpis, který každému číslu z definičního oboru, který je podmnožinou množiny všech reálných čísel R, přiřazuje právě jedno reálné

Více

20. května Abstrakt V následujícím dokumentu je popsán způsob jakým analyzovat problém. výstřelu zasáhnout bod na zemi v definované vzdálenosti.

20. května Abstrakt V následujícím dokumentu je popsán způsob jakým analyzovat problém. výstřelu zasáhnout bod na zemi v definované vzdálenosti. Ukázková semestrální práce z předmětu VSME Tomáš Kroupa 20. května 2014 Abstrakt V následujícím dokumentu je popsán způsob jakým analyzovat problém lučištníka, který má při pevně daném natažení luku jen

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

4. Napjatost v bodě tělesa

4. Napjatost v bodě tělesa p04 1 4. Napjatost v bodě tělesa Předpokládejme, že bod C je nebezpečným bodem tělesa a pro zabránění vzniku mezních stavů je m.j. třeba zaručit, že napětí v tomto bodě nepřesáhne definované mezní hodnoty.

Více

IB112 Základy matematiky

IB112 Základy matematiky IB112 Základy matematiky Řešení soustavy lineárních rovnic, matice, vektory Jan Strejček IB112 Základy matematiky: Řešení soustavy lineárních rovnic, matice, vektory 2/53 Obsah Soustava lineárních rovnic

Více

Filip Hroch. Astronomické pozorování. Filip Hroch. Výpočet polohy planety. Drahové elementy. Soustava souřadnic. Pohyb po elipse

Filip Hroch. Astronomické pozorování. Filip Hroch. Výpočet polohy planety. Drahové elementy. Soustava souřadnic. Pohyb po elipse ÚTFA,Přírodovědecká fakulta MU, Brno, CZ březen 2005 březnového tématu Březnové téma je věnováno klasické sférické astronomii. Úkol se skládá z měření, výpočtu a porovnání výsledků získaných v obou částech.

Více

Detekce a prevence podvodů Optimalizace dopravy paliva

Detekce a prevence podvodů Optimalizace dopravy paliva Detekce a prevence podvodů Optimalizace dopravy paliva Nabídka společnosti na dodávku a implementaci řešení pro detekci a prevenci podvodů při distribuci PHM a optimalizaci dopravy paliva na čerpací stanice

Více

Jasové transformace. Karel Horák. Rozvrh přednášky:

Jasové transformace. Karel Horák. Rozvrh přednášky: 1 / 23 Jasové transformace Karel Horák Rozvrh přednášky: 1. Úvod. 2. Histogram obrazu. 3. Globální jasová transformace. 4. Lokální jasová transformace. 5. Bodová jasová transformace. 2 / 23 Jasové transformace

Více

CS WAVE Virtuální pracovní stůl svařování Malá verze Manuál uživatele

CS WAVE Virtuální pracovní stůl svařování Malá verze Manuál uživatele CS WAVE Virtuální pracovní stůl svařování Malá verze Manuál uživatele Version 4.0 14/04/2010 1 Tato příručka slouží všem uživatelům bez ohledu na jejich pracovní pozici a popisuje funkce, které poskytuje

Více

GEODETICKÉ VÝPOČTY I.

GEODETICKÉ VÝPOČTY I. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 2.ročník GEODETICKÉ VÝPOČTY I. TABELACE FUNKCE LINEÁRNÍ INTERPOLACE TABELACE FUNKCE Tabelace funkce se v minulosti často využívala z důvodu usnadnění

Více

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1 Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

Kreslení elipsy Andrej Podzimek 22. prosince 2005

Kreslení elipsy Andrej Podzimek 22. prosince 2005 Kreslení elipsy Andrej Podzimek 22. prosince 2005 Kreslení elipsy v obecné poloze O co půjde Ukázat přesný matematický model elipsy Odvodit vzorce pro výpočet souřadnic důležitých bodů Nalézt algoritmus

Více

Klínové plochy. Gymnázium Christiana Dopplera, Zborovská 45, Praha 5 ROČNÍKOVÁ PRÁCE

Klínové plochy. Gymnázium Christiana Dopplera, Zborovská 45, Praha 5 ROČNÍKOVÁ PRÁCE Gymnázium Christiana Dopplera, Zborovská 45, Praha 5 ROČNÍKOVÁ PRÁCE Klínové plochy Vypracoval: Vojtěch Kolář Třída: 4.C Školní rok:2013/2014 Seminář: Deskriptivní geometrie Prohlašuji, že jsem svou ročníkovou

Více

Lingebraické kapitolky - Analytická geometrie

Lingebraické kapitolky - Analytická geometrie Lingebraické kapitolky - Analytická geometrie Jaroslav Horáček KAM MFF UK 2013 Co je to vektor? Šipička na tabuli? Ehm? Množina orientovaných úseček majících stejný směr. Prvek vektorového prostoru. V

Více

Metody síťové analýzy

Metody síťové analýzy Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický

Více

Statistické vyhodnocení průzkumu funkční gramotnosti žáků 4. ročníku ZŠ

Statistické vyhodnocení průzkumu funkční gramotnosti žáků 4. ročníku ZŠ Statistické vyhodnocení průzkumu funkční gramotnosti žáků 4. ročníku ZŠ Ing. Dana Trávníčková, PaedDr. Jana Isteníková Funkční gramotnost je používání čtení a psaní v životních situacích. Nejde jen o elementární

Více

Opatření děkana č. 1/2012 Pokyny pro vypracování bakalářských, diplomových a rigorózních prací na Přírodovědecké fakultě MU

Opatření děkana č. 1/2012 Pokyny pro vypracování bakalářských, diplomových a rigorózních prací na Přírodovědecké fakultě MU Opatření děkana č. 1/2012 Pokyny pro vypracování bakalářských, diplomových a rigorózních prací na Přírodovědecké fakultě MU Bakalářské, diplomové a rigorózní práce odevzdávané k obhajobě na Přírodovědecké

Více

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node State Space Search Po spuštění appletu se na pracovní ploše zobrazí stavový prostor první předpřipravené úlohy: - Zeleným kroužkem je označen počáteční stav úlohy, který nemůže být změněn. - Červeným kroužkem

Více

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17 Mgr. Tomáš Kotler I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17 VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 Je dán rovinný obrazec, v obrázku vyznačený barevnou výplní, který představuje

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá

Více

Operační výzkum. Vícekriteriální hodnocení variant. Grafická metoda. Metoda váženého součtu.

Operační výzkum. Vícekriteriální hodnocení variant. Grafická metoda. Metoda váženého součtu. Operační výzkum Vícekriteriální hodnocení variant. Grafická metoda. Metoda váženého součtu. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu

Více