op_mc.hGo to the documentation of this file.00001 /** @file op_mc.h 00002 00003 Method to verify mutual controllability for two given generators. 00004 A definition of mutual controllability is given in 00005 S.-H. Lee and K. C. Wong, “Structural decentralised control of concurrent 00006 DES,” European Journal of Control, vol. 35, pp. 1125-1134,2002. 00007 */ 00008 00009 /* FAU Discrete Event Systems Library (libfaudes) 00010 00011 Copyright (C) 2006 Bernd Opitz 00012 Exclusive copyright is granted to Klaus Schmidt 00013 00014 This library is free software; you can redistribute it and/or 00015 modify it under the terms of the GNU Lesser General Public 00016 License as published by the Free Software Foundation; either 00017 version 2.1 of the License, or (at your option) any later version. 00018 00019 This library is distributed in the hope that it will be useful, 00020 but WITHOUT ANY WARRANTY; without even the implied warranty of 00021 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00022 Lesser General Public License for more details. 00023 00024 You should have receive a copy of the GNU Lesser General Public 00025 License along with this library; if not, write to the Free Software 00026 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ 00027 00028 00029 00030 #include "corefaudes.h" 00031 #include "syn_include.h" 00032 #include "op_debug.h" 00033 00034 #ifndef FAUDES_OP_MC_H 00035 #define FAUDES_OP_MC_H 00036 00037 00038 00039 namespace faudes { 00040 00041 /** 00042 * Verification of mutual controllability. 00043 * This function checks if two generators are mutually controllable w.r.t. each other. 00044 * A definition of mutual controllability is given in 00045 * S.-H. Lee and K. C. Wong, “Structural decentralised control of concurrent 00046 * DES,” European Journal of Control, vol. 35, pp. 1125-1134,2002. 00047 * 00048 * @param rGen1 00049 * Generator 1 00050 * @param rGen2 00051 * Generator 2 00052 * 00053 * @result 00054 * True if mutual controllability is fulfilled 00055 * 00056 * 00057 * <h4>Example: </h4> 00058 * <p> Violation of mutual controllability </p> 00059 * <table> 00060 * <tr> <td> rGen1 </td> <td> rGen2 </td> </tr> 00061 * <tr> 00062 * <td> @image html ex_mc1.png </td> 00063 * <td> @image html ex_mc2.png </td> 00064 * </tr> 00065 * </table> 00066 * <p> Mutual controllability is fulfilled </p> 00067 * <table> 00068 * <tr> <td> rGen3 </td> <td> rGen2 </td> </tr> 00069 * <tr> 00070 * <td> @image html ex_mc3.png </td> 00071 * <td> @image html ex_mc2.png </td> 00072 * </tr> 00073 * </table> 00074 * 00075 * @ingroup ObserverPlugin 00076 */ 00077 bool IsMutuallyControllable(const System& rGen1, const System& rGen2); 00078 00079 /** 00080 * Verification of mutual controllability. 00081 * This function checks if two generators are mutually controllable w.r.t. each other. 00082 * Additionally, this function provides the states where mutual controllability fails 00083 * in case the condition is violated. 00084 * 00085 * @param rGen1 00086 * Generator 1 00087 * @param rGen2 00088 * Generator 2 00089 * @param rForbidden1 00090 * Forbidden states in Generator 1 00091 * @param rForbidden2 00092 * Forbidden states in Generator 2 00093 * 00094 * @result 00095 * True if mutual controllability is fulfilled 00096 */ 00097 bool IsMutuallyControllable(const System& rGen1, const System& rGen2, StateSet& rForbidden1, StateSet& rForbidden2); 00098 00099 /** 00100 * RTI wrapper 00101 */ 00102 void IsMutuallyControllable(const System& rGen1, const System& rGen2, bool& rRes); 00103 00104 00105 } // namespace faudes 00106 00107 #define FAUDES_OP_MC_H 00108 #endif libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen |