1function runtime = runAnalyzer(self, options)
7 options = self.getOptions;
9line_debug(options,
'LQNS: starting (method=%s, multiserver=%s)', options.method, options.config.multiserver);
10dirpath = lineTempName(
'lqns');
11filename = [dirpath,filesep,
'model.lqnx'];
12self.model.writeXML(filename);
14%self.runAnalyzerChecks(options);
15Solver.resetRandomGeneratorSeed(options.seed);
24multiserver_praqma =
'';
29 switch options.config.multiserver
31 multiserver_praqma=
'-Pmultiserver=conway';
33 multiserver_praqma=
'-Pmultiserver=rolia';
35 multiserver_praqma=
'-Pmultiserver=zhou';
37 multiserver_praqma=
'-Pmultiserver=suri';
39 multiserver_praqma=
'-Pmultiserver=reiser';
41 multiserver_praqma=
'-Pmultiserver=schmidt';
43 multiserver_praqma=
'-Pmultiserver=rolia';
48 %
switch options.method
49 %
case {
'default',
'lqns'}
50 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
52 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename]);
54 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
56 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
57 %
case {
'sim',
'lqsim'}
58 % cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
',3 -Pstop-on-message-loss=false -x ',filename]);
59 %
case {
'lqnsdefault'}
60 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename]);
62 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' --iteration-limit=',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
65 % --iteration-limit seems faulty as of 6.2.27
68 case {
'default',
'lqns'}
69 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
71 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename];
73 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
74 case {
'srvn.exactmva'}
75 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
77 cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
',3 -Pstop-on-message-loss=false -x ',filename];
79 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename];
81 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
85 case {
'default',
'lqns'}
86 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
88 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
90 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
91 case {
'srvn.exactmva'}
92 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
94 cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
' -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
96 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename,
' 2>&1'];
98 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename,
' 2>&1'];
102 switch options.method
103 %
case {
'default',
'lqns'}
104 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
106 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename]);
108 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
110 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
111 %
case {
'sim',
'lqsim'}
112 % cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
',3 -Pstop-on-message-loss=false -x ',filename]);
113 %
case {
'lqnsdefault'}
114 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename]);
116 % cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -i ',num2str(options.iter_max),
' -Pstop-on-message-loss=false -x ',filename]);
117 case {
'default',
'lqns'}
118 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
120 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pstop-on-message-loss=false -x ',filename];
122 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
123 case {
'srvn.exactmva'}
124 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Playering=srvn -Pmva=exact -Pstop-on-message-loss=false -x ',filename];
126 %cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
127 cmd=[
'lqsim ',verbose,
' ',multiserver_praqma,
' -A ',num2str(options.samples),
' -Pstop-on-message-loss=false -x ',filename];
129 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -x ',filename];
131 cmd=[
'lqns ',verbose,
' ',multiserver_praqma,
' -Pstop-on-message-loss=false -x ',filename];
135% line_printf(
'\nLQNS model: %s',filename);
136 line_printf(
'\nLQNS command: %s\n',cmd);
139% Check
for remote execution
140if isfield(options.config,
'remote') && options.config.remote
141 line_debug(options,
'LQNS: using remote execution at %s', options.config.remote_url);
143 line_printf(
'\nUsing remote LQNS at: %s\n', options.config.remote_url);
145 self.runRemoteLQNS(filename, options);
147 line_debug(options,
'LQNS: using local execution, command: %s', cmd);
151self.parseXMLResults(filename);