175 f.
set({Feature::Sink, Feature::Source});
176 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
177 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
178 Feature::HyperExp, Feature::BMAP});
179 f.
set({Feature::Pareto, Feature::Weibull, Feature::Lognormal, Feature::Uniform, Feature::Det});
180 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
181 Feature::Buffer, Feature::Dispatcher});
182 f.
set({Feature::CacheClassSwitcher, Feature::Cache});
183 f.
set(Feature::CacheRetrieval);
184 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
185 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
186 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_SIRO,
187 Feature::SchedStrategy_HOL, Feature::SchedStrategy_FCFSPRPRIO});
188 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
189 Feature::SchedStrategy_POLLING});
190 f.
set({Feature::SchedStrategy_OI, Feature::SchedStrategy_PAS});
192 f.
set(Feature::SchedStrategy_SJF);
195 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_PSJF,
196 Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT,
197 Feature::SchedStrategy_SETF});
200 f.
set({Feature::Fork, Feature::Forker, Feature::Join, Feature::Joiner,
201 Feature::JoinPartial});
202 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
203 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
204 Feature::ReplacementStrategy_LRU, Feature::ReplacementStrategy_HLRU});
205 f.
set(Feature::MMAP);
206 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass, Feature::Replayer});
208 f.
set({Feature::LoadDependence, Feature::ClassDependence});
209 f.
set(Feature::JointDependence);
215 f.
set(Feature::MultiServer);
224 f.
unset(Feature::OpenClass);
233 static const char* kLdRefused[] = {
"sum",
"esum",
"mvac",
"qli",
"fli",
234 "gflin",
"egflin",
"qna",
"rqna",
"rqt"};
236 for (
const char* n : kLdRefused)
237 if (method == n) ld_refused =
true;
239 f.
unset(Feature::LoadDependence);
240 f.
unset(Feature::ClassDependence);
241 f.
unset(Feature::JointDependence);
242 }
else if (method ==
"mva" || method ==
"exact") {
243 f.
unset(Feature::ClassDependence);
244 f.
unset(Feature::JointDependence);
247 if (method !=
"default" && method !=
"exact") {
251 f.
unset(Feature::SchedStrategy_OI);
252 f.
unset(Feature::SchedStrategy_PAS);
254 if (method ==
"sum" || method ==
"esum") {
258 }
else if (method ==
"mvac") {
261 f.
unset(Feature::OpenClass);
264 if (method ==
"mapqn") {
267 f.
set({Feature::MAP, Feature::MMPP2});
268 for (
Feature x : {Feature::OpenClass, Feature::Source, Feature::Sink, Feature::Fork, Feature::Forker,
269 Feature::Join, Feature::Joiner, Feature::JoinPartial, Feature::ClassSwitch,
270 Feature::StatelessClassSwitcher, Feature::Cache, Feature::CacheClassSwitcher,
271 Feature::CacheRetrieval, Feature::LoadDependence, Feature::ClassDependence,
272 Feature::JointDependence, Feature::SchedStrategy_PS, Feature::SchedStrategy_SIRO,
273 Feature::SchedStrategy_LCFSPR, Feature::SchedStrategy_SRPT, Feature::SchedStrategy_PSJF,
274 Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT, Feature::SchedStrategy_SETF,
275 Feature::SchedStrategy_OI, Feature::SchedStrategy_PAS})
279 if (method ==
"rqna") {
281 f.
set({Feature::MAP, Feature::MMPP2, Feature::MMAP, Feature::RAP});
282 f.
unset(Feature::ClosedClass);
283 f.
unset(Feature::SelfLoopingClass);
284 }
else if (method ==
"rqt") {
287 f.
unset(Feature::ClosedClass);
288 f.
unset(Feature::SelfLoopingClass);
290 if (method ==
"qna") {
295 f.
set(Feature::RoutingStrategy_RROBIN);
296 f.
unset(Feature::ClosedClass);
297 f.
unset(Feature::SelfLoopingClass);
301 f.
unset(Feature::SchedStrategy_SIRO);
302 f.
unset(Feature::SchedStrategy_LCFSPR);
304 }
else if (method ==
"erlanga" || method ==
"mgisrgi") {
309 f.
set(Feature::Reneging);
310 f.
unset(Feature::ClosedClass);
311 f.
unset(Feature::SelfLoopingClass);
313 if (method ==
"rqna" || method ==
"rqt") {
319 f.
unset(Feature::Fork);
320 f.
unset(Feature::Forker);
321 f.
unset(Feature::Join);
322 f.
unset(Feature::Joiner);
323 f.
unset(Feature::JoinPartial);
333 static const char* kSingleServer[] = {
"aql",
"qsa",
"tay",
"mvac",
"rqna",
"sjn.mva",
334 "sjn.amva",
"mm1",
"mg1",
"mgi1",
"gm1",
"gim1"};
335 bool single = method.compare(0, 4,
"gig1") == 0;
336 for (
const char* n : kSingleServer)
337 if (method == n) single =
true;
338 if (single) f.
unset(Feature::MultiServer);
349 if (method ==
"default" || method ==
"sqd") f.
set(Feature::FiniteCapacity);
382 f.
set({Feature::Sink, Feature::Source});
383 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
384 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Det,
385 Feature::Exp, Feature::HyperExp});
389 f.
set(Feature::Geometric);
390 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
391 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
392 f.
set(Feature::Region);
393 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
394 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_SIRO});
395 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR});
400 f.
set(Feature::SchedStrategy_DPS);
403 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
404 Feature::RoutingStrategy_SDR});
405 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_OI, Feature::SchedStrategy_PAS});
408 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
409 Feature::JoinPartial});
410 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass});
411 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::OpenClass});
412 f.
set(Feature::CacheRetrieval);
413 f.
set(Feature::CacheItemSize);
414 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO});
415 f.
set(Feature::ReplacementStrategy_HLRU);
420 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
421 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
422 f.
set({Feature::LoadDependence, Feature::ClassDependence});
423 f.
set(Feature::JointDependence);
428 f.
set(Feature::MultiServer);
435 if (method ==
"divdiff") {
441 f.
unset(Feature::SchedStrategy_INF);
442 }
else if (method ==
"rd" || method ==
"nrp" || method ==
"nrl" || method ==
"nre" ||
443 method ==
"comomld" || method ==
"panald" || method ==
"is") {
451 f.
unset(Feature::OpenClass);
457 if (method ==
"divdiff") f.
unset(Feature::MultiServer);
463 if (method ==
"mem" || method ==
"default" || method ==
"exact")
464 f.
set(Feature::FiniteCapacity);
477 f.
set({Feature::Source, Feature::Sink});
482 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue,
485 f.
set({Feature::MAP, Feature::APH, Feature::MMPP2, Feature::MMAP, Feature::PH,
486 Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp, Feature::HyperExp,
488 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
490 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
491 Feature::Buffer, Feature::Dispatcher});
493 f.
set(Feature::Region);
494 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
495 f.
set(Feature::CacheRetrieval);
496 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
497 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
498 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS});
499 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_SEPT});
500 f.
set({Feature::SchedStrategy_LEPT, Feature::SchedStrategy_FCFS});
501 f.
set({Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS});
502 f.
set({Feature::SchedStrategy_LCFSPR, Feature::SchedStrategy_LCFSPRPRIO,
503 Feature::SchedStrategy_FCFSPRPRIO});
509 f.
set({Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_FCFSPR,
510 Feature::SchedStrategy_FCFSPI});
511 f.
set({Feature::SchedStrategy_LCFSPIPRIO, Feature::SchedStrategy_FCFSPIPRIO});
512 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
513 Feature::SchedStrategy_GPSPRIO});
514 f.
set({Feature::SchedStrategy_LPS, Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI,
515 Feature::SchedStrategy_POLLING});
522 f.
set({Feature::RoutingStrategy_WRROBIN, Feature::RoutingStrategy_JSQ,
523 Feature::RoutingStrategy_SQ});
528 f.
set(Feature::RoutingStrategy_SDR);
529 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
536 f.
set({Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN});
537 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
538 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
539 f.
set({Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
540 Feature::ReplacementStrategy_QLRU});
541 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass, Feature::Replayer});
542 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
543 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE,
544 Feature::SignalType_REPLY});
545 f.
set({Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
546 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
547 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
548 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
549 f.
set(Feature::Retrial);
564 f.
set({Feature::Balking, Feature::Reneging, Feature::Breakdown});
565 f.
set({Feature::LoadDependence, Feature::ClassDependence, Feature::JointDependence});
567 f.
set(Feature::GlobalDependence);
571 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
580 if (method ==
"cftp" || method ==
"cftp.approx" || method ==
"cftp.exact") {
590 f.
unset(Feature::OpenClass);
592 f.
unset(Feature::Source);
593 f.
unset(Feature::Sink);
594 f.
unset(Feature::RandomSource);
595 f.
unset(Feature::JobSink);
596 f.
unset(Feature::ClassSwitch);
597 f.
unset(Feature::StatelessClassSwitcher);
598 f.
unset(Feature::Cache);
599 f.
unset(Feature::CacheClassSwitcher);
600 f.
unset(Feature::CacheRetrieval);
601 f.
unset(Feature::ReplacementStrategy_RR);
602 f.
unset(Feature::ReplacementStrategy_FIFO);
603 f.
unset(Feature::ReplacementStrategy_SFIFO);
604 f.
unset(Feature::ReplacementStrategy_LRU);
605 f.
unset(Feature::ReplacementStrategy_HLRU);
606 f.
unset(Feature::ReplacementStrategy_CLIMB);
607 f.
unset(Feature::ReplacementStrategy_QLRU);
608 f.
unset(Feature::Fork);
609 f.
unset(Feature::Join);
610 f.
unset(Feature::Forker);
611 f.
unset(Feature::Joiner);
612 f.
unset(Feature::Place);
613 f.
unset(Feature::Transition);
614 f.
unset(Feature::Linkage);
615 f.
unset(Feature::Enabling);
616 f.
unset(Feature::Inhibiting);
617 f.
unset(Feature::Timing);
618 f.
unset(Feature::Firing);
619 f.
unset(Feature::Storage);
621 f.
unset(Feature::SchedStrategy_DPS);
622 f.
unset(Feature::SchedStrategy_GPS);
623 f.
unset(Feature::SchedStrategy_SEPT);
624 f.
unset(Feature::SchedStrategy_LEPT);
625 f.
unset(Feature::SchedStrategy_HOL);
626 f.
unset(Feature::SchedStrategy_LCFS);
627 f.
unset(Feature::SchedStrategy_LCFSPRPRIO);
628 f.
unset(Feature::SchedStrategy_FCFSPRPRIO);
629 f.
unset(Feature::SchedStrategy_FCFSPR);
630 f.
unset(Feature::SchedStrategy_LCFSPI);
631 f.
unset(Feature::SchedStrategy_FCFSPI);
632 f.
unset(Feature::SchedStrategy_LCFSPIPRIO);
633 f.
unset(Feature::SchedStrategy_FCFSPIPRIO);
634 f.
unset(Feature::SchedStrategy_PSPRIO);
635 f.
unset(Feature::SchedStrategy_DPSPRIO);
636 f.
unset(Feature::SchedStrategy_GPSPRIO);
637 f.
unset(Feature::SchedStrategy_LPS);
638 f.
unset(Feature::SchedStrategy_PAS);
639 f.
unset(Feature::SchedStrategy_OI);
640 f.
unset(Feature::SchedStrategy_POLLING);
641 f.
unset(Feature::Region);
642 f.
unset(Feature::LoadDependence);
643 f.
unset(Feature::ClassDependence);
644 f.
unset(Feature::JointDependence);
645 f.
unset(Feature::GlobalDependence);
647 f.
unset(Feature::RoutingStrategy_RROBIN);
648 f.
unset(Feature::RoutingStrategy_WRROBIN);
649 f.
unset(Feature::RoutingStrategy_JSQ);
650 f.
unset(Feature::RoutingStrategy_SQ);
651 f.
unset(Feature::RoutingStrategy_SDR);
655 f.
unset(Feature::FiniteCapacity);
656 }
else if (method ==
"mdd") {
667 f.
unset(Feature::OpenClass);
668 f.
unset(Feature::Source);
669 f.
unset(Feature::Sink);
670 f.
unset(Feature::RandomSource);
671 f.
unset(Feature::JobSink);
672 f.
unset(Feature::Fork);
673 f.
unset(Feature::Join);
674 f.
unset(Feature::Forker);
675 f.
unset(Feature::Joiner);
676 f.
unset(Feature::JoinPartial);
679 f.
unset(Feature::FiniteCapacity);
720 f.
set({Feature::Sink, Feature::Source, Feature::Router});
721 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
722 f.
set({Feature::MAP, Feature::MMPP2, Feature::MMAP, Feature::APH, Feature::PH,
724 f.
set({Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp, Feature::HyperExp});
725 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
727 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
728 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
729 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
730 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
731 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS});
732 f.
set({Feature::SchedStrategy_GPS, Feature::SchedStrategy_LPS, Feature::SchedStrategy_SIRO});
733 f.
set({Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS});
734 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT});
735 f.
set(Feature::SchedStrategy_LCFSPR);
750 f.
set({Feature::SchedStrategy_LCFSPRPRIO, Feature::SchedStrategy_FCFSPRPRIO});
751 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
752 Feature::SchedStrategy_GPSPRIO});
757 f.
set({Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI,
758 Feature::SchedStrategy_POLLING});
761 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
764 f.
set(Feature::Region);
767 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::CacheRetrieval});
770 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
771 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
772 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
776 f.
set(Feature::RoutingStrategy_SDR);
783 f.
set({Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
784 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
785 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
786 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
787 f.
set({Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
788 Feature::ReplacementStrategy_QLRU});
789 f.
set({Feature::SchedStrategy_EXT, Feature::ClosedClass, Feature::SelfLoopingClass,
790 Feature::OpenClass});
791 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
792 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE});
793 f.
set({Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
794 f.
set(Feature::Retrial);
796 f.
set({Feature::Balking, Feature::Reneging});
797 f.
set(Feature::LoadDependence);
801 f.
set({Feature::ClassDependence, Feature::JointDependence});
804 f.
set(Feature::GlobalDependence);
808 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
837 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
838 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
839 f.
set({Feature::Cox2, Feature::Coxian, Feature::Erlang, Feature::Exp, Feature::HyperExp});
840 f.
set({Feature::APH, Feature::Det, Feature::MAP, Feature::MMPP2, Feature::NHPP});
844 f.
set({Feature::MAPt, Feature::PHt});
846 f.
set({Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
848 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
849 Feature::Buffer, Feature::Dispatcher});
850 f.
set({Feature::Server, Feature::ServiceTunnel});
851 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
852 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_HOL});
853 f.
set({Feature::SchedStrategy_GPS});
854 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_LCFS,
855 Feature::SchedStrategy_LCFSPR});
856 f.
set(Feature::LoadDependence);
857 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO});
858 f.
set(Feature::ReplacementStrategy_SFIFO);
859 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
860 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::Replayer});
861 f.
set({Feature::RandomSource, Feature::Sink, Feature::Source, Feature::OpenClass,
869 f.
set({Feature::Fork, Feature::Forker, Feature::Join, Feature::Joiner,
870 Feature::JoinPartial});
873 f.
set(Feature::MultiServer);
880 f.
set(Feature::FiniteCapacity);
891 (method.size() > 6 && method.compare(0, 6,
"fluid.") == 0) ? method.substr(6) : method;
892 if (m ==
"butools" || m ==
"aoi") m =
"mfq";
893 else if (m ==
"ggisgi") m =
"ggisgi.fluid";
894 else if (m ==
"tga") m =
"ggingi.tga";
895 const bool closing_family =
896 m ==
"closing" || m ==
"statedep" || m ==
"softmin" || m ==
"tbi" || m ==
"minnormal" ||
897 m ==
"refined" || m ==
"dae";
902 if (!(m ==
"closing" || m ==
"minnormal" || m ==
"refined" || m ==
"dae"))
903 f.
unset(Feature::LoadDependence);
909 if (closing_family) {
910 f.
unset(Feature::SchedStrategy_SIRO);
911 f.
unset(Feature::SchedStrategy_LCFS);
912 f.
unset(Feature::SchedStrategy_LCFSPR);
921 if (m !=
"minnormal") f.
unset(Feature::SchedStrategy_GPS);
925 if (m !=
"mfq") f.
unset(Feature::SchedStrategy_HOL);
931 if (m ==
"diffusion" || m ==
"mfq") f.
unset(Feature::MultiServer);
950 f.
set(Feature::Region);
951 f.
unset(Feature::SchedStrategy_DPS);
966 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
967 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
996 if (m ==
"diffusion" || m ==
"kp") {
997 f.
unset(Feature::Fork);
998 f.
unset(Feature::Forker);
999 f.
unset(Feature::Join);
1000 f.
unset(Feature::Joiner);
1001 f.
unset(Feature::JoinPartial);
1025 if (m ==
"ggisgi.fluid" || m ==
"ggingi.tga" || m ==
"tvms") {
1030 f.
set(Feature::Reneging);
1032 if (m ==
"ggisgi.fluid" || m ==
"ggingi.tga" || m ==
"tvms" || m ==
"mtginf" ||
1036 f.
unset(Feature::ClosedClass);
1037 f.
unset(Feature::SelfLoopingClass);
1045 if (m ==
"refined") {
1046 f.
unset(Feature::OpenClass);
1047 f.
unset(Feature::Source);
1048 f.
unset(Feature::Sink);
1049 f.
unset(Feature::RandomSource);
1050 f.
unset(Feature::JobSink);
1057 if (m ==
"diffusion") {
1058 f.
unset(Feature::OpenClass);
1059 f.
unset(Feature::Source);
1060 f.
unset(Feature::Sink);
1061 f.
unset(Feature::RandomSource);
1062 f.
unset(Feature::JobSink);
1073 f.
unset(Feature::ClosedClass);
1074 f.
unset(Feature::SelfLoopingClass);
1075 f.
unset(Feature::Cache);
1076 f.
unset(Feature::CacheClassSwitcher);
1077 f.
unset(Feature::ClassSwitch);
1078 f.
unset(Feature::StatelessClassSwitcher);
1079 f.
unset(Feature::ReplacementStrategy_RR);
1080 f.
unset(Feature::ReplacementStrategy_FIFO);
1081 f.
unset(Feature::ReplacementStrategy_SFIFO);
1088 f.
unset(Feature::OpenClass);
1089 f.
unset(Feature::Source);
1090 f.
unset(Feature::Sink);
1091 f.
unset(Feature::RandomSource);
1092 f.
unset(Feature::JobSink);
1093 f.
unset(Feature::Cache);
1094 f.
unset(Feature::CacheClassSwitcher);
1095 f.
unset(Feature::ReplacementStrategy_RR);
1096 f.
unset(Feature::ReplacementStrategy_FIFO);
1097 f.
unset(Feature::ReplacementStrategy_SFIFO);
1142 f.
set({Feature::Sink, Feature::Source});
1143 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1144 f.
set({Feature::Delay, Feature::DelayStation, Feature::Queue});
1146 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
1147 Feature::HyperExp, Feature::MMPP2, Feature::MAP, Feature::MMAP, Feature::DMAP,
1148 Feature::ME, Feature::RAP});
1153 f.
set({Feature::Geometric, Feature::DiscreteUniform});
1154 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1156 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
1157 f.
set(Feature::ClassSwitch);
1158 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
1159 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
1160 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_HOL});
1162 f.
set(Feature::SchedStrategy_FCFS);
1163 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1164 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass});
1165 f.
set(Feature::OpenClass);
1171 f.
set({Feature::Retrial, Feature::BMAP, Feature::PH});
1173 f.
set(Feature::SetupDelayOff);
1179 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1193 if (method ==
"dec.mmap")
1194 for (
Feature ff : {Feature::ClosedClass, Feature::SelfLoopingClass,
1195 Feature::SchedStrategy_INF, Feature::Fork, Feature::Join,
1196 Feature::Forker, Feature::Joiner})
1199 if (method ==
"default" || method ==
"ldqbd") f.
set(Feature::LoadDependence);
1204 if (method ==
"mna") f.
set(Feature::RoutingStrategy_RROBIN);
1210 if (method ==
"ldqbd" || method ==
"bgchain") f.
unset(Feature::FiniteCapacity);
1229 f.
set({Feature::Sink, Feature::Source});
1230 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1231 f.
set({Feature::Delay, Feature::DelayStation, Feature::Queue});
1232 f.
set({Feature::APH, Feature::Coxian, Feature::Erlang, Feature::Exp, Feature::HyperExp,
1233 Feature::MAP, Feature::MMPP2});
1234 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1236 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
1237 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
1238 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
1239 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_FCFS});
1240 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1246 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass});
1247 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
1248 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE});
1249 f.
set(Feature::SignalBatchRemoval);
1307 f.
set({Feature::Sink, Feature::Source, Feature::Queue, Feature::Delay});
1310 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1311 Feature::JoinPartial});
1312 f.
set({Feature::Place, Feature::Transition, Feature::QueueingPlace});
1313 f.
set({Feature::Linkage, Feature::Enabling, Feature::Inhibiting, Feature::Timing,
1314 Feature::Firing, Feature::Storage});
1315 f.
set({Feature::Logger, Feature::LogTunnel, Feature::Buffer, Feature::Region});
1316 f.
set({Feature::Exp, Feature::Erlang, Feature::HyperExp, Feature::PH, Feature::APH,
1317 Feature::Coxian, Feature::Cox2});
1318 f.
set({Feature::MAP, Feature::DMAP, Feature::MMAP, Feature::BMAP, Feature::MMPP2,
1319 Feature::ME, Feature::RAP});
1320 f.
set({Feature::Immediate, Feature::Disabled, Feature::Replayer, Feature::Trace});
1321 f.
set({Feature::Det, Feature::Uniform, Feature::Gamma, Feature::Pareto, Feature::Weibull,
1322 Feature::Lognormal});
1326 f.
set({Feature::Geometric, Feature::Bernoulli, Feature::Binomial, Feature::Poisson});
1329 f.
set(Feature::BatchArrival);
1332 f.
set({Feature::NHPP, Feature::MAPt, Feature::PHt});
1333 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::InfiniteServer,
1334 Feature::SharedServer, Feature::ServiceTunnel, Feature::DelayStation});
1335 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_INF, Feature::SchedStrategy_HOL,
1336 Feature::SchedStrategy_FCFSPRIO});
1337 f.
set({Feature::SchedStrategy_PS, Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS});
1338 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
1339 Feature::SchedStrategy_LCFSPI});
1340 f.
set({Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1341 Feature::SchedStrategy_LPS, Feature::SchedStrategy_SIRO});
1342 f.
set({Feature::SchedStrategy_SJF, Feature::SchedStrategy_LJF, Feature::SchedStrategy_LEPT,
1343 Feature::SchedStrategy_SEPT});
1344 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1345 Feature::SchedStrategy_PSJF, Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT});
1346 f.
set({Feature::SchedStrategy_EXT, Feature::SchedStrategy_POLLING});
1347 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
1348 Feature::SchedStrategy_GPSPRIO});
1349 f.
set({Feature::SchedStrategy_LCFSPRIO, Feature::SchedStrategy_LCFSPRPRIO,
1350 Feature::SchedStrategy_LCFSPIPRIO});
1351 f.
set({Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO});
1352 f.
set({Feature::SchedStrategy_FSP, Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI});
1353 f.
set({Feature::SchedStrategy_EDD, Feature::SchedStrategy_EDF, Feature::SchedStrategy_SETF});
1354 f.
set({Feature::Router, Feature::Dispatcher, Feature::ClassSwitch,
1355 Feature::StatelessClassSwitcher});
1356 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::CacheRetrieval,
1357 Feature::CacheItemSize});
1358 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1359 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1360 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
1365 f.
set(Feature::HeteroServers);
1373 f.
set(Feature::RoutingStrategy_SDR);
1374 f.
set({Feature::OpenClass, Feature::ClosedClass, Feature::SelfLoopingClass});
1375 f.
set({Feature::OpenSignal, Feature::ClosedSignal, Feature::SignalType_NEGATIVE,
1376 Feature::SignalType_REPLY, Feature::SignalType_CATASTROPHE,
1377 Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
1378 f.
set({Feature::LoadDependence, Feature::ClassDependence, Feature::JointDependence,
1379 Feature::SetupDelayOff});
1380 f.
set({Feature::Balking, Feature::Reneging, Feature::Retrial});
1384 f.
set(Feature::Breakdown);
1385 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
1386 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU,
1387 Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
1388 Feature::ReplacementStrategy_QLRU});
1392 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1435 f.
set({Feature::Sink, Feature::Source, Feature::Queue, Feature::Delay, Feature::DelayStation});
1436 f.
set({Feature::Router, Feature::ClassSwitch, Feature::StatelessClassSwitcher,
1437 Feature::Dispatcher});
1439 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1440 Feature::JoinPartial});
1444 f.
set({Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1445 Feature::ForkBranchProbability});
1446 f.
set({Feature::Logger, Feature::LogTunnel, Feature::Buffer, Feature::Region,
1448 f.
set({Feature::Enabling, Feature::Inhibiting, Feature::Timing, Feature::Firing,
1449 Feature::Storage, Feature::Place, Feature::Transition});
1450 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::InfiniteServer,
1451 Feature::SharedServer, Feature::ServiceTunnel});
1458 f.
set(Feature::HeteroServers);
1459 f.
set({Feature::Exp, Feature::Erlang, Feature::HyperExp, Feature::PH, Feature::APH,
1460 Feature::Coxian, Feature::Cox2});
1461 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Weibull,
1463 f.
set({Feature::MAP, Feature::MMPP2, Feature::Replayer, Feature::Trace, Feature::Immediate,
1464 Feature::Disabled});
1465 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_PS,
1466 Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_LPS});
1467 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_HOL,
1468 Feature::SchedStrategy_FCFSPRIO});
1469 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
1470 Feature::SchedStrategy_GPSPRIO});
1471 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
1472 Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_LCFSPRIO,
1473 Feature::SchedStrategy_LCFSPRPRIO, Feature::SchedStrategy_LCFSPIPRIO});
1474 f.
set({Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1475 Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO});
1479 f.
set(Feature::ServerParallelism);
1480 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT, Feature::SchedStrategy_SJF,
1481 Feature::SchedStrategy_LJF});
1482 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1483 Feature::SchedStrategy_POLLING, Feature::SchedStrategy_EXT});
1484 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1485 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1486 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
1487 f.
set({Feature::OpenClass, Feature::ClosedClass, Feature::SelfLoopingClass});
1488 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
1489 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
1490 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
1491 f.
set({Feature::SetupDelayOff, Feature::Reneging, Feature::Balking});
1497 f.
set(Feature::Retrial);
1503 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1509 f.
set(Feature::LoadDependence);
1526 if (method.compare(0, 4,
"jmva") == 0) {
1528 {Feature::Cache, Feature::CacheClassSwitcher, Feature::ReplacementStrategy_RR,
1529 Feature::ReplacementStrategy_FIFO, Feature::ReplacementStrategy_SFIFO,
1530 Feature::ReplacementStrategy_LRU,
1532 Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1533 Feature::JoinPartial, Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1534 Feature::ForkBranchProbability,
1536 Feature::Place, Feature::Transition, Feature::Enabling, Feature::Inhibiting,
1537 Feature::Timing, Feature::Firing, Feature::Storage, Feature::Region,
1540 Feature::Reneging, Feature::Balking, Feature::Retrial,
1542 Feature::FiniteCapacity,
1544 Feature::SetupDelayOff, Feature::ServerParallelism, Feature::HeteroServers,
1549 Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_HOL,
1550 Feature::SchedStrategy_FCFSPRIO, Feature::SchedStrategy_PSPRIO,
1551 Feature::SchedStrategy_DPSPRIO, Feature::SchedStrategy_GPSPRIO,
1552 Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_LCFSPIPRIO,
1553 Feature::SchedStrategy_LCFSPRIO, Feature::SchedStrategy_LCFSPRPRIO,
1554 Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1555 Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO,
1556 Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT,
1557 Feature::SchedStrategy_SJF, Feature::SchedStrategy_LJF,
1558 Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1559 Feature::SchedStrategy_LPS, Feature::SchedStrategy_POLLING,
1562 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1563 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ})
1569 {Feature::OpenClass, Feature::LoadDependence, Feature::MultiServer})
1641 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue,
1642 Feature::Sink, Feature::Source, Feature::Router});
1643 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
1644 Feature::Buffer, Feature::Dispatcher, Feature::Server, Feature::JobSink,
1645 Feature::RandomSource, Feature::ServiceTunnel});
1648 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass});
1649 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
1650 Feature::HyperExp, Feature::PH});
1651 f.
set({Feature::Det, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1659 f.
set({Feature::MAP, Feature::MMPP2});
1660 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_FCFS,
1661 Feature::SchedStrategy_LCFSPR});
1662 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1671 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
1672 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
1702 if (fam ==
"bpt" || fam ==
"bgt" || fam ==
"snc") {
1703 f.
unset(Feature::ClosedClass);
1704 f.
unset(Feature::Delay);
1705 f.
unset(Feature::DelayStation);
1706 f.
unset(Feature::InfiniteServer);
1707 f.
unset(Feature::SchedStrategy_INF);
1726 f.
unset(Feature::APH);
1727 f.
unset(Feature::Coxian);
1728 f.
unset(Feature::Cox2);
1729 f.
unset(Feature::Erlang);
1730 f.
unset(Feature::HyperExp);
1731 f.
unset(Feature::PH);
1732 f.
unset(Feature::Det);
1733 f.
unset(Feature::Lognormal);
1734 f.
unset(Feature::Pareto);
1735 f.
unset(Feature::Uniform);
1736 f.
unset(Feature::Weibull);
1738 }
else if (fam ==
"sb" || fam ==
"harel" || fam ==
"sib" || fam ==
"scb" || fam ==
"lr") {
1739 f.
unset(Feature::Delay);
1740 f.
unset(Feature::DelayStation);
1741 f.
unset(Feature::InfiniteServer);
1742 f.
unset(Feature::SchedStrategy_INF);
1753 if (fam ==
"mapamva") {
1754 f.
unset(Feature::Delay);
1755 f.
unset(Feature::DelayStation);
1756 f.
unset(Feature::SchedStrategy_INF);
1758 f.
unset(Feature::MAP);
1759 f.
unset(Feature::MMPP2);
1769 if (fam ==
"ssd" || fam ==
"ldbcmp" || fam ==
"auto" || resolved ==
"qrf.mmi.ld" ||
1770 resolved ==
"qrf.mmi.linear")
1771 f.
set(Feature::MultiServer);
1777 if (resolved.compare(0, 7,
"qrf.bas") == 0 || resolved.compare(0, 8,
"qrf.rsrd") == 0)
1778 f.
set(Feature::FiniteCapacity);
1813 f.
set({Feature::Sink, Feature::Source, Feature::Router, Feature::ClassSwitch,
1814 Feature::Delay, Feature::DelayStation, Feature::Queue});
1815 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1816 f.
set({Feature::Logger, Feature::LogTunnel});
1817 f.
set({Feature::Coxian, Feature::Cox2, Feature::APH, Feature::Erlang, Feature::Exp,
1818 Feature::HyperExp, Feature::PH});
1819 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1821 f.
set({Feature::MAP, Feature::MMPP2, Feature::Replayer, Feature::Trace});
1822 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
1823 Feature::Buffer, Feature::Dispatcher, Feature::Server, Feature::JobSink,
1824 Feature::RandomSource, Feature::ServiceTunnel, Feature::Linkage});
1825 f.
set({Feature::Enabling, Feature::Timing, Feature::Firing, Feature::Storage,
1826 Feature::Place, Feature::Transition});
1827 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_DPS,
1828 Feature::SchedStrategy_FCFS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_SIRO,
1829 Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS,
1830 Feature::SchedStrategy_LCFSPR});
1831 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT, Feature::SchedStrategy_SJF,
1832 Feature::SchedStrategy_LJF, Feature::SchedStrategy_EXT});
1833 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1834 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1835 Feature::RoutingStrategy_SQ});
1836 f.
set({Feature::ClosedClass, Feature::OpenClass});
1842 f.
set(Feature::MultiServer);