203 f.
set({Feature::Sink, Feature::Source});
204 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
205 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
206 Feature::HyperExp, Feature::BMAP});
207 f.
set({Feature::Pareto, Feature::Weibull, Feature::Lognormal, Feature::Uniform, Feature::Det});
208 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
209 Feature::Buffer, Feature::Dispatcher});
210 f.
set({Feature::CacheClassSwitcher, Feature::Cache});
211 f.
set(Feature::CacheRetrieval);
212 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
213 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
214 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_SIRO,
215 Feature::SchedStrategy_HOL, Feature::SchedStrategy_FCFSPRPRIO});
216 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
217 Feature::SchedStrategy_POLLING});
218 f.
set({Feature::SchedStrategy_OI, Feature::SchedStrategy_PAS});
220 f.
set(Feature::SchedStrategy_SJF);
223 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_PSJF,
224 Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT,
225 Feature::SchedStrategy_SETF});
228 f.
set({Feature::Fork, Feature::Forker, Feature::Join, Feature::Joiner,
229 Feature::JoinPartial});
230 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
231 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
232 Feature::ReplacementStrategy_LRU, Feature::ReplacementStrategy_HLRU});
233 f.
set({Feature::MMAP, Feature::MPH});
234 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass, Feature::Replayer});
236 f.
set({Feature::LoadDependence, Feature::ClassDependence});
237 f.
set(Feature::JointDependence);
243 f.
set(Feature::MultiServer);
252 f.
unset(Feature::OpenClass);
263 f.
unset(Feature::LoadDependence);
264 f.
unset(Feature::ClassDependence);
265 f.
unset(Feature::JointDependence);
272 static const char* kLdRefused[] = {
"sum",
"esum",
"mvac",
"qli",
"fli",
273 "gflin",
"egflin",
"qna",
"rqna",
"rqt"};
275 for (
const char* n : kLdRefused)
276 if (method == n) ld_refused =
true;
278 f.
unset(Feature::LoadDependence);
279 f.
unset(Feature::ClassDependence);
280 f.
unset(Feature::JointDependence);
281 }
else if (method ==
"mva" || method ==
"exact") {
282 f.
unset(Feature::ClassDependence);
283 f.
unset(Feature::JointDependence);
286 if (method !=
"default" && method !=
"exact") {
290 f.
unset(Feature::SchedStrategy_OI);
291 f.
unset(Feature::SchedStrategy_PAS);
293 if (method ==
"sum" || method ==
"esum") {
297 }
else if (method ==
"mvac") {
300 f.
unset(Feature::OpenClass);
303 if (method ==
"mapqn") {
306 f.
set({Feature::MAP, Feature::MMPP2});
307 for (
Feature x : {Feature::OpenClass, Feature::Source, Feature::Sink, Feature::Fork, Feature::Forker,
308 Feature::Join, Feature::Joiner, Feature::JoinPartial, Feature::ClassSwitch,
309 Feature::StatelessClassSwitcher, Feature::Cache, Feature::CacheClassSwitcher,
310 Feature::CacheRetrieval, Feature::LoadDependence, Feature::ClassDependence,
311 Feature::JointDependence, Feature::SchedStrategy_PS, Feature::SchedStrategy_SIRO,
312 Feature::SchedStrategy_LCFSPR, Feature::SchedStrategy_SRPT, Feature::SchedStrategy_PSJF,
313 Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT, Feature::SchedStrategy_SETF,
314 Feature::SchedStrategy_OI, Feature::SchedStrategy_PAS})
318 if (method ==
"rqna") {
320 f.
set({Feature::MAP, Feature::MMPP2, Feature::MMAP, Feature::MPH, Feature::RAP});
321 f.
unset(Feature::ClosedClass);
322 f.
unset(Feature::SelfLoopingClass);
323 }
else if (method ==
"rqt") {
326 f.
unset(Feature::ClosedClass);
327 f.
unset(Feature::SelfLoopingClass);
329 if (method ==
"qna") {
334 f.
set(Feature::RoutingStrategy_RROBIN);
335 f.
unset(Feature::ClosedClass);
336 f.
unset(Feature::SelfLoopingClass);
340 f.
unset(Feature::SchedStrategy_SIRO);
341 f.
unset(Feature::SchedStrategy_LCFSPR);
343 }
else if (method ==
"erlanga" || method ==
"mgisrgi") {
348 f.
set(Feature::Reneging);
349 f.
unset(Feature::ClosedClass);
350 f.
unset(Feature::SelfLoopingClass);
352 if (method ==
"rqna" || method ==
"rqt") {
358 f.
unset(Feature::Fork);
359 f.
unset(Feature::Forker);
360 f.
unset(Feature::Join);
361 f.
unset(Feature::Joiner);
362 f.
unset(Feature::JoinPartial);
372 static const char* kSingleServer[] = {
"aql",
"qsa",
"tay",
"mvac",
"rqna",
"sjn.mva",
373 "sjn.amva",
"mm1",
"mg1",
"mgi1",
"gm1",
"gim1"};
374 bool single = method.compare(0, 4,
"gig1") == 0;
375 for (
const char* n : kSingleServer)
376 if (method == n) single =
true;
377 if (single) f.
unset(Feature::MultiServer);
388 if (method ==
"default" || method ==
"sqd") f.
set(Feature::FiniteCapacity);
421 f.
set({Feature::Sink, Feature::Source});
422 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
423 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Det,
424 Feature::Exp, Feature::HyperExp});
428 f.
set(Feature::Geometric);
429 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
430 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
431 f.
set(Feature::Region);
432 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
433 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_SIRO});
434 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR});
439 f.
set(Feature::SchedStrategy_DPS);
442 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
443 Feature::RoutingStrategy_SDR});
444 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_OI, Feature::SchedStrategy_PAS});
447 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
448 Feature::JoinPartial});
449 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass});
450 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::OpenClass});
451 f.
set(Feature::CacheRetrieval);
452 f.
set(Feature::CacheItemSize);
453 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO});
454 f.
set(Feature::ReplacementStrategy_HLRU);
459 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
460 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
461 f.
set({Feature::LoadDependence, Feature::ClassDependence});
462 f.
set(Feature::JointDependence);
467 f.
set(Feature::MultiServer);
481 if (method !=
"default" && method !=
"exact") {
482 f.
unset(Feature::ClassDependence);
483 f.
unset(Feature::JointDependence);
484 }
else if (method ==
"exact") {
485 f.
unset(Feature::JointDependence);
501 if (method ==
"divdiff") {
507 f.
unset(Feature::SchedStrategy_INF);
508 }
else if (method ==
"rd" || method ==
"nrp" || method ==
"nrl" || method ==
"nre" ||
509 method ==
"comomld" || method ==
"panald" || method ==
"is") {
517 f.
unset(Feature::OpenClass);
523 if (method ==
"divdiff") f.
unset(Feature::MultiServer);
529 if (method ==
"mem" || method ==
"default" || method ==
"exact")
530 f.
set(Feature::FiniteCapacity);
542 if (method ==
"cftp" || method ==
"cftp.approx" || method ==
"cftp.exact") {
543 f.
unset(Feature::OpenClass);
545 f.
unset(Feature::Source);
546 f.
unset(Feature::Sink);
547 f.
unset(Feature::RandomSource);
548 f.
unset(Feature::JobSink);
549 f.
unset(Feature::ClassSwitch);
550 f.
unset(Feature::StatelessClassSwitcher);
551 f.
unset(Feature::Cache);
552 f.
unset(Feature::CacheClassSwitcher);
553 f.
unset(Feature::CacheRetrieval);
554 f.
unset(Feature::CacheItemSize);
555 f.
unset(Feature::ReplacementStrategy_RR);
556 f.
unset(Feature::ReplacementStrategy_FIFO);
557 f.
unset(Feature::ReplacementStrategy_SFIFO);
558 f.
unset(Feature::ReplacementStrategy_LRU);
559 f.
unset(Feature::ReplacementStrategy_HLRU);
560 f.
unset(Feature::ReplacementStrategy_CLIMB);
561 f.
unset(Feature::ReplacementStrategy_QLRU);
562 f.
unset(Feature::Fork);
563 f.
unset(Feature::Join);
564 f.
unset(Feature::Forker);
565 f.
unset(Feature::Joiner);
566 f.
unset(Feature::JoinPartial);
567 f.
unset(Feature::Place);
568 f.
unset(Feature::Transition);
569 f.
unset(Feature::Linkage);
570 f.
unset(Feature::Enabling);
571 f.
unset(Feature::Inhibiting);
572 f.
unset(Feature::Timing);
573 f.
unset(Feature::Firing);
574 f.
unset(Feature::Storage);
578 f.
unset(Feature::SchedStrategy_DPS);
579 f.
unset(Feature::SchedStrategy_GPS);
580 f.
unset(Feature::SchedStrategy_SEPT);
581 f.
unset(Feature::SchedStrategy_LEPT);
582 f.
unset(Feature::SchedStrategy_HOL);
583 f.
unset(Feature::SchedStrategy_LCFS);
584 f.
unset(Feature::SchedStrategy_LCFSPRPRIO);
585 f.
unset(Feature::SchedStrategy_FCFSPRPRIO);
586 f.
unset(Feature::SchedStrategy_FCFSPR);
587 f.
unset(Feature::SchedStrategy_LCFSPI);
588 f.
unset(Feature::SchedStrategy_FCFSPI);
589 f.
unset(Feature::SchedStrategy_LCFSPIPRIO);
590 f.
unset(Feature::SchedStrategy_FCFSPIPRIO);
591 f.
unset(Feature::SchedStrategy_PSPRIO);
592 f.
unset(Feature::SchedStrategy_DPSPRIO);
593 f.
unset(Feature::SchedStrategy_GPSPRIO);
594 f.
unset(Feature::SchedStrategy_LPS);
595 f.
unset(Feature::SchedStrategy_PAS);
596 f.
unset(Feature::SchedStrategy_OI);
597 f.
unset(Feature::SchedStrategy_POLLING);
598 f.
unset(Feature::Region);
599 f.
unset(Feature::LoadDependence);
600 f.
unset(Feature::ClassDependence);
601 f.
unset(Feature::JointDependence);
602 f.
unset(Feature::GlobalDependence);
605 f.
unset(Feature::RoutingStrategy_RROBIN);
606 f.
unset(Feature::RoutingStrategy_WRROBIN);
607 f.
unset(Feature::RoutingStrategy_JSQ);
608 f.
unset(Feature::RoutingStrategy_SQ);
609 f.
unset(Feature::RoutingStrategy_SDR);
611 f.
unset(Feature::Geometric);
615 f.
unset(Feature::FiniteCapacity);
630 f.
set({Feature::Source, Feature::Sink});
635 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue,
638 f.
set({Feature::MAP, Feature::APH, Feature::MMPP2, Feature::MMAP, Feature::MPH, Feature::PH,
639 Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp, Feature::HyperExp,
641 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
643 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
644 Feature::Buffer, Feature::Dispatcher});
646 f.
set(Feature::Region);
647 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
648 f.
set(Feature::CacheRetrieval);
649 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
650 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
651 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS});
652 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_SEPT});
653 f.
set({Feature::SchedStrategy_LEPT, Feature::SchedStrategy_FCFS});
654 f.
set({Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS});
655 f.
set({Feature::SchedStrategy_LCFSPR, Feature::SchedStrategy_LCFSPRPRIO,
656 Feature::SchedStrategy_FCFSPRPRIO});
662 f.
set({Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_FCFSPR,
663 Feature::SchedStrategy_FCFSPI});
664 f.
set({Feature::SchedStrategy_LCFSPIPRIO, Feature::SchedStrategy_FCFSPIPRIO});
665 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
666 Feature::SchedStrategy_GPSPRIO});
667 f.
set({Feature::SchedStrategy_LPS, Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI,
668 Feature::SchedStrategy_POLLING});
675 f.
set({Feature::RoutingStrategy_WRROBIN, Feature::RoutingStrategy_JSQ,
676 Feature::RoutingStrategy_SQ});
681 f.
set(Feature::RoutingStrategy_SDR);
682 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
689 f.
set({Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN});
690 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
691 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
692 f.
set({Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
693 Feature::ReplacementStrategy_QLRU});
694 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass, Feature::Replayer});
695 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
696 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE,
697 Feature::SignalType_REPLY});
698 f.
set({Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
699 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
700 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
701 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
702 f.
set(Feature::Retrial);
717 f.
set({Feature::Balking, Feature::Reneging, Feature::Breakdown});
718 f.
set({Feature::LoadDependence, Feature::ClassDependence, Feature::JointDependence});
720 f.
set(Feature::GlobalDependence);
724 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
732 if (method ==
"mdd") {
743 f.
unset(Feature::OpenClass);
744 f.
unset(Feature::Source);
745 f.
unset(Feature::Sink);
746 f.
unset(Feature::RandomSource);
747 f.
unset(Feature::JobSink);
748 f.
unset(Feature::Fork);
749 f.
unset(Feature::Join);
750 f.
unset(Feature::Forker);
751 f.
unset(Feature::Joiner);
752 f.
unset(Feature::JoinPartial);
755 f.
unset(Feature::FiniteCapacity);
793 f.
set({Feature::Sink, Feature::Source, Feature::Router});
794 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
795 f.
set({Feature::MAP, Feature::MMPP2, Feature::MMAP, Feature::MPH, Feature::APH, Feature::PH,
797 f.
set({Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp, Feature::HyperExp});
798 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
800 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
801 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
802 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
803 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
804 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS});
805 f.
set({Feature::SchedStrategy_GPS, Feature::SchedStrategy_LPS, Feature::SchedStrategy_SIRO});
806 f.
set({Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS});
807 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT});
808 f.
set(Feature::SchedStrategy_LCFSPR);
823 f.
set({Feature::SchedStrategy_LCFSPRPRIO, Feature::SchedStrategy_FCFSPRPRIO});
824 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
825 Feature::SchedStrategy_GPSPRIO});
830 f.
set({Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI,
831 Feature::SchedStrategy_POLLING});
834 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
837 f.
set(Feature::Region);
840 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::CacheRetrieval});
843 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
844 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
845 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
849 f.
set(Feature::RoutingStrategy_SDR);
856 f.
set({Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
857 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
858 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
859 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
860 f.
set({Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
861 Feature::ReplacementStrategy_QLRU});
862 f.
set({Feature::SchedStrategy_EXT, Feature::ClosedClass, Feature::SelfLoopingClass,
863 Feature::OpenClass});
864 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
865 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE});
869 f.
set(Feature::SignalType_REPLY);
870 f.
set({Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
871 f.
set(Feature::Retrial);
873 f.
set({Feature::Balking, Feature::Reneging});
874 f.
set(Feature::LoadDependence);
878 f.
set({Feature::ClassDependence, Feature::JointDependence});
881 f.
set(Feature::GlobalDependence);
885 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
914 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
915 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
916 f.
set({Feature::Cox2, Feature::Coxian, Feature::Erlang, Feature::Exp, Feature::HyperExp});
917 f.
set({Feature::APH, Feature::Det, Feature::MAP, Feature::MMPP2, Feature::NHPP});
921 f.
set({Feature::MAPt, Feature::PHt});
923 f.
set({Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
925 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
926 Feature::Buffer, Feature::Dispatcher});
927 f.
set({Feature::Server, Feature::ServiceTunnel});
928 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
929 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_HOL});
930 f.
set({Feature::SchedStrategy_GPS});
931 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_LCFS,
932 Feature::SchedStrategy_LCFSPR});
933 f.
set(Feature::LoadDependence);
934 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO});
935 f.
set(Feature::ReplacementStrategy_SFIFO);
936 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
937 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::Replayer});
938 f.
set({Feature::RandomSource, Feature::Sink, Feature::Source, Feature::OpenClass,
946 f.
set({Feature::Fork, Feature::Forker, Feature::Join, Feature::Joiner,
947 Feature::JoinPartial});
950 f.
set(Feature::MultiServer);
957 f.
set(Feature::FiniteCapacity);
965 (method.size() > 4 && method.compare(0, 4,
"fld.") == 0) ? method.substr(4) : method;
966 if (m ==
"aoi") m =
"mfq";
967 const bool closing_family =
968 m ==
"closing" || m ==
"statedep" || m ==
"softmin" || m ==
"tbi" || m ==
"minnormal" ||
969 m ==
"refined" || m ==
"dae";
974 if (!(m ==
"closing" || m ==
"minnormal" || m ==
"refined" || m ==
"dae"))
975 f.
unset(Feature::LoadDependence);
981 if (closing_family) {
982 f.
unset(Feature::SchedStrategy_SIRO);
983 f.
unset(Feature::SchedStrategy_LCFS);
984 f.
unset(Feature::SchedStrategy_LCFSPR);
993 if (m !=
"minnormal") f.
unset(Feature::SchedStrategy_GPS);
997 if (m !=
"mfq") f.
unset(Feature::SchedStrategy_HOL);
1003 if (m ==
"diffusion" || m ==
"mfq") f.
unset(Feature::MultiServer);
1022 f.
set(Feature::Region);
1023 f.
unset(Feature::SchedStrategy_DPS);
1038 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
1039 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
1068 if (m ==
"diffusion" || m ==
"kp") {
1069 f.
unset(Feature::Fork);
1070 f.
unset(Feature::Forker);
1071 f.
unset(Feature::Join);
1072 f.
unset(Feature::Joiner);
1073 f.
unset(Feature::JoinPartial);
1097 if (m ==
"ggisgi" || m ==
"ggingi" || m ==
"tvms") {
1102 f.
set(Feature::Reneging);
1104 if (m ==
"ggisgi" || m ==
"ggingi" || m ==
"tvms" || m ==
"mtginf" ||
1108 f.
unset(Feature::ClosedClass);
1109 f.
unset(Feature::SelfLoopingClass);
1117 if (m ==
"refined") {
1118 f.
unset(Feature::OpenClass);
1119 f.
unset(Feature::Source);
1120 f.
unset(Feature::Sink);
1121 f.
unset(Feature::RandomSource);
1122 f.
unset(Feature::JobSink);
1129 if (m ==
"diffusion") {
1130 f.
unset(Feature::OpenClass);
1131 f.
unset(Feature::Source);
1132 f.
unset(Feature::Sink);
1133 f.
unset(Feature::RandomSource);
1134 f.
unset(Feature::JobSink);
1145 f.
unset(Feature::ClosedClass);
1146 f.
unset(Feature::SelfLoopingClass);
1147 f.
unset(Feature::Cache);
1148 f.
unset(Feature::CacheClassSwitcher);
1149 f.
unset(Feature::ClassSwitch);
1150 f.
unset(Feature::StatelessClassSwitcher);
1151 f.
unset(Feature::ReplacementStrategy_RR);
1152 f.
unset(Feature::ReplacementStrategy_FIFO);
1153 f.
unset(Feature::ReplacementStrategy_SFIFO);
1160 f.
unset(Feature::OpenClass);
1161 f.
unset(Feature::Source);
1162 f.
unset(Feature::Sink);
1163 f.
unset(Feature::RandomSource);
1164 f.
unset(Feature::JobSink);
1165 f.
unset(Feature::Cache);
1166 f.
unset(Feature::CacheClassSwitcher);
1167 f.
unset(Feature::ReplacementStrategy_RR);
1168 f.
unset(Feature::ReplacementStrategy_FIFO);
1169 f.
unset(Feature::ReplacementStrategy_SFIFO);
1203 f.
set({Feature::Sink, Feature::Source});
1204 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1205 f.
set({Feature::Delay, Feature::DelayStation, Feature::Queue});
1207 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
1208 Feature::HyperExp, Feature::MMPP2, Feature::MAP, Feature::MMAP, Feature::MPH,
1209 Feature::DMAP, Feature::ME, Feature::RAP});
1214 f.
set({Feature::Geometric, Feature::DiscreteUniform});
1215 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1217 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
1218 f.
set(Feature::ClassSwitch);
1219 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
1220 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
1221 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_HOL});
1222 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_FCFSPRPRIO});
1223 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1224 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass});
1225 f.
set(Feature::OpenClass);
1231 f.
set({Feature::Retrial, Feature::BMAP, Feature::PH});
1233 f.
set(Feature::SetupDelayOff);
1239 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1253 if (method ==
"dec.mmap")
1254 for (
Feature ff : {Feature::ClosedClass, Feature::SelfLoopingClass,
1255 Feature::SchedStrategy_INF, Feature::Fork, Feature::Join,
1256 Feature::Forker, Feature::Joiner})
1259 if (method ==
"default" || method ==
"ldqbd") f.
set(Feature::LoadDependence);
1264 if (method ==
"mna") f.
set(Feature::RoutingStrategy_RROBIN);
1270 if (method ==
"ldqbd" || method ==
"bgchain") f.
unset(Feature::FiniteCapacity);
1289 f.
set({Feature::Sink, Feature::Source});
1290 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1291 f.
set({Feature::Delay, Feature::DelayStation, Feature::Queue});
1292 f.
set({Feature::APH, Feature::Coxian, Feature::Erlang, Feature::Exp, Feature::HyperExp,
1293 Feature::MAP, Feature::MMPP2});
1294 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1296 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
1297 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
1298 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
1299 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_FCFS});
1300 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1306 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass});
1307 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
1308 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE});
1309 f.
set(Feature::SignalBatchRemoval);
1367 f.
set({Feature::Sink, Feature::Source, Feature::Queue, Feature::Delay});
1370 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1371 Feature::JoinPartial});
1377 f.
set({Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1378 Feature::ForkBranchProbability});
1379 f.
set({Feature::Place, Feature::Transition, Feature::QueueingPlace});
1380 f.
set({Feature::Linkage, Feature::Enabling, Feature::Inhibiting, Feature::Timing,
1381 Feature::Firing, Feature::Storage});
1382 f.
set({Feature::Logger, Feature::LogTunnel, Feature::Buffer, Feature::Region});
1383 f.
set({Feature::Exp, Feature::Erlang, Feature::HyperExp, Feature::PH, Feature::APH,
1384 Feature::Coxian, Feature::Cox2});
1385 f.
set({Feature::MAP, Feature::DMAP, Feature::MMAP, Feature::MPH, Feature::BMAP,
1386 Feature::MMPP2, Feature::ME, Feature::RAP});
1387 f.
set({Feature::Immediate, Feature::Disabled, Feature::Replayer, Feature::Trace});
1388 f.
set({Feature::Det, Feature::Uniform, Feature::Gamma, Feature::Pareto, Feature::Weibull,
1389 Feature::Lognormal});
1393 f.
set({Feature::Geometric, Feature::Bernoulli, Feature::Binomial, Feature::Poisson});
1397 f.
set(Feature::DiscreteUniform);
1400 f.
set(Feature::BatchArrival);
1406 f.
set({Feature::NHPP, Feature::MAPt, Feature::PHt, Feature::MMAPt, Feature::MPHt});
1413 f.
set(Feature::BMMAPt);
1414 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::InfiniteServer,
1415 Feature::SharedServer, Feature::ServiceTunnel, Feature::DelayStation});
1416 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_INF, Feature::SchedStrategy_HOL,
1417 Feature::SchedStrategy_FCFSPRIO});
1418 f.
set({Feature::SchedStrategy_PS, Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS});
1419 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
1420 Feature::SchedStrategy_LCFSPI});
1421 f.
set({Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1422 Feature::SchedStrategy_LPS, Feature::SchedStrategy_SIRO});
1423 f.
set({Feature::SchedStrategy_SJF, Feature::SchedStrategy_LJF, Feature::SchedStrategy_LEPT,
1424 Feature::SchedStrategy_SEPT});
1425 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1426 Feature::SchedStrategy_PSJF, Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT});
1427 f.
set({Feature::SchedStrategy_EXT, Feature::SchedStrategy_POLLING});
1428 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
1429 Feature::SchedStrategy_GPSPRIO});
1430 f.
set({Feature::SchedStrategy_LCFSPRIO, Feature::SchedStrategy_LCFSPRPRIO,
1431 Feature::SchedStrategy_LCFSPIPRIO});
1432 f.
set({Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO});
1433 f.
set({Feature::SchedStrategy_FSP, Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI});
1434 f.
set({Feature::SchedStrategy_EDD, Feature::SchedStrategy_EDF, Feature::SchedStrategy_SETF});
1435 f.
set({Feature::Router, Feature::Dispatcher, Feature::ClassSwitch,
1436 Feature::StatelessClassSwitcher});
1437 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::CacheRetrieval,
1438 Feature::CacheItemSize});
1439 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1440 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1441 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
1446 f.
set(Feature::HeteroServers);
1454 f.
set(Feature::RoutingStrategy_SDR);
1455 f.
set({Feature::OpenClass, Feature::ClosedClass, Feature::SelfLoopingClass});
1456 f.
set({Feature::OpenSignal, Feature::ClosedSignal, Feature::SignalType_NEGATIVE,
1457 Feature::SignalType_REPLY, Feature::SignalType_CATASTROPHE,
1458 Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
1459 f.
set({Feature::LoadDependence, Feature::ClassDependence, Feature::JointDependence,
1460 Feature::SetupDelayOff});
1467 f.
set(Feature::GlobalDependence);
1474 f.
set(Feature::ServerParallelism);
1475 f.
set({Feature::Balking, Feature::Reneging, Feature::Retrial});
1478 f.
set(Feature::Breakdown);
1479 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
1480 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU,
1481 Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
1482 Feature::ReplacementStrategy_QLRU});
1486 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1529 f.
set({Feature::Sink, Feature::Source, Feature::Queue, Feature::Delay, Feature::DelayStation});
1530 f.
set({Feature::Router, Feature::ClassSwitch, Feature::StatelessClassSwitcher,
1531 Feature::Dispatcher});
1533 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1534 Feature::JoinPartial});
1538 f.
set({Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1539 Feature::ForkBranchProbability});
1540 f.
set({Feature::Logger, Feature::LogTunnel, Feature::Buffer, Feature::Region,
1542 f.
set({Feature::Enabling, Feature::Inhibiting, Feature::Timing, Feature::Firing,
1543 Feature::Storage, Feature::Place, Feature::Transition});
1544 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::InfiniteServer,
1545 Feature::SharedServer, Feature::ServiceTunnel});
1552 f.
set(Feature::HeteroServers);
1553 f.
set({Feature::Exp, Feature::Erlang, Feature::HyperExp, Feature::PH, Feature::APH,
1554 Feature::Coxian, Feature::Cox2});
1555 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Weibull,
1557 f.
set({Feature::MAP, Feature::MMPP2, Feature::Replayer, Feature::Trace, Feature::Immediate,
1558 Feature::Disabled});
1559 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_PS,
1560 Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_LPS});
1561 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_HOL,
1562 Feature::SchedStrategy_FCFSPRIO});
1563 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
1564 Feature::SchedStrategy_GPSPRIO});
1565 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
1566 Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_LCFSPRIO,
1567 Feature::SchedStrategy_LCFSPRPRIO, Feature::SchedStrategy_LCFSPIPRIO});
1568 f.
set({Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1569 Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO});
1573 f.
set(Feature::ServerParallelism);
1574 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT, Feature::SchedStrategy_SJF,
1575 Feature::SchedStrategy_LJF});
1576 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1577 Feature::SchedStrategy_POLLING, Feature::SchedStrategy_EXT});
1578 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1579 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1580 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
1581 f.
set({Feature::OpenClass, Feature::ClosedClass, Feature::SelfLoopingClass});
1582 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
1583 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
1584 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
1585 f.
set({Feature::SetupDelayOff, Feature::Reneging, Feature::Balking});
1591 f.
set(Feature::Retrial);
1597 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1603 f.
set(Feature::LoadDependence);
1620 if (method.compare(0, 4,
"jmva") == 0) {
1622 {Feature::Cache, Feature::CacheClassSwitcher, Feature::ReplacementStrategy_RR,
1623 Feature::ReplacementStrategy_FIFO, Feature::ReplacementStrategy_SFIFO,
1624 Feature::ReplacementStrategy_LRU,
1626 Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1627 Feature::JoinPartial, Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1628 Feature::ForkBranchProbability,
1630 Feature::Place, Feature::Transition, Feature::Enabling, Feature::Inhibiting,
1631 Feature::Timing, Feature::Firing, Feature::Storage, Feature::Region,
1634 Feature::Reneging, Feature::Balking, Feature::Retrial,
1636 Feature::FiniteCapacity,
1638 Feature::SetupDelayOff, Feature::ServerParallelism, Feature::HeteroServers,
1643 Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_HOL,
1644 Feature::SchedStrategy_FCFSPRIO, Feature::SchedStrategy_PSPRIO,
1645 Feature::SchedStrategy_DPSPRIO, Feature::SchedStrategy_GPSPRIO,
1646 Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_LCFSPIPRIO,
1647 Feature::SchedStrategy_LCFSPRIO, Feature::SchedStrategy_LCFSPRPRIO,
1648 Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1649 Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO,
1650 Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT,
1651 Feature::SchedStrategy_SJF, Feature::SchedStrategy_LJF,
1652 Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1653 Feature::SchedStrategy_LPS, Feature::SchedStrategy_POLLING,
1656 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1657 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ})
1663 {Feature::OpenClass, Feature::LoadDependence, Feature::MultiServer})
1735 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue,
1736 Feature::Sink, Feature::Source, Feature::Router});
1737 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
1738 Feature::Buffer, Feature::Dispatcher, Feature::Server, Feature::JobSink,
1739 Feature::RandomSource, Feature::ServiceTunnel});
1742 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass});
1743 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
1744 Feature::HyperExp, Feature::PH});
1745 f.
set({Feature::Det, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1753 f.
set({Feature::MAP, Feature::MMPP2});
1754 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_FCFS,
1755 Feature::SchedStrategy_LCFSPR});
1756 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1765 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
1766 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
1796 if (fam ==
"bpt" || fam ==
"bgt" || fam ==
"snc") {
1797 f.
unset(Feature::ClosedClass);
1798 f.
unset(Feature::Delay);
1799 f.
unset(Feature::DelayStation);
1800 f.
unset(Feature::InfiniteServer);
1801 f.
unset(Feature::SchedStrategy_INF);
1820 f.
unset(Feature::APH);
1821 f.
unset(Feature::Coxian);
1822 f.
unset(Feature::Cox2);
1823 f.
unset(Feature::Erlang);
1824 f.
unset(Feature::HyperExp);
1825 f.
unset(Feature::PH);
1826 f.
unset(Feature::Det);
1827 f.
unset(Feature::Lognormal);
1828 f.
unset(Feature::Pareto);
1829 f.
unset(Feature::Uniform);
1830 f.
unset(Feature::Weibull);
1832 }
else if (fam ==
"sb" || fam ==
"harel" || fam ==
"sib" || fam ==
"scb" || fam ==
"lr") {
1833 f.
unset(Feature::Delay);
1834 f.
unset(Feature::DelayStation);
1835 f.
unset(Feature::InfiniteServer);
1836 f.
unset(Feature::SchedStrategy_INF);
1847 if (fam ==
"mapamva") {
1848 f.
unset(Feature::Delay);
1849 f.
unset(Feature::DelayStation);
1850 f.
unset(Feature::SchedStrategy_INF);
1852 f.
unset(Feature::MAP);
1853 f.
unset(Feature::MMPP2);
1863 if (fam ==
"ssd" || fam ==
"ldac" || fam ==
"auto" || resolved ==
"qrf.mmi.ld" ||
1864 resolved ==
"qrf.mmi.linear")
1865 f.
set(Feature::MultiServer);
1871 if (resolved.compare(0, 7,
"qrf.bas") == 0 || resolved.compare(0, 8,
"qrf.rsrd") == 0)
1872 f.
set(Feature::FiniteCapacity);
1907 f.
set({Feature::Sink, Feature::Source, Feature::Router, Feature::ClassSwitch,
1908 Feature::Delay, Feature::DelayStation, Feature::Queue});
1909 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1910 f.
set({Feature::Logger, Feature::LogTunnel});
1911 f.
set({Feature::Coxian, Feature::Cox2, Feature::APH, Feature::Erlang, Feature::Exp,
1912 Feature::HyperExp, Feature::PH});
1913 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1915 f.
set({Feature::MAP, Feature::MMPP2, Feature::Replayer, Feature::Trace});
1916 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
1917 Feature::Buffer, Feature::Dispatcher, Feature::Server, Feature::JobSink,
1918 Feature::RandomSource, Feature::ServiceTunnel, Feature::Linkage});
1919 f.
set({Feature::Enabling, Feature::Timing, Feature::Firing, Feature::Storage,
1920 Feature::Place, Feature::Transition});
1921 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_DPS,
1922 Feature::SchedStrategy_FCFS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_SIRO,
1923 Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS,
1924 Feature::SchedStrategy_LCFSPR});
1925 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT, Feature::SchedStrategy_SJF,
1926 Feature::SchedStrategy_LJF, Feature::SchedStrategy_EXT});
1927 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1928 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1929 Feature::RoutingStrategy_SQ});
1930 f.
set({Feature::ClosedClass, Feature::OpenClass});
1936 f.
set(Feature::MultiServer);