1function runtime = runAnalyzer(self, options)
7 options = self.getOptions;
9dirpath = lineTempName(
'lqns');
10filename = [dirpath,filesep,
'model.lqnx'];
11self.model.writeXML(filename);
13%self.runAnalyzerChecks(options);
14Solver.resetRandomGeneratorSeed(options.seed);
23multiserver_praqma =
'';
28 switch options.config.multiserver
30 multiserver_praqma=
'-Pmultiserver=conway';
32 multiserver_praqma=
'-Pmultiserver=rolia';
34 multiserver_praqma=
'-Pmultiserver=zhou';
36 multiserver_praqma=
'-Pmultiserver=suri';
38 multiserver_praqma=
'-Pmultiserver=reiser';
40 multiserver_praqma=
'-Pmultiserver=schmidt';
42 multiserver_praqma=
'-Pmultiserver=rolia';
47 %
switch options.method
48 %
case {
'default',
'lqns'}
49 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
51 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename]);
53 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
55 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
56 %
case {
'sim',
'lqsim'}
57 % cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
',3 -Pstop-on-message-loss=false -x ',filename]);
58 %
case {
'lqnsdefault'}
59 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename]);
61 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
64 % --iteration-limit seems faulty as of 6.2.27
67 case {
'default',
'lqns'}
68 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
70 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename];
72 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
73 case {
'srvn.exactmva'}
74 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
76 cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
',3 -Pstop-on-message-loss=false -x ',filename];
78 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename];
80 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
84 case {
'default',
'lqns'}
85 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
87 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
89 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
90 case {
'srvn.exactmva'}
91 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
93 cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
' -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
95 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename,
' 2>&1'];
97 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
101 switch options.method
102 %
case {
'default',
'lqns'}
103 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
105 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename]);
107 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
109 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
110 %
case {
'sim',
'lqsim'}
111 % cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
',3 -Pstop-on-message-loss=false -x ',filename]);
112 %
case {
'lqnsdefault'}
113 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename]);
115 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
116 case {
'default',
'lqns'}
117 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
119 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename];
121 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
122 case {
'srvn.exactmva'}
123 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
125 %cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
126 cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
' -Pstop-on-message-loss=false -x ',filename];
128 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename];
130 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
134% line_printf(
'\nLQNS model: %s',filename);
135 line_printf(
'\nLQNS command: %s\n',cmd);
138% Check
for remote execution
139if isfield(options.config,
'remote') && options.config.remote
140 % Remote execution via lqns-rest API
142 line_printf(
'\nUsing remote LQNS at: %s\n', options.config.remote_url);
144 self.runRemoteLQNS(filename, options);
149self.parseXMLResults(filename);