Observer Plugin
[Plugins]


Detailed Description

Overview

This plugin offers algorithms for the verification and synthesis of natural projections that are observers according to

K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004.

and that fulfill the output control consistency (OCC) or local control consistency (LCC) condition for maximally permissive hierarchical control according to

K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

License

The observer plugin is distributed with libFAUDES and under the terms of the LGPL


Functions

void faudes::calcBisimulation (Generator &rGenOrig, map< Idx, Idx > &rMapStateToPartition, Generator &rGenPart, vector< Idx > &rNewPartitions)
 Computation of a bisimulation over a given generator.
void faudes::calcBisimulation (Generator &rGenOrig, map< Idx, Idx > &rMapStateToPartition, vector< Idx > &rNewPartitions)
 Computation of a bisimulation over a given generator.
bool faudes::MutualControllability (const cGenerator &rGen1, const cGenerator &rGen2)
 Verification of mutual controllability.
void faudes::calcAbstAlphObs (cGenerator &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, map< Idx, set< Idx > > &rMapRelabeledEvents)
 Lm-observer computation.
void faudes::calcAbstAlphObsOCC (cGenerator &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, map< Idx, set< Idx > > &rMapRelabeledEvents)
 Lm-observer computation including output control consistency (OCC).
void faudes::calcAbstAlphObsLCC (cGenerator &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, map< Idx, set< Idx > > &rMapRelabeledEvents)
 Lm-observer computation including local control consistency (LCC).
bool faudes::IsObs (const Generator &rLowGen, const EventSet &rHighAlph)
 Verification of the observer property.
bool faudes::IsOCC (const cGenerator &rLowGen, const EventSet &rHighAlph)
 Verification of output control consistency (OCC).
bool faudes::IsLCC (const cGenerator &rLowGen, const EventSet &rHighAlph)
 Verification of local control consistency (LCC).


Function Documentation

void faudes::calcAbstAlphObs cGenerator rGenObs,
EventSet rHighAlph,
EventSet rNewHighAlph,
map< Idx, set< Idx > > &  rMapRelabeledEvents
 

Lm-observer computation.

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator. This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an Lm-observer

Original generator
ex_observer_all.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObs(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, aNewHLevent_1, eNewHLevent_1, hNewHLevent_1
ex_synthesis_observer_result.png

Definition at line 37 of file op_observercomputation.cpp.

void faudes::calcAbstAlphObsLCC cGenerator rGenObs,
EventSet rHighAlph,
EventSet rNewHighAlph,
map< Idx, set< Idx > > &  rMapRelabeledEvents
 

Lm-observer computation including local control consistency (LCC).

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator and at the same time fulfills the local control consistency condition (LCC). This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004. with an extension to LCC as indicated in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an Lm-observer with local control consistency (LCC)

Original generator
ex_observer_all.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObsLCC(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, d, f, h, aNewHLevent_2, bNewHLevent_1, cNewHLevent_1, eNewHLevent_2, hNewHLevent_2
ex_synthesis_lcc_result.png

Definition at line 527 of file op_observercomputation.cpp.

void faudes::calcAbstAlphObsOCC cGenerator rGenObs,
EventSet rHighAlph,
EventSet rNewHighAlph,
map< Idx, set< Idx > > &  rMapRelabeledEvents
 

Lm-observer computation including output control consistency (OCC).

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator and at the same time fulfills the output control consistency condition (OCC). This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004. with an extension to OCC as indicated in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an Lm-observer with output control consistency (OCC)

Original generator
ex_observer_all.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObsOCC(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, d, f, h, aNewHLevent_3, bNewHLevent_2, cNewHLevent_2, eNewHLevent_3
ex_synthesis_occ_result.png

Definition at line 261 of file op_observercomputation.cpp.

void faudes::calcBisimulation Generator rGenOrig,
map< Idx, Idx > &  rMapStateToPartition,
vector< Idx > &  rNewPartitions
 

Computation of a bisimulation over a given generator.

This funcion reates an instance of the class Bisimulation and starts the computation of the coarsest quasi-congruence on the given generator by calling the function Bisimulation::partition. See J.-C. Fernandez, “An implementation of an efficient algorithm for bisimulation equivalence,” Science of Computer Programming, vol. 13, pp. 219-236, 1990 for further details.

Parameters:
rGenOrig Original generator
rMapStateToPartition Maps each state to its equivalence class
rNewPartitions Holds the indices of all equivalence classes

Definition at line 51 of file op_bisimulation.cpp.

void faudes::calcBisimulation Generator rGenOrig,
map< Idx, Idx > &  rMapStateToPartition,
Generator rGenPart,
vector< Idx > &  rNewPartitions
 

Computation of a bisimulation over a given generator.

This funcion reates an instance of the class Bisimulation and starts the computation of the coarsest quasi-congruence on the given generator by calling the function Bisimulation::partition. A generator representing the result of the computation is generated.

Parameters:
rGenOrig Original generator
rMapStateToPartition Maps each state to its equivalence class
rGenPart Quotient automaton representing the result of the computation. Each state corresponds to an equivalence class
rNewPartitions Holds the indices of all equivalence classes

Definition at line 35 of file op_bisimulation.cpp.

bool faudes::IsLCC const cGenerator rLowGen,
const EventSet rHighAlph
 

Verification of local control consistency (LCC).

For verifying if a natural projection fulfills the local control consistency condition, a backward reachability is conducted. If starting from a state, where an uncontrollable high-level event is feasible, at least one local state cannot be reached by an uncontrollable path, LCC is violated.

Parameters:
rLowGen Input cGenerator
rHighAlph High level alphabet
Returns:
true if LCC holds

Definition at line 134 of file op_obserververification.cpp.

bool faudes::IsObs const Generator rLowGen,
const EventSet rHighAlph
 

Verification of the observer property.

For verifying if a natural projection has the observer property, one step in the observer algorithm is evaluated. If the resulting generator equals the input generator, then the natural projection on the abstraction alphabet is an observer.

Parameters:
rLowGen Input generator
rHighAlph High level alphabet
Returns:
true if the observer property holds

Definition at line 36 of file op_obserververification.cpp.

bool faudes::IsOCC const cGenerator rLowGen,
const EventSet rHighAlph
 

Verification of output control consistency (OCC).

For verifying if a natural projection fulfills the output control consistency condition, a backward reachability is conducted. If starting from a state, where an uncontrollable high-level event is feasible, a controllable event can be reached on a local backward path, OCC is violated.

Parameters:
rLowGen Input cGenerator
rHighAlph High level alphabet
Returns:
true if OCC holds

Definition at line 63 of file op_obserververification.cpp.

bool faudes::MutualControllability const cGenerator rGen1,
const cGenerator rGen2
 

Verification of mutual controllability.

This function checks if two generators are mutually controllable w.r.t. each other. A definition of mutual controllability is given in S.-H. Lee and K. C. Wong, “Structural decentralised control of concurrent DES,” European Journal of Control, vol. 35, pp. 1125-1134,2002.

Parameters:
rGen1 Generator 1
rGen2 Generator 2
Returns:
True if mutual controllability is fulfilled

Example:

Violation of mutual controllability
rGen1 rGen2
ex_mc1.png
ex_mc2.png

Mutual controllability is fulfilled
rGen3 rGen2
ex_mc3.png
ex_mc2.png

Definition at line 32 of file op_mc.cpp.


Generated on Fri May 9 11:26:48 2008 for libFAUDES 2.09b by  doxygen 1.4.4