timetable.data
Class Activity

java.lang.Object
  |
  +--timetable.data.Activity

public class Activity
extends java.lang.Object

Reprezentece jedné aktivity v rozvrhovacím problému.
Má také metody pro přidání a odebrání aktivity z rozvrhu, kontrolu splnění závislostí, zjišťování počtu a seznamu možných umístění v rozvrhu či výpočet počtu kolidujících aktivit při zvolení daného umístění.


Field Summary
 ActivityResources bestSelectedResources
          Nejlepší nalezený rozvrh: požadované zdroje
 int bestStart
          Nejlepší nalezený rozvrh: začátek aktivity
 boolean canReschedule
          Lze již naplánovanou aktivitu přeplánovat ?
protected  Config config
          Globální konfigurace rozvrhovače.
 Activity lastRemovedBy
          Pro plánování, eviduje která aktivita tuto aktivitu naposledy vyhodila z rozvrhu.
 ActivityResources lastSelectedResources
          Vstupní rozvrh: požadované zdroje
 int lastStart
          Vstupní rozvrh: začátek aktivity
 int length
          Délka trvání aktivity.
 java.lang.String name
          Jméno aktivity.
 java.lang.String note
          Poznámka.
 int nrRemoves
          Kolikrát byla aktivita při plánování vyhozena z rozvrhu.
protected  TimePreference preference
          Časové preference aktivity - soft a hard podmínky na jednotlivé časové sloty.
 ActivityResources resources
          Zdroje, které aktivita může využívat.
 ActivityResources selectedResources
          Zdroje, které aktivita využívá, je-li naplánovaná.
static int SHORT_CUT_MAX_LENGTH
          Maximální délka zkratky jména.
 java.lang.String shortCut
          Několika písmená zkratka jména aktivity, pro zobrazení.
 int start
          Naplánovaný začátek aktivity.
 
Constructor Summary
Activity(Config config)
          Konstruktor.
Activity(Config config, java.lang.String name, int length)
          Konstruktor.
Activity(Config config, java.lang.String shortCut, java.lang.String name, java.lang.String note, int length)
          Konstruktor.
 
Method Summary
 boolean canScheduleAt(int slot, ActivityDependenceGroup dependences)
          Zjišťuje, zda-li lze aktivitu naplánovat od daného časového slotu.
 boolean canScheduleWithoutCollisionAt(int slot, ActivityDependenceGroup dependences)
          Zjišťuje, zda-li lze aktivitu naplánovat do daného časového slotu bez kolize.
 int countSchedule(ActivityDependenceGroup dependences)
          Zjišťuje počet časových slotů, kam lze aktivita naplánovat (i když spůsobí kolizi).
 int countScheduleWithoutCollision(ActivityDependenceGroup dependences)
          Zjišťuje, počet míst, kam lze aktivita bez kolize naplánovat.
 int countScheduleWithoutCollisionAt(int slot, ActivityDependenceGroup dependences)
          Zjišťuje, počet míst, kam lze aktivita v daném čase naplánovat bez kolize.
 TimePreference getPreference()
          Vrátí tabulku časových preferencí
 boolean isConsistent(ActivityDependenceGroup dependences)
          Zjišťuje konzistenci naplánování aktivity.
 boolean isScheduled()
          Zjišťuje, zda-li je aktivita již naplánovaná.
protected static Activity read(java.io.ObjectInputStream in, Config config, ResourceGroup allResources)
          Načtení aktivity z streamu objektů.
 void remove(Activity removedBy)
          Odebrání aktivity z rozvrhu.
 void reset()
          Inicializace pomocných proměnných před dalším plánováním.
 void setPreference(TimePreference preference)
          Nastaví tabulku časových preferencí
 void schedule(int slot, ActivityResources selectedResorces)
          Naplánování aktivity.
protected  void write(java.io.ObjectOutputStream out, ResourceGroup allResources)
          Zápis aktivity do objektového streamu.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SHORT_CUT_MAX_LENGTH

public static int SHORT_CUT_MAX_LENGTH
Maximální délka zkratky jména.

config

protected Config config
Globální konfigurace rozvrhovače.

shortCut

public java.lang.String shortCut
Několika písmená zkratka jména aktivity, pro zobrazení.

name

public java.lang.String name
Jméno aktivity.

length

public int length
Délka trvání aktivity.

note

public java.lang.String note
Poznámka.

preference

protected TimePreference preference
Časové preference aktivity - soft a hard podmínky na jednotlivé časové sloty.

resources

public ActivityResources resources
Zdroje, které aktivita může využívat. Jde o množinu skupin zdrojů.

start

public int start
Naplánovaný začátek aktivity. Pokud je aktivita nenaplánovaná je hodnota této proměnné -1.

selectedResources

public ActivityResources selectedResources
Zdroje, které aktivita využívá, je-li naplánovaná. Proměnná musí mít stejnou strukturu, jako proměnná resources. V případě skupiny alternativních zdrojů, zde tato skupina obsahuje pouze jeden zdroj.

lastStart

public int lastStart
Vstupní rozvrh: začátek aktivity

lastSelectedResources

public ActivityResources lastSelectedResources
Vstupní rozvrh: požadované zdroje

bestStart

public int bestStart
Nejlepší nalezený rozvrh: začátek aktivity

bestSelectedResources

public ActivityResources bestSelectedResources
Nejlepší nalezený rozvrh: požadované zdroje

lastRemovedBy

public Activity lastRemovedBy
Pro plánování, eviduje která aktivita tuto aktivitu naposledy vyhodila z rozvrhu.

canReschedule

public boolean canReschedule
Lze již naplánovanou aktivitu přeplánovat ? (Tedy odebrat z rozvrhu a zařadit na jiné místo.)

nrRemoves

public int nrRemoves
Kolikrát byla aktivita při plánování vyhozena z rozvrhu. Proměnná pomáhá určit nejvíce vadící (nejhůře naplánovatelné) aktivity. Při spuštění řešiče se vždy vynuluje.
Constructor Detail

Activity

public Activity(Config config,
                java.lang.String shortCut,
                java.lang.String name,
                java.lang.String note,
                int length)
         throws TimetableException
Konstruktor.
Parameters:
config - konfigurace
shortCut - unikátní zkrácené jmnéno aktivity - pro vizualizaci rozvrhu
name - jméno aktivity
note - poznámka
length - délka trvání aktivity

Activity

public Activity(Config config,
                java.lang.String name,
                int length)
         throws TimetableException
Konstruktor.
Parameters:
config - konfigurace
name - jméno aktivity
length - délka trvání aktivity

Activity

public Activity(Config config)
         throws TimetableException
Konstruktor.
Parameters:
config - konfigurace
Method Detail

reset

public void reset()
Inicializace pomocných proměnných před dalším plánováním. Automaticky voláno rozvrhovačem. Jde o vynulování počtu vyhození a aktivyty, která naposled tuto aktivitu vyhodila z rozvrhu

isScheduled

public boolean isScheduled()
Zjišťuje, zda-li je aktivita již naplánovaná.
Returns:
true pokud je aktivita naplánovaná

getPreference

public TimePreference getPreference()
Vrátí tabulku časových preferencí
Returns:
tabulka časových preferencí

setPreference

public void setPreference(TimePreference preference)
Nastaví tabulku časových preferencí
Parameters:
preference - tabulka časových preferencí

remove

public void remove(Activity removedBy)
Odebrání aktivity z rozvrhu. Tedy nastavení začátku na -1 a její odebrání z časových tabulek zdrojů
Parameters:
removedBy - aktivita, kvůli které se tato aktivita odebírá

schedule

public void schedule(int slot,
                     ActivityResources selectedResorces)
Naplánování aktivity. Tedy nastavení jejího začátku a propagace alokace jednotlivých časových slotů do časových tabulek vybraných zdrojů.
Všechny konfliktní aktivity již musí být odebrány !!!
Parameters:
slot - nový začátek aktivity - časový slot
selectedResources - vybrané zdroje

isConsistent

public boolean isConsistent(ActivityDependenceGroup dependences)
                     throws TimetableException
Zjišťuje konzistenci naplánování aktivity. Jmenovitě:
Parameters:
dependencies - časové závislosti mezi aktivitami, null pokud nemají být kontrolovány
Returns:
true pokud je vše v pořádku

canScheduleAt

public boolean canScheduleAt(int slot,
                             ActivityDependenceGroup dependences)
                      throws TimetableException
Zjišťuje, zda-li lze aktivitu naplánovat od daného časového slotu. Tedy zda-li existují zdroje, které nemají HARD podmínku v daných slotech. A zdali neexistuje podmínka mezi aktivitami, která by byla porušena a druhá z aktivit by nešla odebrat.
Parameters:
slot - začátek aktivity, pro který je údaj zjišťován
dependencies - časové závislosti mezi aktivitami, null pokud nemají být uvažovány
Returns:
true pokud lze aktivita v daném čase naplánovat.

canScheduleWithoutCollisionAt

public boolean canScheduleWithoutCollisionAt(int slot,
                                             ActivityDependenceGroup dependences)
                                      throws TimetableException
Zjišťuje, zda-li lze aktivitu naplánovat do daného časového slotu bez kolize.
Parameters:
slot - začátek aktivity, pro který je údaj zjišťován
dependencies - časové závislosti mezi aktivitami, null pokud nemají být uvažovány
Returns:
true pokud lze aktivita v daném čase naplánovat bez kolize s jinou aktivitou.

countScheduleWithoutCollisionAt

public int countScheduleWithoutCollisionAt(int slot,
                                           ActivityDependenceGroup dependences)
                                    throws TimetableException
Zjišťuje, počet míst, kam lze aktivita v daném čase naplánovat bez kolize.
Parameters:
slot - začátek aktivity, pro který je údaj zjišťován
dependencies - časové závislosti mezi aktivitami, null pokud nemají být uvažovány
Returns:
počet míst, kam lze aktivita v daném čase naplánovat bez kolize s jinou aktivitou.

countScheduleWithoutCollision

public int countScheduleWithoutCollision(ActivityDependenceGroup dependences)
                                  throws TimetableException
Zjišťuje, počet míst, kam lze aktivita bez kolize naplánovat. (Projde všechny sloty)
Parameters:
dependencies - časové závislosti mezi aktivitami, null pokud nemají být uvažovány
Returns:
počet míst, kam lze aktivita naplánovat bez kolize s jinou aktivitou.

countSchedule

public int countSchedule(ActivityDependenceGroup dependences)
                  throws TimetableException
Zjišťuje počet časových slotů, kam lze aktivita naplánovat (i když spůsobí kolizi).
Parameters:
dependencies - časové závislosti mezi aktivitami, null pokud nemají být uvažovány
Returns:
počet slotů, kam lze aktivita naplánovat

write

protected void write(java.io.ObjectOutputStream out,
                     ResourceGroup allResources)
              throws java.io.IOException
Zápis aktivity do objektového streamu. Nutným parametrem je množina všech zdrojů, ukládané zdroje jsou totiž kódovány jako pořadí v této množině. Předchozí umístění a nejlepší nalezené umístění není zapisováno.
Parameters:
out - stream
alResources - množina všech zdrojů

read

protected static Activity read(java.io.ObjectInputStream in,
                               Config config,
                               ResourceGroup allResources)
                        throws java.io.IOException,
                               java.lang.ClassNotFoundException,
                               TimetableException
Načtení aktivity z streamu objektů.
Parameters:
in - stream
config - globální konfigurace
allResources - množina všech zdrojů
Returns:
načtená aktivita