|
Go to the documentation of this file.
49 FD_DF( "SupTconUnchecked(" << &rSupCandGen << "," << &rPlantGen << ")");
56 std::stack<Idx> todog, todoh;
70 while(!todog.empty()) {
74 FD_WPC(1,2, "TdesControllability(): iterating states");
76 Idx currentg = todog.top();
77 Idx currenth = todoh.top();
80 FD_DF( "SupCon: todo pop: (" << rPlantGen. SStr(currentg) << "|"
81 << rSupCandGen. SStr(currenth) << ")");
84 if(processed. Exists(currenth)) continue;
85 processed. Insert(currenth);
87 #ifdef FAUDES_DEBUG_FUNCTION
90 FD_DF( "SupCon: transitions from current states:");
92 FD_DF( "SupCon: g: " << rPlantGen. SStr(_titg->X1) << "-"
93 << rPlantGen. EStr(_titg->Ev) << "-" << rPlantGen. SStr(_titg->X2));
95 FD_DF( "SupCon: h: " << rSupCandGen. SStr(_tith->X1) << "-"
96 << rSupCandGen. EStr(_tith->Ev) << "-" << rSupCandGen. SStr(_tith->X2));
111 while( (tith != tith_end) && (titg != titg_end)) {
112 if(tith->Ev > titg->Ev) {
113 disabled. Insert(titg->Ev);
115 } else if(tith->Ev == titg->Ev) {
124 if(disabled <= rCAlph) {
135 while( (tith != tith_end) && (titg != titg_end)) {
136 if(tith->Ev > titg->Ev) {
138 } else if(tith->Ev == titg->Ev) {
139 if(rFAlph. Exists(titg->Ev)) {fenabled= true; break;}
149 if((!pass) && fenabled) {
150 if(disabled <= rCPAlph) pass= true;
155 critical. Insert(currenth);
156 FD_DF( "SupCon: todo pop: (" << rPlantGen. SStr(currentg) << "|"
157 << rSupCandGen. SStr(currenth) << "): FAIL");
168 while ((tith != tith_end) && (titg != titg_end)) {
170 if(titg->Ev == tith->Ev) {
171 FD_DF( "SupCon: processing common event " << rPlantGen. EStr(titg->Ev));
173 if(!processed. Exists(tith->X2)) {
174 todog.push(titg->X2);
175 todoh.push(tith->X2);
176 FD_DF( "SupCon: todo push: (" << rPlantGen. SStr(titg->X2) << "|"
177 << rSupCandGen. SStr(tith->X2) << ")");
179 FD_DF( "SupCon: incrementing g and h transrel");
184 else if (titg->Ev < tith->Ev) {
185 FD_DF( "SupCon: incrementing g transrel");
190 FD_DF( "SupCon: incrementing h transrel");
201 critical = rSupCandGen. States() - ( processed - critical );
217 std::map< std::pair<Idx,Idx>, Idx>& rCompositionMap,
220 FD_DF( "SupTconNB(" << &rPlantGen << "," << &rSpecGen << ")");
224 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
225 pResGen= rResGen. New();
232 FD_DF( "SupTconNB: controllable events: " << rCAlph. ToString());
234 FD_DF( "SupTconNB: preemptyble events: " << rPAlph. ToString());
240 FD_DF( "SupTconNB(): SupConProduct on #" << rPlantGen. Size() << "/ #" << rSpecGen. Size());
241 SupConProduct(rPlantGen, cpalph, rSpecGen, rCompositionMap, *pResGen);
246 if(pResGen-> Empty()) break;
247 Idx state_num = pResGen-> Size();
248 FD_DF( "SupTconNB(): SupConClosed on #" << rPlantGen. Size() << "/ #" << pResGen-> Size());
250 FD_DF( "SupTconNB(): SupTcon on #" << rPlantGen. Size() << "/ #" << pResGen-> Size());
252 FD_DF( "SupTconNB(): Trim on #" << pResGen-> Size());
254 if(pResGen-> Size() == state_num) break;
264 if(pResGen != &rResGen) {
265 pResGen-> Move(rResGen);
287 std::map< std::pair<Idx,Idx>, Idx> rcmap;
304 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
305 pResGen= rResGen. New();
321 if(pResGen != &rResGen) {
322 pResGen-> Move(rResGen);
libFAUDES 2.28c
--- 2016.09.30
--- c++ api documentaion by doxygen
|