op_mc.h
Go to the documentation of this file.
1 /** @file op_mc.h
2 
3 Method to verify mutual controllability for two given generators.
4 A definition of mutual controllability is given in
5 S.-H. Lee and K. C. Wong, “Structural decentralised control of concurrent
6 DES,” European Journal of Control, vol. 35, pp. 1125-1134,2002.
7 */
8 
9 /* FAU Discrete Event Systems Library (libfaudes)
10 
11  Copyright (C) 2006 Bernd Opitz
12  Exclusive copyright is granted to Klaus Schmidt
13 
14  This library is free software; you can redistribute it and/or
15  modify it under the terms of the GNU Lesser General Public
16  License as published by the Free Software Foundation; either
17  version 2.1 of the License, or (at your option) any later version.
18 
19  This library is distributed in the hope that it will be useful,
20  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22  Lesser General Public License for more details.
23 
24  You should have receive a copy of the GNU Lesser General Public
25  License along with this library; if not, write to the Free Software
26  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
27 
28 
29 
30 #ifndef FAUDES_OP_MC_H
31 #define FAUDES_OP_MC_H
32 
33 #include "corefaudes.h"
34 #include "syn_include.h"
35 #include "op_debug.h"
36 
37 
38 
39 
40 namespace faudes {
41 
42 /**
43  * Verification of mutual controllability.
44  * This function checks if two generators are mutually controllable w.r.t. each other.
45  * A definition of mutual controllability is given in
46  * S.-H. Lee and K. C. Wong, “Structural decentralised control of concurrent
47  * DES,” European Journal of Control, vol. 35, pp. 1125-1134,2002.
48  *
49  * @param rGen1
50  * Generator 1
51  * @param rGen2
52  * Generator 2
53  *
54  * @result
55  * True if mutual controllability is fulfilled
56  *
57  *
58  * <h4>Example: </h4>
59  * <p> Violation of mutual controllability </p>
60  * <table>
61  * <tr> <td> rGen1 </td> <td> rGen2 </td> </tr>
62  * <tr>
63  * <td> @image html ex_mc1.png </td>
64  * <td> @image html ex_mc2.png </td>
65  * </tr>
66  * </table>
67  * <p> Mutual controllability is fulfilled </p>
68  * <table>
69  * <tr> <td> rGen3 </td> <td> rGen2 </td> </tr>
70  * <tr>
71  * <td> @image html ex_mc3.png </td>
72  * <td> @image html ex_mc2.png </td>
73  * </tr>
74  * </table>
75  *
76  * @ingroup ObserverPlugin
77  */
78 extern FAUDES_API bool IsMutuallyControllable(const System& rGen1, const System& rGen2);
79 
80 /**
81  * Verification of mutual controllability.
82  * This function checks if two generators are mutually controllable w.r.t. each other.
83  * Additionally, this function provides the states where mutual controllability fails
84  * in case the condition is violated.
85  *
86  * @param rGen1
87  * Generator 1
88  * @param rGen2
89  * Generator 2
90  * @param rForbidden1
91  * Forbidden states in Generator 1
92  * @param rForbidden2
93  * Forbidden states in Generator 2
94  *
95  * @result
96  * True if mutual controllability is fulfilled
97  */
98 extern FAUDES_API bool IsMutuallyControllable(const System& rGen1, const System& rGen2, StateSet& rForbidden1, StateSet& rForbidden2);
99 
100 /**
101  * RTI wrapper
102  */
103 extern FAUDES_API void IsMutuallyControllable(const System& rGen1, const System& rGen2, bool& rRes);
104 
105 
106 } // namespace faudes
107 
108 #define FAUDES_OP_MC_H
109 #endif
#define FAUDES_API
Interface export/import symbols: windows.
Definition: cfl_platform.h:81
Includes all libFAUDES headers, no plugins.
IndexSet StateSet
Definition: cfl_indexset.h:271
TcGenerator< AttributeVoid, AttributeVoid, AttributeCFlags, AttributeVoid > System
Convenience typedef for std System.
bool IsMutuallyControllable(const System &rGen1, const System &rGen2)
Verification of mutual controllability.
Definition: op_mc.cpp:32
libFAUDES resides within the namespace faudes.
Includes all header files of the synthesis plug-in.

libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen