libFAUDES

Sections

Index

Synthesis Plug-In
[PlugIns]


Detailed Description

This plug-in implements functions that are related to controllability and normality, as originally proposed by W.M. Wonham et al in the 1980s. Examples are provided in the user reference, section Synthesis.

License

This plug-in is distributed with libFAUDES and under the terms of the LGPL.

Copyright (c) 2006, Bernd Opitz
Copyright (c) 2009, Thomas Moor, Sebastian Perk, Klaus Schmidt.


Functions

bool faudes::IsControllable (const vGenerator &rPlantGen, const EventSet &rCAlph, const vGenerator &rSupCandGen)
 Test controllability.
bool faudes::IsControllable (const vGenerator &rPlantGen, const EventSet &rCAlph, const vGenerator &rSupCandGen, StateSet &rCriticalStates)
 Test controllability.
bool faudes::cIsControllable (const cGenerator &rPlantGen, const vGenerator &rSupCandGen)
 Test controllability.
void faudes::SupConNB (const vGenerator &rPlantGen, const EventSet &rCAlph, const vGenerator &rSpecGen, vGenerator &rResGen)
 Nonblocking Supremal Controllable Sublanguage.
void faudes::cSupConNB (const cGenerator &rPlantGen, const vGenerator &rSpecGen, vGenerator &rResGen)
 Nonblocking Supremal Controllable Sublanguage.
void faudes::SupCon (const vGenerator &rPlantGen, const EventSet &rCAlph, const vGenerator &rSpecGen, vGenerator &rResGen)
 Supremal Controllable Sublanguage.
void faudes::cSupCon (const cGenerator &rPlantGen, const vGenerator &rSpecGen, vGenerator &rResGen)
 Supremal Controllable Sublanguage.
bool faudes::IsNormal (const Generator &rL, const EventSet &rOAlph, const Generator &rK)
 IsNormal: checks normality of a language K generated by rK wrt a language L generated by rL and the subset of observable events rOAlph.
bool faudes::SupNorm (Generator &rL, const EventSet &rOAlph, const Generator &rK, Generator &rResult)
 SupNorm: compute supremal normal and closed sublanguage.


Function Documentation

bool faudes::cIsControllable ( const cGenerator &  rPlantGen,
const vGenerator &  rSupCandGen 
)

Test controllability.

Tests whether the candidate supervisor h is controllable w.r.t. the plant g; this is a cGenerator wrapper for IsControllable

Parameters:
rPlantGen Plant g generator
rSupCandGen Supervisor candidate h generator
Exceptions:
Exception Alphabets of generators don't match (id 500) Plant generator nondeterministic (id 501) Specification generator nondeterministic (id 503) Plant & Spec generator nondeterministic (id 504)
Returns:
true / false

Definition at line 824 of file syn_supcon.cpp.

void faudes::cSupCon ( const cGenerator &  rPlantGen,
const vGenerator &  rSpecGen,
vGenerator &  rResGen 
)

Supremal Controllable Sublanguage.

This is the RTI wrapper for SupCon(const vGenerator&, const EventSet&, const vGenerator&, vGenerator&). Controllability attributes are taken from the plant argument. If the result is specified as a cGenerator, attributes will be copied from the plant argument.

Parameters:
rPlantGen Plant cGenerator
rSpecGen Specification Generator
rResGen Reference to resulting Generator, the minimal restrictive supervisor
Exceptions:
Exception Alphabets of generators don't match (id 100) plant nondeterministic (id 201) spec nondeterministic (id 203) plant and spec nondeterministic (id 204)

Definition at line 861 of file syn_supcon.cpp.

void faudes::cSupConNB ( const cGenerator &  rPlantGen,
const vGenerator &  rSpecGen,
vGenerator &  rResGen 
)

Nonblocking Supremal Controllable Sublanguage.

This is the RTI wrapper for SupConNB(const vGenerator&, const EventSet&, const vGenerator&, vGenerator&). Controllability attributes are taken from the plant argument. If the result is specified as a cGenerator, attributes will be copied from the plant argument.

Parameters:
rPlantGen Plant cGenerator
rSpecGen Specification Generator
rResGen Reference to resulting Generator, the minimal restrictive nonblocking supervisor
Exceptions:
Exception Alphabets of generators don't match (id 100) plant nondeterministic (id 201) spec nondeterministic (id 203) plant and spec nondeterministic (id 204)

Definition at line 834 of file syn_supcon.cpp.

bool faudes::IsControllable ( const vGenerator &  rPlantGen,
const EventSet &  rCAlph,
const vGenerator &  rSupCandGen,
StateSet &  rCriticalStates 
)

Test controllability.

Tests whether the candidate supervisor H is controllable w.r.t. the plant G. This implementation does not require the supervisor H to represent a sublanguage of the plant G.

If the candidate fails to be controllable, this version will return a set of "critical" states of the candidate supervisor. These states are characterised by (a) being reachable in the parallel composition of plant and supervisor (b) disabeling an uncontrollable transition of the plant

Parameter restrictions: both generators must be deterministic and have the same alphabet.

Parameters:
rPlantGen Plant G
rCAlph Controllable events
rSupCandGen Supervisor candicate H
rCriticalStates Set of critical states
Exceptions:
Exception 
  • alphabets of generators don't match (id 200)
  • plant generator nondeterministic (id 201)
  • specification generator nondeterministic (id 203)
  • plant and Spec generator nondeterministic (id 204)
Returns:
true / false

Definition at line 607 of file syn_supcon.cpp.

bool faudes::IsControllable ( const vGenerator &  rPlantGen,
const EventSet &  rCAlph,
const vGenerator &  rSupCandGen 
)

Test controllability.

Tests whether the candidate supervisor H is controllable w.r.t. the plant G. This implementation does not require the supervisor H to represent a sublanguage of the plant G.

Parameter restrictions: both generators must be deterministic and have the same alphabet.

Parameters:
rPlantGen Plant G
rCAlph Controllable events
rSupCandGen Supervisor candidate H
Exceptions:
Exception 
  • alphabets of generators don't match (id 100)
  • plant generator nondeterministic (id 201)
  • specification generator nondeterministic (id 203)
  • plant and Spec generator nondeterministic (id 204)
Returns:
true / false

Definition at line 586 of file syn_supcon.cpp.

bool faudes::IsNormal ( const Generator &  rL,
const EventSet &  rOAlph,
const Generator &  rK 
)

IsNormal: checks normality of a language K generated by rK wrt a language L generated by rL and the subset of observable events rOAlph.

This is done by checking if the following equality holds: pinv(p(K)) intersect L = K todo(?): check for efficient algorithm replacing above formula that returns false immediately after having found a non-normal string -> IsNormalFast() todo: implement test routines, verify correctness todo: compare speed with IsNormalAlt

Parameters:
rL generator of language L
rOAlph observable alphabet
rK generator of language K
Returns:
true if K is normal w.r.t. L and OAlph
Exceptions:
Exception 

Definition at line 94 of file syn_supnorm.cpp.

void faudes::SupCon ( const vGenerator &  rPlantGen,
const EventSet &  rCAlph,
const vGenerator &  rSpecGen,
vGenerator &  rResGen 
)

Supremal Controllable Sublanguage.

Parameter restrictions: both generators must be deterministic and have the same alphabet.

Parameters:
rPlantGen Plant G
rCAlph Controllable events
rSpecGen Specification E
rResGen Reference to resulting Generator, the minimal restrictive supervisor
Exceptions:
Exception 
  • alphabets of generators don't match (id 100)
  • plant nondeterministic (id 201)
  • spec nondeterministic (id 203)
  • plant and spec nondeterministic (id 204)

Definition at line 729 of file syn_supcon.cpp.

void faudes::SupConNB ( const vGenerator &  rPlantGen,
const EventSet &  rCAlph,
const vGenerator &  rSpecGen,
vGenerator &  rResGen 
)

Nonblocking Supremal Controllable Sublanguage.

Computes the supremal nonblocking sublanguage of the specification E that is controllable w.r.t. the plant G. The result is given as a trim deterministic generator that may be used to supervise G in order to enforce H. This implementation does not require E to represent a sublanguage of G

See "C.G CASSANDRAS AND S. LAFORTUNE. Introduction to Discrete Event Systems. Kluwer, 1999." for base algorithm.

Parameter restrictions: both generators must be deterministic and have the same alphabet.

Parameters:
rPlantGen Plant G
rCAlph Controllable events
rSpecGen Specification Generator E
rResGen Reference to resulting Generator, the minimal restrictive nonblocking supervisor
Exceptions:
Exception 
  • alphabets of generators don't match (id 100)
  • plant nondeterministic (id 201)
  • spec nondeterministic (id 203)
  • plant and spec nondeterministic (id 204)

Definition at line 635 of file syn_supcon.cpp.

bool faudes::SupNorm ( Generator &  rL,
const EventSet &  rOAlph,
const Generator &  rK,
Generator &  rResult 
)

SupNorm: compute supremal normal and closed sublanguage.

SupNorm calculates the supremal sublanguage of the closed language K (prefix closure of the language marked by rK) that is normal w.r.t. the closed language L (prefix closure of the language marked by rL) and the set of observable events. Method: The supremal normal sublanguage is computed according to the Lin-Brandt-Formula: supnorm(K)wrt(L)=K-Pinv[P(L-K)]Sigma* SupNorm returns false on empty result. Parameters have to be deterministic, result is deterministic. Note: rL is not const, as the prefix closure is taken during computation. However, its original marked language is restored before return. See also supnorm_turorial.cpp todo: check for efficient algorithm replacing above formula

Parameters:
rL generates the closed language L=L(rL)
rOAlph observable alphabet
rK generates the closed language K=L(rK)
rResult generates the supremal normal and closed sublanguage, where Lm(rResult) is intersection of L(rResult) and Lm(rL) (marking consistent to rL)
Returns:
true for nonempty result
Exceptions:
Exception 
  • Alphabets of generators don't match (id 500)
  • rOAlph not subset of rL.Alphabet() (id 506)
  • K is not subset of L. (id 0)

Definition at line 282 of file syn_supnorm.cpp.

libFAUDES 2.14g --- 2009-12-3 --- c++ source docu by doxygen 1.5.6