syn_1_simple.cpp
Go to the documentation of this file.
1/** @file syn_1_simple.cpp
2
3Tutorial, std monolitic synthesis.
4
5
6This tutorial uses a very simple example to illustrate the
7std monolithic controller synthesis
8as originally proposed by Ramadge and Wonham.
9
10
11@ingroup Tutorials
12
13@include syn_1_simple.cpp
14
15*/
16
17#include "libfaudes.h"
18
19
20// we make the faudes namespace available to our program
21using namespace faudes;
22
23
24
25
26/////////////////
27// main program
28/////////////////
29
30int main() {
31
32
33 // Compose plant dynamics from two very simple machines
34 Generator tempgen, machinea, machineb;
35 System cplant;
36
37 tempgen.Read("data/verysimplemachine.gen");
38 tempgen.Version("1",machinea);
39 tempgen.Version("2",machineb);
40 Parallel(machinea,machineb,cplant);
41
42 // Declare controllable events
43 EventSet contevents;
44 contevents.Insert("alpha_1");
45 contevents.Insert("alpha_2");
46 cplant.SetControllable(contevents);
47
48 // Write to file
49 cplant.Write("tmp_cplant12.gen");
50
51 // Report to console
52 std::cout << "################################\n";
53 std::cout << "# tutorial, plant model \n";
54 cplant.DWrite();
55 std::cout << "################################\n";
56
57 // Read specification
58 Generator specification;
59 specification.Read("data/buffer.gen");
60 InvProject(specification,cplant.Alphabet());
61 specification.Name("simple machines specification");
62
63 // Write to file
64 specification.Write("tmp_specification12.gen");
65
66 // Report to console
67 std::cout << "################################\n";
68 std::cout << "# tutorial, specification \n";
69 specification.DWrite();
70 std::cout << "################################\n";
71
72 // Run synthesis algorithm
73 System supervisor;
74 SupCon(cplant,specification,supervisor);
75 supervisor.Name("simple machines supervisor");
76 supervisor.Write("tmp_supervisor12.gen");
77
78 // Report to console
79 std::cout << "################################\n";
80 std::cout << "# tutorial, supervisor\n";
81 supervisor.DWrite();
82 std::cout << "################################\n";
83
84 return 0;
85}
86
const std::string & Name(void) const
bool Insert(const Idx &rIndex)
const TaEventSet< EventAttr > & Alphabet(void) const
void SetControllable(Idx index)
void DWrite(const Type *pContext=0) const
void Read(const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
void Write(const Type *pContext=0) const
virtual void Version(const std::string &rVersion, vGenerator &rResGen) const
void Parallel(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
void InvProject(Generator &rGen, const EventSet &rProjectAlphabet)
void SupCon(const Generator &rPlantGen, const EventSet &rCAlph, const Generator &rSpecGen, Generator &rResGen)
int main()

libFAUDES 2.33k --- 2025.09.16 --- c++ api documentaion by doxygen