next up previous contents
Next: Třída BoolCondition Up: Kombinovaná simulace Previous: Kombinovaná simulace

Stavové podmínky a stavové události

Reakce na změny ve spojité části modelu jsou popsány formou stavových podmínek a stavových událostí. Stavová podmínka může být specifikována například booleovským výrazem. Akci, která je podmíněna změnou pravdivostní hodnoty stavové podmínky, nazveme stavová událost. Příkladem může být událost, která má nastat při překročení nastavené maximální teploty místnosti v modelu automaticky řízeného vytápění domu.

V C++ lze stavové podmínky implementovat třídami, které definují chování objektů - bloků citlivých na změnu vstupu. Vstupem takového bloku může být booleovský výraz. Pro zjištění času změny vstupní hodnoty takových podmínek lze proto použít pouze metodu půlení intervalu, tj. zkracování kroku integrace na polovinu. Existují i jiné metody, například metoda Regula-Falsi, ty však vyžadují spojitý vstup podmínky.

Můžeme také požadovat, aby stavová podmínka byla citlivá pouze na některé změny pravdivostní hodnoty vstupu (například pouze na změnu FALSE na TRUE, případně na překročení mezní hodnoty směrem nahoru). Protože C++ nedefinuje speciální Booleovský typ, používá se místo něj typ int. Pravdivostní hodnota TRUE potom odpovídá nenulové hodnotě typu int, pravdivostní hodnota FALSE odpovídá nulové hodnotě.

Při numerické integraci, kdy výpočet probíhá po krocích, nemusí dojít k detekci některých stavových událostí. Tato situace nastane v případě, že krok integrace je příliš dlouhý a dojde při něm k 'překročení' několika změn stavových podmínek. Podobný problém může nastat v důsledku nepřesnosti numerické integrace, kdy při nevhodně zvolené podmínce nemusí dojít k její změně a tím k vyvolání požadované události.





Petr Peringer
Mon Dec 8 13:24:19 CET 1997