LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
runAnalyzer.m
1function runtime = runAnalyzer(self, options)
2% RUNTIME = RUN()
3% Run the solver
4
5tic;
6if nargin<2
7 options = self.getOptions;
8end
9dirpath = lineTempName('lqns');
10filename = [dirpath,filesep,'model.lqnx'];
11self.model.writeXML(filename);
12
13%self.runAnalyzerChecks(options);
14Solver.resetRandomGeneratorSeed(options.seed);
15
16if options.verbose
17 %verbose = '-v';
18 verbose = '';
19else
20 verbose = '-a -w';
21end
22
23multiserver_praqma = '';
24switch options.method
25 case 'lqsim'
26 %no-op
27 otherwise
28 switch options.config.multiserver
29 case 'conway'
30 multiserver_praqma='-Pmultiserver=conway';
31 case 'rolia'
32 multiserver_praqma='-Pmultiserver=rolia';
33 case 'zhou'
34 multiserver_praqma='-Pmultiserver=zhou';
35 case 'suri'
36 multiserver_praqma='-Pmultiserver=suri';
37 case 'reiser'
38 multiserver_praqma='-Pmultiserver=reiser';
39 case 'schmidt'
40 multiserver_praqma='-Pmultiserver=schmidt';
41 case 'default'
42 multiserver_praqma='-Pmultiserver=rolia';
43 end
44end
45
46if isunix
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]);
50 % case {'srvn'}
51 % cmd=['lqns ',verbose,' ',multiserver_praqma,' --iteration-limit=',num2str(options.iter_max),' -Playering=srvn -Pstop-on-message-loss=false -x ',filename]);
52 % case {'exactmva'}
53 % cmd=['lqns ',verbose,' ',multiserver_praqma,' --iteration-limit=',num2str(options.iter_max),' -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
54 % case {'srvnexact'}
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]);
60 % otherwise
61 % cmd=['lqns ',verbose,' ',multiserver_praqma,' --iteration-limit=',num2str(options.iter_max),' -Pstop-on-message-loss=false -x ',filename]);
62 % end
63
64 % --iteration-limit seems faulty as of 6.2.27
65 if options.verbose
66 switch options.method
67 case {'default','lqns'}
68 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Pstop-on-message-loss=false -x ',filename];
69 case {'srvn'}
70 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Playering=srvn -Pstop-on-message-loss=false -x ',filename];
71 case {'exactmva'}
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];
75 case {'sim','lqsim'}
76 cmd=['lqsim ',verbose,' ',multiserver_praqma,' -A ',num2str(options.samples),',3 -Pstop-on-message-loss=false -x ',filename];
77 case {'lqnsdefault'}
78 cmd=['lqns ',verbose,' ',multiserver_praqma,' -x ',filename];
79 otherwise
80 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Pstop-on-message-loss=false -x ',filename];
81 end
82 else
83 switch options.method
84 case {'default','lqns'}
85 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Pstop-on-message-loss=false -x ',filename,' 2>&1'];
86 case {'srvn'}
87 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Playering=srvn -Pstop-on-message-loss=false -x ',filename,' 2>&1'];
88 case {'exactmva'}
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'];
92 case {'sim','lqsim'}
93 cmd=['lqsim ',verbose,' ',multiserver_praqma,' -A ',num2str(options.samples),' -Pstop-on-message-loss=false -x ',filename,' 2>&1'];
94 case {'lqnsdefault'}
95 cmd=['lqns ',verbose,' ',multiserver_praqma,' -x ',filename,' 2>&1'];
96 otherwise
97 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Pstop-on-message-loss=false -x ',filename,' 2>&1'];
98 end
99 end
100else
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]);
104 % case {'srvn'}
105 % cmd=['lqns ',verbose,' ',multiserver_praqma,' -i ',num2str(options.iter_max),' -Playering=srvn -Pstop-on-message-loss=false -x ',filename]);
106 % case {'exactmva'}
107 % cmd=['lqns ',verbose,' ',multiserver_praqma,' -i ',num2str(options.iter_max),' -Pmva=exact -Pstop-on-message-loss=false -x ',filename]);
108 % case {'srvnexact'}
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]);
114 % otherwise
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];
118 case {'srvn'}
119 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Playering=srvn -Pstop-on-message-loss=false -x ',filename];
120 case {'exactmva'}
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];
124 case {'sim','lqsim'}
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];
127 case {'lqnsdefault'}
128 cmd=['lqns ',verbose,' ',multiserver_praqma,' -x ',filename];
129 otherwise
130 cmd=['lqns ',verbose,' ',multiserver_praqma,' -Pstop-on-message-loss=false -x ',filename];
131 end
132end
133if options.verbose
134% line_printf('\nLQNS model: %s',filename);
135 line_printf('\nLQNS command: %s\n',cmd);
136end
137
138% Check for remote execution
139if isfield(options.config, 'remote') && options.config.remote
140 % Remote execution via lqns-rest API
141 if options.verbose
142 line_printf('\nUsing remote LQNS at: %s\n', options.config.remote_url);
143 end
144 self.runRemoteLQNS(filename, options);
145else
146 % Local execution
147 system(cmd);
148end
149self.parseXMLResults(filename);
150
151if ~options.keep
152 rmdir(dirpath,'s');
153end
154runtime = toc;
155end