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});
727 f.
set(Feature::HeteroServers);
735 if (method ==
"mdd") {
746 f.
unset(Feature::OpenClass);
747 f.
unset(Feature::Source);
748 f.
unset(Feature::Sink);
749 f.
unset(Feature::RandomSource);
750 f.
unset(Feature::JobSink);
751 f.
unset(Feature::Fork);
752 f.
unset(Feature::Join);
753 f.
unset(Feature::Forker);
754 f.
unset(Feature::Joiner);
755 f.
unset(Feature::JoinPartial);
758 f.
unset(Feature::FiniteCapacity);
760 f.
unset(Feature::HeteroServers);
798 f.
set({Feature::Sink, Feature::Source, Feature::Router});
799 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
800 f.
set({Feature::MAP, Feature::MMPP2, Feature::MMAP, Feature::MPH, Feature::APH, Feature::PH,
802 f.
set({Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp, Feature::HyperExp});
803 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
805 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
806 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
807 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
808 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
809 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS});
810 f.
set({Feature::SchedStrategy_GPS, Feature::SchedStrategy_LPS, Feature::SchedStrategy_SIRO});
811 f.
set({Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS});
812 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT});
813 f.
set(Feature::SchedStrategy_LCFSPR);
828 f.
set({Feature::SchedStrategy_LCFSPRPRIO, Feature::SchedStrategy_FCFSPRPRIO});
829 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
830 Feature::SchedStrategy_GPSPRIO});
835 f.
set({Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI,
836 Feature::SchedStrategy_POLLING});
839 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
842 f.
set(Feature::Region);
845 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::CacheRetrieval});
848 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
849 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
850 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
854 f.
set(Feature::RoutingStrategy_SDR);
861 f.
set({Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
862 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
863 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
864 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
865 f.
set({Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
866 Feature::ReplacementStrategy_QLRU});
867 f.
set({Feature::SchedStrategy_EXT, Feature::ClosedClass, Feature::SelfLoopingClass,
868 Feature::OpenClass});
869 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
870 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE});
874 f.
set(Feature::SignalType_REPLY);
875 f.
set({Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
876 f.
set(Feature::Retrial);
878 f.
set({Feature::Balking, Feature::Reneging});
879 f.
set(Feature::LoadDependence);
883 f.
set({Feature::ClassDependence, Feature::JointDependence});
886 f.
set(Feature::GlobalDependence);
890 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
919 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue});
920 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
921 f.
set({Feature::Cox2, Feature::Coxian, Feature::Erlang, Feature::Exp, Feature::HyperExp});
922 f.
set({Feature::APH, Feature::Det, Feature::MAP, Feature::MMPP2, Feature::NHPP});
926 f.
set({Feature::MAPt, Feature::PHt});
928 f.
set({Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
930 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
931 Feature::Buffer, Feature::Dispatcher});
932 f.
set({Feature::Server, Feature::ServiceTunnel});
933 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS});
934 f.
set({Feature::SchedStrategy_DPS, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_HOL});
935 f.
set({Feature::SchedStrategy_GPS});
936 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_LCFS,
937 Feature::SchedStrategy_LCFSPR});
938 f.
set(Feature::LoadDependence);
939 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO});
940 f.
set(Feature::ReplacementStrategy_SFIFO);
941 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
942 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::Replayer});
943 f.
set({Feature::RandomSource, Feature::Sink, Feature::Source, Feature::OpenClass,
951 f.
set({Feature::Fork, Feature::Forker, Feature::Join, Feature::Joiner,
952 Feature::JoinPartial});
955 f.
set(Feature::MultiServer);
962 f.
set(Feature::FiniteCapacity);
970 (method.size() > 4 && method.compare(0, 4,
"fld.") == 0) ? method.substr(4) : method;
971 if (m ==
"aoi") m =
"mfq";
972 const bool closing_family =
973 m ==
"closing" || m ==
"statedep" || m ==
"softmin" || m ==
"tbi" || m ==
"minnormal" ||
974 m ==
"refined" || m ==
"dae";
979 if (!(m ==
"closing" || m ==
"minnormal" || m ==
"refined" || m ==
"dae"))
980 f.
unset(Feature::LoadDependence);
986 if (closing_family) {
987 f.
unset(Feature::SchedStrategy_SIRO);
988 f.
unset(Feature::SchedStrategy_LCFS);
989 f.
unset(Feature::SchedStrategy_LCFSPR);
998 if (m !=
"minnormal") f.
unset(Feature::SchedStrategy_GPS);
1002 if (m !=
"mfq") f.
unset(Feature::SchedStrategy_HOL);
1008 if (m ==
"diffusion" || m ==
"mfq") f.
unset(Feature::MultiServer);
1027 f.
set(Feature::Region);
1028 f.
unset(Feature::SchedStrategy_DPS);
1043 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
1044 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
1073 if (m ==
"diffusion" || m ==
"kp") {
1074 f.
unset(Feature::Fork);
1075 f.
unset(Feature::Forker);
1076 f.
unset(Feature::Join);
1077 f.
unset(Feature::Joiner);
1078 f.
unset(Feature::JoinPartial);
1102 if (m ==
"ggisgi" || m ==
"ggingi" || m ==
"tvms") {
1107 f.
set(Feature::Reneging);
1109 if (m ==
"ggisgi" || m ==
"ggingi" || m ==
"tvms" || m ==
"mtginf" ||
1113 f.
unset(Feature::ClosedClass);
1114 f.
unset(Feature::SelfLoopingClass);
1122 if (m ==
"refined") {
1123 f.
unset(Feature::OpenClass);
1124 f.
unset(Feature::Source);
1125 f.
unset(Feature::Sink);
1126 f.
unset(Feature::RandomSource);
1127 f.
unset(Feature::JobSink);
1134 if (m ==
"diffusion") {
1135 f.
unset(Feature::OpenClass);
1136 f.
unset(Feature::Source);
1137 f.
unset(Feature::Sink);
1138 f.
unset(Feature::RandomSource);
1139 f.
unset(Feature::JobSink);
1150 f.
unset(Feature::ClosedClass);
1151 f.
unset(Feature::SelfLoopingClass);
1152 f.
unset(Feature::Cache);
1153 f.
unset(Feature::CacheClassSwitcher);
1154 f.
unset(Feature::ClassSwitch);
1155 f.
unset(Feature::StatelessClassSwitcher);
1156 f.
unset(Feature::ReplacementStrategy_RR);
1157 f.
unset(Feature::ReplacementStrategy_FIFO);
1158 f.
unset(Feature::ReplacementStrategy_SFIFO);
1165 f.
unset(Feature::OpenClass);
1166 f.
unset(Feature::Source);
1167 f.
unset(Feature::Sink);
1168 f.
unset(Feature::RandomSource);
1169 f.
unset(Feature::JobSink);
1170 f.
unset(Feature::Cache);
1171 f.
unset(Feature::CacheClassSwitcher);
1172 f.
unset(Feature::ReplacementStrategy_RR);
1173 f.
unset(Feature::ReplacementStrategy_FIFO);
1174 f.
unset(Feature::ReplacementStrategy_SFIFO);
1208 f.
set({Feature::Sink, Feature::Source});
1209 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1210 f.
set({Feature::Delay, Feature::DelayStation, Feature::Queue});
1212 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
1213 Feature::HyperExp, Feature::MMPP2, Feature::MAP, Feature::MMAP, Feature::MPH,
1214 Feature::DMAP, Feature::ME, Feature::RAP});
1219 f.
set({Feature::Geometric, Feature::DiscreteUniform});
1220 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1222 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
1223 f.
set(Feature::ClassSwitch);
1224 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
1225 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
1226 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_HOL});
1227 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_FCFSPRPRIO});
1228 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1229 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass});
1230 f.
set(Feature::OpenClass);
1236 f.
set({Feature::Retrial, Feature::BMAP, Feature::PH});
1238 f.
set(Feature::SetupDelayOff);
1244 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1258 if (method ==
"dec.mmap")
1259 for (
Feature ff : {Feature::ClosedClass, Feature::SelfLoopingClass,
1260 Feature::SchedStrategy_INF, Feature::Fork, Feature::Join,
1261 Feature::Forker, Feature::Joiner})
1264 if (method ==
"default" || method ==
"ldqbd") f.
set(Feature::LoadDependence);
1269 if (method ==
"mna") f.
set(Feature::RoutingStrategy_RROBIN);
1275 if (method ==
"ldqbd" || method ==
"bgchain") f.
unset(Feature::FiniteCapacity);
1294 f.
set({Feature::Sink, Feature::Source});
1295 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1296 f.
set({Feature::Delay, Feature::DelayStation, Feature::Queue});
1297 f.
set({Feature::APH, Feature::Coxian, Feature::Erlang, Feature::Exp, Feature::HyperExp,
1298 Feature::MAP, Feature::MMPP2});
1299 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1301 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer});
1302 f.
set({Feature::SharedServer, Feature::Buffer, Feature::Dispatcher});
1303 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::ServiceTunnel});
1304 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_FCFS});
1305 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1311 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass});
1312 f.
set({Feature::OpenSignal, Feature::ClosedSignal});
1313 f.
set({Feature::SignalType_NEGATIVE, Feature::SignalType_CATASTROPHE});
1314 f.
set(Feature::SignalBatchRemoval);
1372 f.
set({Feature::Sink, Feature::Source, Feature::Queue, Feature::Delay});
1375 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1376 Feature::JoinPartial});
1382 f.
set({Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1383 Feature::ForkBranchProbability});
1384 f.
set({Feature::Place, Feature::Transition, Feature::QueueingPlace});
1385 f.
set({Feature::Linkage, Feature::Enabling, Feature::Inhibiting, Feature::Timing,
1386 Feature::Firing, Feature::Storage});
1387 f.
set({Feature::Logger, Feature::LogTunnel, Feature::Buffer, Feature::Region});
1388 f.
set({Feature::Exp, Feature::Erlang, Feature::HyperExp, Feature::PH, Feature::APH,
1389 Feature::Coxian, Feature::Cox2});
1390 f.
set({Feature::MAP, Feature::DMAP, Feature::MMAP, Feature::MPH, Feature::BMAP,
1391 Feature::MMPP2, Feature::ME, Feature::RAP});
1392 f.
set({Feature::Immediate, Feature::Disabled, Feature::Replayer, Feature::Trace});
1393 f.
set({Feature::Det, Feature::Uniform, Feature::Gamma, Feature::Pareto, Feature::Weibull,
1394 Feature::Lognormal});
1398 f.
set({Feature::Geometric, Feature::Bernoulli, Feature::Binomial, Feature::Poisson});
1402 f.
set(Feature::DiscreteUniform);
1405 f.
set(Feature::BatchArrival);
1411 f.
set({Feature::NHPP, Feature::MAPt, Feature::PHt, Feature::MMAPt, Feature::MPHt});
1418 f.
set(Feature::BMMAPt);
1419 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::InfiniteServer,
1420 Feature::SharedServer, Feature::ServiceTunnel, Feature::DelayStation});
1421 f.
set({Feature::SchedStrategy_FCFS, Feature::SchedStrategy_INF, Feature::SchedStrategy_HOL,
1422 Feature::SchedStrategy_FCFSPRIO});
1423 f.
set({Feature::SchedStrategy_PS, Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS});
1424 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
1425 Feature::SchedStrategy_LCFSPI});
1426 f.
set({Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1427 Feature::SchedStrategy_LPS, Feature::SchedStrategy_SIRO});
1428 f.
set({Feature::SchedStrategy_SJF, Feature::SchedStrategy_LJF, Feature::SchedStrategy_LEPT,
1429 Feature::SchedStrategy_SEPT});
1430 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1431 Feature::SchedStrategy_PSJF, Feature::SchedStrategy_FB, Feature::SchedStrategy_LRPT});
1432 f.
set({Feature::SchedStrategy_EXT, Feature::SchedStrategy_POLLING});
1433 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
1434 Feature::SchedStrategy_GPSPRIO});
1435 f.
set({Feature::SchedStrategy_LCFSPRIO, Feature::SchedStrategy_LCFSPRPRIO,
1436 Feature::SchedStrategy_LCFSPIPRIO});
1437 f.
set({Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO});
1438 f.
set({Feature::SchedStrategy_FSP, Feature::SchedStrategy_PAS, Feature::SchedStrategy_OI});
1439 f.
set({Feature::SchedStrategy_EDD, Feature::SchedStrategy_EDF, Feature::SchedStrategy_SETF});
1440 f.
set({Feature::Router, Feature::Dispatcher, Feature::ClassSwitch,
1441 Feature::StatelessClassSwitcher});
1442 f.
set({Feature::Cache, Feature::CacheClassSwitcher, Feature::CacheRetrieval,
1443 Feature::CacheItemSize});
1444 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1445 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1446 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
1451 f.
set(Feature::HeteroServers);
1459 f.
set(Feature::RoutingStrategy_SDR);
1460 f.
set({Feature::OpenClass, Feature::ClosedClass, Feature::SelfLoopingClass});
1461 f.
set({Feature::OpenSignal, Feature::ClosedSignal, Feature::SignalType_NEGATIVE,
1462 Feature::SignalType_REPLY, Feature::SignalType_CATASTROPHE,
1463 Feature::SignalBatchRemoval, Feature::SignalRemovalPolicy});
1464 f.
set({Feature::LoadDependence, Feature::ClassDependence, Feature::JointDependence,
1465 Feature::SetupDelayOff});
1472 f.
set(Feature::GlobalDependence);
1479 f.
set(Feature::ServerParallelism);
1480 f.
set({Feature::Balking, Feature::Reneging, Feature::Retrial});
1483 f.
set(Feature::Breakdown);
1484 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
1485 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU,
1486 Feature::ReplacementStrategy_HLRU, Feature::ReplacementStrategy_CLIMB,
1487 Feature::ReplacementStrategy_QLRU});
1491 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1534 f.
set({Feature::Sink, Feature::Source, Feature::Queue, Feature::Delay, Feature::DelayStation});
1535 f.
set({Feature::Router, Feature::ClassSwitch, Feature::StatelessClassSwitcher,
1536 Feature::Dispatcher});
1538 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1539 Feature::JoinPartial});
1543 f.
set({Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1544 Feature::ForkBranchProbability});
1545 f.
set({Feature::Logger, Feature::LogTunnel, Feature::Buffer, Feature::Region,
1547 f.
set({Feature::Enabling, Feature::Inhibiting, Feature::Timing, Feature::Firing,
1548 Feature::Storage, Feature::Place, Feature::Transition});
1549 f.
set({Feature::Server, Feature::JobSink, Feature::RandomSource, Feature::InfiniteServer,
1550 Feature::SharedServer, Feature::ServiceTunnel});
1557 f.
set(Feature::HeteroServers);
1558 f.
set({Feature::Exp, Feature::Erlang, Feature::HyperExp, Feature::PH, Feature::APH,
1559 Feature::Coxian, Feature::Cox2});
1560 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Weibull,
1562 f.
set({Feature::MAP, Feature::MMPP2, Feature::Replayer, Feature::Trace, Feature::Immediate,
1563 Feature::Disabled});
1564 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_FCFS, Feature::SchedStrategy_PS,
1565 Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_LPS});
1566 f.
set({Feature::SchedStrategy_SIRO, Feature::SchedStrategy_HOL,
1567 Feature::SchedStrategy_FCFSPRIO});
1568 f.
set({Feature::SchedStrategy_PSPRIO, Feature::SchedStrategy_DPSPRIO,
1569 Feature::SchedStrategy_GPSPRIO});
1570 f.
set({Feature::SchedStrategy_LCFS, Feature::SchedStrategy_LCFSPR,
1571 Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_LCFSPRIO,
1572 Feature::SchedStrategy_LCFSPRPRIO, Feature::SchedStrategy_LCFSPIPRIO});
1573 f.
set({Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1574 Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO});
1578 f.
set(Feature::ServerParallelism);
1579 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT, Feature::SchedStrategy_SJF,
1580 Feature::SchedStrategy_LJF});
1581 f.
set({Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1582 Feature::SchedStrategy_POLLING, Feature::SchedStrategy_EXT});
1583 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1584 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1585 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ});
1586 f.
set({Feature::OpenClass, Feature::ClosedClass, Feature::SelfLoopingClass});
1587 f.
set({Feature::Cache, Feature::CacheClassSwitcher});
1588 f.
set({Feature::ReplacementStrategy_RR, Feature::ReplacementStrategy_FIFO,
1589 Feature::ReplacementStrategy_SFIFO, Feature::ReplacementStrategy_LRU});
1590 f.
set({Feature::SetupDelayOff, Feature::Reneging, Feature::Balking});
1596 f.
set(Feature::Retrial);
1602 f.
set({Feature::MultiServer, Feature::FiniteCapacity});
1608 f.
set(Feature::LoadDependence);
1625 if (method.compare(0, 4,
"jmva") == 0) {
1627 {Feature::Cache, Feature::CacheClassSwitcher, Feature::ReplacementStrategy_RR,
1628 Feature::ReplacementStrategy_FIFO, Feature::ReplacementStrategy_SFIFO,
1629 Feature::ReplacementStrategy_LRU,
1631 Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner,
1632 Feature::JoinPartial, Feature::ForkFanoutVector, Feature::ForkFanoutRandom,
1633 Feature::ForkBranchProbability,
1635 Feature::Place, Feature::Transition, Feature::Enabling, Feature::Inhibiting,
1636 Feature::Timing, Feature::Firing, Feature::Storage, Feature::Region,
1639 Feature::Reneging, Feature::Balking, Feature::Retrial,
1641 Feature::FiniteCapacity,
1643 Feature::SetupDelayOff, Feature::ServerParallelism, Feature::HeteroServers,
1648 Feature::SchedStrategy_DPS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_HOL,
1649 Feature::SchedStrategy_FCFSPRIO, Feature::SchedStrategy_PSPRIO,
1650 Feature::SchedStrategy_DPSPRIO, Feature::SchedStrategy_GPSPRIO,
1651 Feature::SchedStrategy_LCFSPI, Feature::SchedStrategy_LCFSPIPRIO,
1652 Feature::SchedStrategy_LCFSPRIO, Feature::SchedStrategy_LCFSPRPRIO,
1653 Feature::SchedStrategy_FCFSPR, Feature::SchedStrategy_FCFSPI,
1654 Feature::SchedStrategy_FCFSPRPRIO, Feature::SchedStrategy_FCFSPIPRIO,
1655 Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT,
1656 Feature::SchedStrategy_SJF, Feature::SchedStrategy_LJF,
1657 Feature::SchedStrategy_SRPT, Feature::SchedStrategy_SRPTPRIO,
1658 Feature::SchedStrategy_LPS, Feature::SchedStrategy_POLLING,
1661 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1662 Feature::RoutingStrategy_JSQ, Feature::RoutingStrategy_SQ})
1668 {Feature::OpenClass, Feature::LoadDependence, Feature::MultiServer})
1740 f.
set({Feature::ClassSwitch, Feature::Delay, Feature::DelayStation, Feature::Queue,
1741 Feature::Sink, Feature::Source, Feature::Router});
1742 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
1743 Feature::Buffer, Feature::Dispatcher, Feature::Server, Feature::JobSink,
1744 Feature::RandomSource, Feature::ServiceTunnel});
1747 f.
set({Feature::ClosedClass, Feature::SelfLoopingClass, Feature::OpenClass});
1748 f.
set({Feature::APH, Feature::Coxian, Feature::Cox2, Feature::Erlang, Feature::Exp,
1749 Feature::HyperExp, Feature::PH});
1750 f.
set({Feature::Det, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1758 f.
set({Feature::MAP, Feature::MMPP2});
1759 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_FCFS,
1760 Feature::SchedStrategy_LCFSPR});
1761 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND});
1770 f.
set({Feature::Place, Feature::Transition, Feature::Linkage, Feature::Enabling,
1771 Feature::Inhibiting, Feature::Timing, Feature::Firing, Feature::Storage});
1801 if (fam ==
"bpt" || fam ==
"bgt" || fam ==
"snc") {
1802 f.
unset(Feature::ClosedClass);
1803 f.
unset(Feature::Delay);
1804 f.
unset(Feature::DelayStation);
1805 f.
unset(Feature::InfiniteServer);
1806 f.
unset(Feature::SchedStrategy_INF);
1825 f.
unset(Feature::APH);
1826 f.
unset(Feature::Coxian);
1827 f.
unset(Feature::Cox2);
1828 f.
unset(Feature::Erlang);
1829 f.
unset(Feature::HyperExp);
1830 f.
unset(Feature::PH);
1831 f.
unset(Feature::Det);
1832 f.
unset(Feature::Lognormal);
1833 f.
unset(Feature::Pareto);
1834 f.
unset(Feature::Uniform);
1835 f.
unset(Feature::Weibull);
1837 }
else if (fam ==
"sb" || fam ==
"harel" || fam ==
"sib" || fam ==
"scb" || fam ==
"lr") {
1838 f.
unset(Feature::Delay);
1839 f.
unset(Feature::DelayStation);
1840 f.
unset(Feature::InfiniteServer);
1841 f.
unset(Feature::SchedStrategy_INF);
1852 if (fam ==
"mapamva") {
1853 f.
unset(Feature::Delay);
1854 f.
unset(Feature::DelayStation);
1855 f.
unset(Feature::SchedStrategy_INF);
1857 f.
unset(Feature::MAP);
1858 f.
unset(Feature::MMPP2);
1868 if (fam ==
"ssd" || fam ==
"ldac" || fam ==
"auto" || resolved ==
"qrf.mmi.ld" ||
1869 resolved ==
"qrf.mmi.linear")
1870 f.
set(Feature::MultiServer);
1876 if (resolved.compare(0, 7,
"qrf.bas") == 0 || resolved.compare(0, 8,
"qrf.rsrd") == 0)
1877 f.
set(Feature::FiniteCapacity);
1912 f.
set({Feature::Sink, Feature::Source, Feature::Router, Feature::ClassSwitch,
1913 Feature::Delay, Feature::DelayStation, Feature::Queue});
1914 f.
set({Feature::Fork, Feature::Join, Feature::Forker, Feature::Joiner});
1915 f.
set({Feature::Logger, Feature::LogTunnel});
1916 f.
set({Feature::Coxian, Feature::Cox2, Feature::APH, Feature::Erlang, Feature::Exp,
1917 Feature::HyperExp, Feature::PH});
1918 f.
set({Feature::Det, Feature::Gamma, Feature::Lognormal, Feature::Pareto, Feature::Uniform,
1920 f.
set({Feature::MAP, Feature::MMPP2, Feature::Replayer, Feature::Trace});
1921 f.
set({Feature::StatelessClassSwitcher, Feature::InfiniteServer, Feature::SharedServer,
1922 Feature::Buffer, Feature::Dispatcher, Feature::Server, Feature::JobSink,
1923 Feature::RandomSource, Feature::ServiceTunnel, Feature::Linkage});
1924 f.
set({Feature::Enabling, Feature::Timing, Feature::Firing, Feature::Storage,
1925 Feature::Place, Feature::Transition});
1926 f.
set({Feature::SchedStrategy_INF, Feature::SchedStrategy_PS, Feature::SchedStrategy_DPS,
1927 Feature::SchedStrategy_FCFS, Feature::SchedStrategy_GPS, Feature::SchedStrategy_SIRO,
1928 Feature::SchedStrategy_HOL, Feature::SchedStrategy_LCFS,
1929 Feature::SchedStrategy_LCFSPR});
1930 f.
set({Feature::SchedStrategy_SEPT, Feature::SchedStrategy_LEPT, Feature::SchedStrategy_SJF,
1931 Feature::SchedStrategy_LJF, Feature::SchedStrategy_EXT});
1932 f.
set({Feature::RoutingStrategy_PROB, Feature::RoutingStrategy_RAND,
1933 Feature::RoutingStrategy_RROBIN, Feature::RoutingStrategy_WRROBIN,
1934 Feature::RoutingStrategy_SQ});
1935 f.
set({Feature::ClosedClass, Feature::OpenClass});
1941 f.
set(Feature::MultiServer);