faudes::ProposingExecutor Class Reference
[Simulator Plugin]

#include <sp_plpexecutor.h>

Inheritance diagram for faudes::ProposingExecutor:

faudes::LoggingExecutor faudes::ParallelExecutor faudes::Type faudes::DeviceExecutor List of all members.

Detailed Description

Executer that proposes which transition to execute.

Priority and Stochastic Semantics

Whilst the LoggingExecutor (and all lower level executors) is aware of which transitions are enabled, the ProposingExecutor actually proposes either one particular transition for execution or a particular amount of time to let pass. The proposal refers to additional semantics parametrised by data from SimEventAttribute. The decision procedure is organized in four stages, were the first stage that yields a proposal wins:

1.) SimPriorityEventAttribute, positive priority

2.) SimStochasticEventAttribute, stochastic timing

3.) passing by time

4.) SimPriorityEventAttribute, negative priority

Note that the above procedure will never come up with a proposal that fails to satisfy invariant and guard conditions. In this sense, the above procedure is compliant with Alur semantics of timed automata.

If the above procedure fails to indicate a transition to execute or time to let pass, the system is deadlocked. If the procedure sticks with case 3) and infinite duration, it might be either life locked (no enabled events) or just unwilling/unable to execute a negative priority event. The latter case can be used for sensor events in a hardware-in-the-loop simulation.

Scheduling Stochastic Events

The mechnism to schedule events with stochastic timing comes in three flavors.

Note that type Extern or Delay schedules can disable the respective event in a way that potentially leads to blocking behaviour even if the timed automata is non-blocking by Alur semantics. This is a consequence of the fact that both types model additional phenomena that are synchronized with the timed automata, and it is perferctly reasonable that this synchronisation introduces blocking situations. In contrast, events of type Trigger are not affected by the blocking issue provided that guards lie within the respective invariant.

File IO

For token IO, the ProposingExecutor reads and writes a section with default label "Executor". It contains a ParallelExecutor section to define a vector of generators, a SimConditionSet section to define relevant conditions, and a SimEventSet section to define the above event attributes. Example:

 <Executor> 
 <Generators> 
 "./some_generator.gen"
 "./other_generator.gen" 
 </Generators> 
 <Conditions> 
 ...
 ...
 </Conditions> 
 <SimEventAttributes> 
 ...
 ...
 </SimEventAttributes> 
 </Executor> 

Technical detail: since the trace buffer only covers the dynamic state of the parallel executor, the RevertToStep method cannot recover the stochastic event states. Including stochastic states with the trace buffer is considered to expensive.

Definition at line 139 of file sp_plpexecutor.h.

Public Member Functions

Constructors & Destructor
 ProposingExecutor ()
 Creates an emtpy ProposingExecutor.
Simulation Event Attributes
const SimEventAttributeEventAttribute (Idx index) const
 Simulation event attribute lookup.
void EventAttribute (Idx index, const SimEventAttribute &rAttr)
 Set simulation event attribute.
void Alphabet (const sEventSet &rAlphabet)
 Set all simulation event attributes.
const sEventSetAlphabet (void) const
 Access alphabet (incl simulation event attributes).
Execution Proposal
TimedEvent ExecuteNextTransition ()
 Execute next transition.
const TimedEventProposeNextTransition ()
 Propose next transition.
std::string EventStatesToString (void) const
 Inspect stochastic event states (debugging).
Re-implemenented from ParallelExecutor
virtual void Reset (long int seed=0)
 Reset the ProposingExecutor.
virtual void Clear (void)
 Clear all data (generators, simulation attributes etc).
bool ExecuteTime (tpTime::Type duration)
 Execute time duration.
bool ExecuteEvent (Idx event)
 Execute event.
bool ExecuteTransition (const TimedEvent &tevent)
 Execute event by transition.
bool RevertToStep (Idx step)
 Revert executor to past step.

Private Member Functions

void ResetProposer (long int seed=0)
 Reset stochastic state of events.
tpTime::Type Schedule (Idx event, SimEventAttribute *pattr)
 Evaluate random variable to schedule event.
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Reads proposing executor from TokenReader, see also public wrappers Type::Read.
virtual void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write to TokenWriter, see also public wrappers Type::Write.

Private Attributes

sEventSet mSimEvents
 Simulation event attributes, incl stochastic and priority data.
bool mPValid
 Valid proposal available.
TimedEvent mProposal
 Available proposal.


Constructor & Destructor Documentation

faudes::ProposingExecutor::ProposingExecutor  ) 
 

Creates an emtpy ProposingExecutor.

Definition at line 19 of file sp_plpexecutor.cpp.


Member Function Documentation

const sEventSet& faudes::ProposingExecutor::Alphabet void   )  const [inline]
 

Access alphabet (incl simulation event attributes).

Reimplemented from faudes::ParallelExecutor.

Definition at line 205 of file sp_plpexecutor.h.

void faudes::ProposingExecutor::Alphabet const sEventSet rAlphabet  ) 
 

Set all simulation event attributes.

Any previous attributes are removed. Any events not in rAlphabet become the default attribute attached (which is priority 0) Requires Reset().

Parameters:
rAlphabet EventSet with SimEventAttrute data

Definition at line 43 of file sp_plpexecutor.cpp.

void faudes::ProposingExecutor::Clear void   )  [virtual]
 

Clear all data (generators, simulation attributes etc).

Reimplemented from faudes::LoggingExecutor.

Reimplemented in faudes::DeviceExecutor.

Definition at line 25 of file sp_plpexecutor.cpp.

void faudes::ProposingExecutor::DoRead TokenReader rTr,
const std::string &  rLabel = "",
const Type pContext = 0
[private, virtual]
 

Reads proposing executor from TokenReader, see also public wrappers Type::Read.

Parameters:
rTr TokenReader to read from
rLabel Section to read, defaults to "LoggingExecutor"
pContext Read context to provide contextual information (ignored)
Exceptions:
Exception 
  • non-deterministic generator(s) (id 501)
  • token mismatch (id 502)
  • IO error (id 1)

Reimplemented from faudes::LoggingExecutor.

Definition at line 603 of file sp_plpexecutor.cpp.

void faudes::ProposingExecutor::DoWrite TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0
const [private, virtual]
 

Write to TokenWriter, see also public wrappers Type::Write.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write, defaults to "LoggingExecutor"
pContext Write context to provide contextual information (ignored)
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::LoggingExecutor.

Definition at line 591 of file sp_plpexecutor.cpp.

void faudes::ProposingExecutor::EventAttribute Idx  index,
const SimEventAttribute rAttr
 

Set simulation event attribute.

Requires Reset().

Parameters:
index Event index
rAttr New attribute
Exceptions:
Exception Index not found in EventSymbolMap (id 42)

Definition at line 38 of file sp_plpexecutor.cpp.

const SimEventAttribute & faudes::ProposingExecutor::EventAttribute Idx  index  )  const
 

Simulation event attribute lookup.

Parameters:
index 
Returns:
reference to attribute

Definition at line 33 of file sp_plpexecutor.cpp.

std::string faudes::ProposingExecutor::EventStatesToString void   )  const
 

Inspect stochastic event states (debugging).

return EventInfoMap string

Definition at line 83 of file sp_plpexecutor.cpp.

bool faudes::ProposingExecutor::ExecuteEvent Idx  event  )  [virtual]
 

Execute event.

Returns:
True on success

Reimplemented from faudes::LoggingExecutor.

Reimplemented in faudes::DeviceExecutor.

Definition at line 154 of file sp_plpexecutor.cpp.

TimedEvent faudes::ProposingExecutor::ExecuteNextTransition  ) 
 

Execute next transition.

Choose the transition to execute by priorities and stochastic properties.

Returns:
Executed TimedEvent

Definition at line 416 of file sp_plpexecutor.cpp.

bool faudes::ProposingExecutor::ExecuteTime tpTime::Type  duration  )  [virtual]
 

Execute time duration.

Returns:
True on success

Reimplemented from faudes::LoggingExecutor.

Definition at line 109 of file sp_plpexecutor.cpp.

bool faudes::ProposingExecutor::ExecuteTransition const TimedEvent tevent  ) 
 

Execute event by transition.

Returns:
True on success

Definition at line 235 of file sp_plpexecutor.cpp.

const TimedEvent & faudes::ProposingExecutor::ProposeNextTransition  ) 
 

Propose next transition.

Propose a transition to execute by priorities and stochastic properties.

Returns:
Proposed TimedEvent

Definition at line 248 of file sp_plpexecutor.cpp.

void faudes::ProposingExecutor::Reset long int  seed = 0  )  [virtual]
 

Reset the ProposingExecutor.

This includes a reset of the ParallelExecutor and the simulation event states.

Parameters:
seed Seed for random generator, 0<>system time

Reimplemented in faudes::DeviceExecutor.

Definition at line 73 of file sp_plpexecutor.cpp.

void faudes::ProposingExecutor::ResetProposer long int  seed = 0  )  [private]
 

Reset stochastic state of events.

Definition at line 51 of file sp_plpexecutor.cpp.

bool faudes::ProposingExecutor::RevertToStep Idx  step  )  [virtual]
 

Revert executor to past step.

This will revert only the executor dynamic state (incl clock values, current time). The condition and event states, however, will not be reverted.

Returns:
True on success

Reimplemented from faudes::LoggingExecutor.

Definition at line 645 of file sp_plpexecutor.cpp.

tpTime::Type faudes::ProposingExecutor::Schedule Idx  event,
SimEventAttribute pattr
[private]
 

Evaluate random variable to schedule event.

Referring to the specified stochastic attribute, take a random sample to schedule the next occurence of the event. The result is given as return value and is also recorded in the simulation state of the event attribute.

Parameters:
event Event to schedule, by index
pattr Pointer to event attribute
Returns:
Time of next event occurrence

Definition at line 460 of file sp_plpexecutor.cpp.


Member Data Documentation

TimedEvent faudes::ProposingExecutor::mProposal [private]
 

Available proposal.

Definition at line 326 of file sp_plpexecutor.h.

bool faudes::ProposingExecutor::mPValid [private]
 

Valid proposal available.

Definition at line 321 of file sp_plpexecutor.h.

sEventSet faudes::ProposingExecutor::mSimEvents [private]
 

Simulation event attributes, incl stochastic and priority data.

Definition at line 316 of file sp_plpexecutor.h.


The documentation for this class was generated from the following files:
Generated on Mon Nov 10 08:13:18 2008 for libFAUDES 2.11v by  doxygen 1.4.4