|
|
||||||
|
Detailed DescriptionOverviewThis plugin implements data types and functions related to the input-/output (I/O-) based approach to hierarchical control of discrete event systems as introduced in: S. Perk, Th. Moor and K. Schmidt. Hierarchical discrete event systems with inputs and outputs. WODES 2006 - 8th International Workshop on Discrete Event Systems, Ann Arbor, USA, 2006. Examples are provided in the user reference, section HioSys. LicenseThis plug-in is distributed with libFAUDES and under the terms of the LGPL. ContentsFunction Documentation◆ CheapAltAB()
CheapAltAB: returns Generator of the following specification: "After a maximum of n (=depth) pairs of A-transitions, a B-transition has to occur and vice-versa!".
Definition at line 1363 of file hio_functions.cpp. ◆ CheapAltAnB()
CheapAltAnB: returns Generator of the following specification: "After a maximum of n (=depth) pairs of A-transitions, a B-transition has to occur!".
Definition at line 1301 of file hio_functions.cpp. ◆ CloneScc()
cloneSCC: makes a copy (clone) of strongly connected component (rSCC) of the generator and moves all transitions leading to some entry state EntryState of this SCC to the copy of EntryState. If this is carried out for n-1 of all n entry states of the SCC, then, in the generator, this one SCC is transformed into n SCC's with one unique entry state each. The set of SCC's is extended by the clone-SCC. The set of entry states is extended by the (unique) entry state of the clone-SCC. Note: all added states are equivalent to some state in the original generator, the behaviour is not changed. The basic idea of this algorithm id taken from [Jéron,Marchand,Rusu,Tschaen] "Ensuring the conformance of reactive discrete-event systems using supervisory control" (CDC'03) todo: check const parameters
<> Definition at line 1941 of file hio_functions.cpp. ◆ CloneUnMarkedScc()
CloneUnMarkedSCC: makes a copy (clone) of strongly connected unmarked component (rSCC) of rGen. Definition at line 2030 of file hio_functions.cpp. ◆ CompleteSynth()
CompleteSynth: compute supremal complete and controllable (and closed) sublanguage. Computes the supremal complete and controllable (and closed) sublanguage of the language generated by rSpec wrt the language generated by rPlant and the controllable events rCalph. Method: iteration of SupCon() and erasing of dead states found by IsComplete until a fix point is reached. Leads to maximal solution as shown in: Kumar, Garg, Marcus. "On Supervisory Control of sequential behaviors" IEEE Transactions On Automatic Control, Vol. 37, 1992, pp. 1978-1985 More concise version SupConComplete() is under construction, see below.
Definition at line 104 of file hio_functions.cpp. ◆ ConstrSynth_Beta()
ConstrSynth_Beta: compute operator constraint Sp for plant under environment constraint Sl such that plant is complete & Yp-live wrt both constraints - Beta Version. Plant can be individual or composed, ie Plant=Lpe || Le, or Plant=Lpe1 ||io Lpe2 || Lel || Ll, ie composition of plant and envconstr, or composition of HioShuffle of two plants with environment and envconstr. Parameter rLocConstr is optional and may contain environment constraints for Lpe1 and Lpe2; rOpConstraint is computed such that rLocConstr is met under rOpConstraint. More and better docu will follow in future version.
Definition at line 2282 of file hio_functions.cpp. ◆ HioFreeInput() [1/11]
HioFreeInput: extend generator by obviously missing input transitions. States of the generator in which a strict but nonempty subset of the alphabet Input is active are extended by transitions to an error state (flag Err) such that now the whole Input alphabet is active in that state. If the alphabet Output is nonempty, an error behaviour (Output Input)* is concatenated to the error state using a second error state (flag Err). Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Input-event is extended by transitions such that formerly inactive Input- events lead to the first error state in the result. If the parameter Output is nonempty, transitions with all Output-events from first error state to the second error state, and transitions with all Input-events back to the first error state are inserted. Note: states with NO active Input-event are ignored.
Definition at line 504 of file hio_functions.cpp. ◆ HioFreeInput() [2/11]
HioFreeInput: extend generator by obviously missing input transitions. States of the generator in which a strict but nonempty subset of the alphabet Input is active are extended by transitions to an error state (ErrState1, flag Err) such that now the whole Input alphabet is active in that state. If the alphabet Output is nonempty, an error behaviour (Output Input)* is concatenated to the error state using a second error state (ErrState2, flag Err). Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Input-event is extended by transitions such that formerly inactive Input- events lead to the first error state in the result. If the parameter Output is nonempty, transitions with all Output-events from first error state to the second error state, and transitions with all Input-events back to the first error state are inserted. Note: states with NO active Input-event are ignored.
Definition at line 492 of file hio_functions.cpp. ◆ HioFreeInput() [3/11]
HioFreeInput: extend generator by obviously missing input transitions. States of the generator in which a strict but nonempty subset of the alphabet Input is active are extended by transitions to an error state (ErrState1, flag Err) such that now the whole Input alphabet is active in that state. If the alphabet Output is nonempty, an error behaviour (Output Input)* is concatenated to the error state using a second error state (ErrState2, flag Err). Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Input-event is extended by transitions such that formerly inactive Input- events lead to the first error state in the result. If the parameter Output is nonempty, transitions with all Output-events from first error state to the second error state, and transitions with all Input-events back to the first error state are inserted. Note: states with NO active Input-event are ignored.
Definition at line 381 of file hio_functions.cpp. ◆ HioFreeInput() [4/11]
HioFreeInput: extend HioConstraint by obviously missing input transitions. States of the HioConstraint in which a strict but nonempty subset of the U-alphabet is active are extended by transitions to an error state such that now the whole U-alphabet is active in that state.To avoid an additional deadlock violating completeness, an error behaviour (U Y)* is concatenated to the error state using a second error state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive U-event is events lead to the U-error state in the result. For each U-event, a transition to a second error state, and for each Y-event, a transition from the second to the first error state is inserted to realise the error behaviour. Note: states with NO active U-event are ignored.
Definition at line 806 of file hio_functions.cpp. ◆ HioFreeInput() [5/11]
HioFreeInput: extend HioController by obviously missing input transitions. States of the HioController in which a strict but nonempty subset of the Uc- or Yp-alphabet is active are extended by transitions to an error state such that now the whole Uc- or Yp-alphabet is active in that state. To avoid an additional deadlock violating completeness, an error behaviour (Up Yp)* is concatenated to the error state using a second error state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Uc- or Yp-event is events lead to the Uc- or Yp-error state in the result. For each Up-event, a transition to a second error state, and for each Yp-event, a transition from the second to the first error state is inserted to realise the error behaviour. Note: states with NO active Uc- or Yp-event are ignored.
Definition at line 553 of file hio_functions.cpp. ◆ HioFreeInput() [6/11]
HioFreeInput: extend HioEnvironment by obviously missing input transitions. States of the HioEnvironment in which a strict but nonempty subset of the Ul- or Ye-alphabet is active are extended by transitions to an error state such that now the whole Ul- or Ye-alphabet is active in that state.To avoid an additional deadlock violating completeness, an error behaviour (Ue Ye)* is concatenated to the error state using a second error state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Ul- or Ye-event is events lead to the Ul- or Ye-error state in the result. For each Ue-event, a transition to a second error state, and for each Ye-event, a transition from the second to the first error state is inserted to realise the error behaviour. Note: states with NO active Ul- or Ye-event are ignored.
Definition at line 680 of file hio_functions.cpp. ◆ HioFreeInput() [7/11]
HioFreeInput: extend HioPlant by obviously missing input transitions. States of the HioPlant in which a strict but nonempty subset of the Up- or Ue-alphabet is active are extended by transitions to an error state such that now the whole Up- or Ue-alphabet is active in that state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Up- or Ue-event is extended by transitions such that formerly inactive Up- or Ue- events lead to the Up- or Ue-error state in the result. Note: states with NO active Up- or Ue-event are ignored.
Definition at line 516 of file hio_functions.cpp. ◆ HioFreeInput() [8/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioConstraint&, HioConstraint)
Definition at line 844 of file hio_functions.cpp. ◆ HioFreeInput() [9/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioController&, HioController)
Definition at line 834 of file hio_functions.cpp. ◆ HioFreeInput() [10/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioEnvironment&, HioEnvironment)
Definition at line 839 of file hio_functions.cpp. ◆ HioFreeInput() [11/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioPlant&, HioPlant)
Definition at line 828 of file hio_functions.cpp. ◆ HioShuffle() [1/2]
HioShuffle: IO-shuffle of rPlantA and rPlantB according to definition. Moreover: marking of alternation according to MarkAlternationAB().
Definition at line 1181 of file hio_functions.cpp. ◆ HioShuffle() [2/2]
HioShuffle: IO-shuffle of rPlantA and rPlantB according to definition. Moreover: alternation of depth Depth (see CheapAltAB()) between A- and B-events (no alternation for Depth=1) and marking of alternation according to MarkAlternationAB().
Definition at line 1274 of file hio_functions.cpp. ◆ HioShuffleTU()
HioShuffleTU: IO-shuffle of rPlantA and rPlantB according to definition with additional forced alternation of depth Depth (see CheapAltAB()) between A- and B-events. -> frozen version for transport unit example
Definition at line 1381 of file hio_functions.cpp. ◆ HioShuffleUnchecked()
HioShuffleUnchecked: IO-shuffle of rPlantA and rPlantB according to definition, no parameter check. Moreover: marking of alternation according to MarkAlternationAB(). TODO: 'checked' version
Definition at line 1030 of file hio_functions.cpp. ◆ HioSortCL()
IoSortCL: returns IO-sorting structure required for closed loops. This structure is the prefix closure of the language structure [(Yp(Up+YcUcUp))*(YeUe)*]*
Definition at line 280 of file hio_functions.cpp. ◆ HioSynth()
HioSynthUnchecked: I/O controller synthesis procedure. Main hio synthesis algorithm suitable for both the monolithic and the hierarchical case, see also respective api's HioSynthMonolithic and HioSynthHierarchical. The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).
Definition at line 2478 of file hio_functions.cpp. ◆ HioSynthHierarchical()
HioSynthHierarchical: I/O controller synthesis procedure for I/O-shuffle of i plants and their interaction via an I/O environment. The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE) with the external behaviour S_PE of the I/Oshuffle-environment-composition and respects internal constraints Sp_i and Se_i preserving liveness of the individual plants.
Definition at line 2650 of file hio_functions.cpp. ◆ HioSynthMonolithic()
HioSynthMonolithic: I/O controller synthesis procedure for monolithic plant. The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).
Definition at line 2601 of file hio_functions.cpp. ◆ HioSynthUnchecked()
HioSynthUnchecked: I/O controller synthesis procedure, no parameter check. Main hio synthesis algorithm suitable for both the monolithic and the hierarchical case, see also respective api's HioSynth(with parameter check), HioSynthMonolithic and HioSynthHierarchical. The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).
Definition at line 2330 of file hio_functions.cpp. ◆ IsYcLive()
IsYcLive: This function checks if generator is Yc-live. Method: using YclessSCC(), the function checks if no Yc-less SCC is found.
Definition at line 1818 of file hio_functions.cpp. ◆ MarkAlternationAB()
MarkAlternationAB: returns Generator marking the alternation of Aset-transitions with Bset-transitions. More docu will be provided soon.
Definition at line 977 of file hio_functions.cpp. ◆ MarkHioShuffle()
MarkHioShuffle: marking rule for HioShuffle() in case of marked parameters rGen1 and rGen2 - UNDER CONSTRUCTION. Method: Strings ending with events from rGen1 are marked according to rGen1, strings ending with events from rGen2 are marked according to rGen2.
Definition at line 863 of file hio_functions.cpp. ◆ NormalCompleteSynth()
NormalCompleteSynth: compute normal, complete and controllable (and closed) sublanguage. Computes the supremal normal, complete and controllable (and closed) sublanguage of the language generated by rSpec wrt the language generated by rPlant, the controllable events rCalph and the observable events rOAlph. Method: iteration of CompleteSynth() and SupNorm() until a fix point is reached. Note: Supremality (if existent at all) has not yet been considered. The proof of existence and construction of both -the supremal normal and complete sublanguage and -the supremal normal and controllable sublanguage can be found in literature, which gives reason for hope.
Definition at line 178 of file hio_functions.cpp. ◆ NormalCompleteSynthNB()
NormalCompleteSynthNB: compute normal, complete, controllable and nonblocking sublanguage. Computes a normal, complete, controllable and nonblocking (and closed) sublanguage of of the language marked by rSpec wrt the language marked by rPlant, the controllable events rCalph and the observable events rOAlph. Method: iteration of CompleteSynth(), SupNorm() and Trim() until a fix point is reached. Note: Supremality (if existent at all) has not yet been considered.
Definition at line 230 of file hio_functions.cpp. ◆ SccEntries()
SCCEntries: figure entry states and entry transitions of strongly connected components rSccSet of rGen. Entry states are the set of states of the SCC that are initial state or direct successor of some state not belonging to this SCC (i.e. belonging to a different or no SCC). Entry transitions are the set of respective transitions leading to an entrystate of some SCC from a state not belonging to this SCC.
Definition at line 1884 of file hio_functions.cpp. ◆ SearchYclessScc()
SearchYclessSCC: Search for strongly connected ycless components (YC-less SCC's). This function partitions the stateset of a generator into equivalent classes such that states x1 and x2 are equivalent iff there is a ycless path from x1 to x2 and a ycless path from x2 to x1. "Trivial" SCC's consisting of one state without non-Yc- selfloop are omitted, SCC's consisting exclusively of unmarked states are stored in rUnMarkedSccSet; all OTHER SCC's are collected in rSccSet. Their roots (i.e. that state of each SCC that has been visited first during depth first search of the generator) are collected in rRoots. This function is built on the algorithm based on a depth first search presented in: "Aho, Hopcroft, Ullman: The Design and Analysis of Computer Algorithms" Most of the comments in this function have been literally taken from this book! An api with generator and Yc-events as input parameters and the set of YC-less SCC's as output parameters is provided right below this method.
Definition at line 1571 of file hio_functions.cpp. ◆ WriteStateSets() [1/2]
WriteStateSets: Write set of StateSet's to console (symbolic state names taken from rGen). Useful to output partitions over statesets like e.g. the set of strongly connected components. Also serves as template for walkthrough through each state of a set of statesets.
Definition at line 1861 of file hio_functions.cpp. ◆ WriteStateSets() [2/2]
WriteStateSets: Write set of StateSet's to console (indeces). Useful to output partitions over statesets like e.g. the set of strongly connected components. Also serves as template for walkthrough through each state of a set of statesets.
Definition at line 1833 of file hio_functions.cpp. ◆ YcAcyclic()
YcAcyclic: Computes the supremal(?) Yc-acyclic sublanguage of L(Gen). Procedure: 1) Find Yc-less SCC's with YclessScc(...) 2) transform SCC's with n entry states to n SCC's with one unique entry state. 3) erase transitions leading from a state of some SCC to the entry state of this SCC's. 4) repeat 1)-3) until no more Yc-less SCC is found, i.e. rResGen generates the supremal YcAcyclic sublanguage of the language generated by rGen.
Definition at line 2105 of file hio_functions.cpp. ◆ YclessSCC()
YclessSCC: Search for strongly connected ycless components (YC-less SCC's) - convenience api. See SearchYclessSCC() for docu.
◆ YclessScc()
YclessSCC: Search for strongly connected ycless components (YC-less SCC's) - convenience api. See SearchYclessSCC() for docu.
Definition at line 1714 of file hio_functions.cpp. ◆ YclessUnmarkedScc()
YclessUnmarkedSCC: Search for strongly connected ycless components (YC-less SCC's) consisting of unmarked states only. Uses SearchYclessSCC().
Definition at line 1758 of file hio_functions.cpp. libFAUDES 2.33c --- 2025.05.15 --- c++ api documentaion by doxygen |