Line data Source code
1 : /*******************************************************************************
2 : * *
3 : * Cosmos:(C)oncept et (O)utils (S)tatistique pour les (Mo)deles *
4 : * (S)tochastiques *
5 : * *
6 : * Copyright (C) 2009-2012 LSV & LACL *
7 : * Authors: Paolo Ballarini BenoƮt Barbot & Hilal Djafri *
8 : * Website: http://www.lsv.ens-cachan.fr/Software/cosmos *
9 : * *
10 : * This program is free software; you can redistribute it and/or modify *
11 : * it under the terms of the GNU General Public License as published by *
12 : * the Free Software Foundation; either version 3 of the License, or *
13 : * (at your option) any later version. *
14 : * *
15 : * This program is distributed in the hope that it will be useful, *
16 : * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
18 : * GNU General Public License for more details. *
19 : * *
20 : * You should have received a copy of the GNU General Public License along *
21 : * with this program; if not, write to the Free Software Foundation, Inc., *
22 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
23 : * file parameters.hpp *
24 : * Created by Benoit Barbot on 08/02/12. *
25 : *******************************************************************************
26 : */
27 :
28 : #ifndef Cosmos_parameters_h
29 : #define Cosmos_parameters_h
30 :
31 : #include <string>
32 : #include <set>
33 : #include <vector>
34 : #include <map>
35 : #include <chrono>
36 :
37 : #include "HaslFormula.hpp"
38 :
39 : #define let const auto&
40 :
41 : enum LHAGenType:int {
42 : NoGen,
43 : EmptyLoop,
44 : TimeLoop,
45 : ActionLoop,
46 : SamplingLoop,
47 : CSL_LHA
48 : };
49 :
50 : enum Poption {
51 : CO_level,
52 : CO_width,
53 : CO_batch,
54 : CO_max_run,
55 : CO_seed,
56 : CO_VDC,
57 : CO_RandomGen,
58 : CO_local_test,
59 : CO_sampling,
60 : CO_loop,
61 : CO_transient,
62 : CO_formula,
63 : CO_chernoff,
64 : CO_relative,
65 : CO_const,
66 : CO_rareevent,
67 : CO_boundedcountiniouceRE,
68 : CO_boundedRE,
69 : CO_step_continuous,
70 : CO_epsilon,
71 : CO_set_Horizon,
72 : CO_state_space,
73 : CO_lump,
74 : CO_prism,
75 : CO_normalize_IS,
76 : CO_grml_input,
77 : CO_alligator_mode,
78 : CO_gui_greatSPN_mode,
79 : CO_unfold,
80 : CO_output_model,
81 : CO_HASL_formula,
82 : CO_njob,
83 : CO_gppcmd,
84 : CO_gppflags,
85 : CO_light_simulator,
86 : CO_verbose,
87 : CO_interactive,
88 : CO_update_time,
89 : CO_output_data,
90 : CO_output_raw,
91 : CO_output_trace,
92 : CO_output_graph,
93 : CO_output_dot,
94 : CO_gnuplot_driver,
95 : CO_trace_pt,
96 : CO_help,
97 : CO_count_transition,
98 : CO_debug_string,
99 : CO_tmp_path,
100 : CO_tmp_status,
101 : CO_bin_path,
102 : CO_prism_path,
103 : CO_magic_values,
104 : CO_version,
105 : CO_reuse,
106 : CO_use_magic_print,
107 : CO_domain_impl,
108 : CO_force_TTY,
109 : CO_not_gspn,
110 : CO_gracefull_ending,
111 : };
112 :
113 : enum RandomGenerator:int {
114 : MT19937,
115 : VDC,
116 : Kronecker
117 : };
118 :
119 : enum TmpStat:int {
120 : TS_GEN = 0x01,
121 : TS_BUILD = 0x02,
122 : TS_RUN = 0x04,
123 : TS_DESTROY = 0x08
124 : };
125 :
126 : enum ModelType:int {
127 : GSPN,
128 : GSPN_Simulink,
129 : External,
130 : CTMC
131 : };
132 :
133 : enum LHAType:int {
134 : DET,
135 : NOT_DET
136 : };
137 :
138 :
139 276 : struct parameters {
140 : std::string commandLine;
141 : int verbose;
142 : bool interactive;
143 : std::chrono::milliseconds updatetime;
144 : unsigned long seed;
145 : int randomGen;
146 : int Njob;
147 :
148 : double epsilon;
149 : int continuousStep;
150 : double Level;
151 : double Width;
152 : unsigned long int Batch;
153 : unsigned long int MaxRuns;
154 : bool sequential;
155 : bool relative;
156 : bool chernoff;
157 :
158 : std::string comp_uuid;
159 : std::string tmpPath;
160 : TmpStat tmpStatus; // 0 create and destroy tmp (default),
161 : // 1 do not build but destroy,
162 : // 2 do not destroy,
163 : // 3 do not build nor destoy
164 : // 4 do not generate but build and do not destroy
165 : bool reuse;
166 :
167 : ModelType modelType;
168 : LHAType lhaType;
169 :
170 : std::string Path;
171 : std::string PathGspn;
172 : std::string PathLha;
173 : std::map<std::string, std::string> constants;
174 :
175 : LHAGenType generateLHA;
176 : double loopLHA;
177 : double loopTransientLHA;
178 : std::string CSLformula;
179 : std::string externalHASL;
180 : bool localTesting;
181 : bool RareEvent;
182 : bool DoubleIS;
183 : int BoundedRE;
184 : double horizon;
185 : bool BoundedContinuous;
186 : bool CountTrans;
187 : bool StringInSpnLHA;
188 :
189 : bool GMLinput;
190 : int computeStateSpace;
191 : bool lumpStateSpace;
192 :
193 : bool alligatorMode;
194 : bool guiGreatSpnMode;
195 : std::string unfold;
196 : std::string outputModel;
197 : bool isTTY;
198 : int terminalWidth;
199 : int graceFullEnding;
200 :
201 : std::string gcccmd;
202 : std::string boostpath;
203 : std::string gccflags;
204 : std::string boostlib;
205 : bool lightSimulator;
206 :
207 : //void parseCommandLine2(int argc, char** argv);
208 : std::string prismPath;
209 : std::string dataoutput;
210 : std::string dataraw;
211 : std::string datatrace;
212 : double sampleResol;
213 : std::string dataPDFCDF;
214 : std::string gnuplotDriver;
215 : std::map<std::string,int> tracedPlace;
216 : std::string dotfile;
217 : std::string magic_values;
218 : bool use_magic_print;
219 : bool is_domain_impl_set;
220 :
221 : std::vector<HaslFormulasTop*> HaslFormulas;
222 : std::vector<std::string> HaslFormulasname;
223 : size_t nbAlgebraic;
224 : size_t nbQualitatif;
225 : size_t nbPlace;
226 :
227 : parameters();
228 : void View();
229 : void usage();
230 : void parseCommandLine(int argc, char** argv);
231 : Poption parsersingleOpt(int i) const;
232 :
233 : public:
234 : template<class Archive>
235 63 : void serialize(Archive & ar){
236 63 : ar & verbose & interactive & seed & randomGen & Njob;
237 63 : ar & epsilon & continuousStep & Level & Width & Batch & MaxRuns & sequential & relative & chernoff;
238 :
239 63 : ar & comp_uuid & tmpPath & (int&)tmpStatus & reuse & graceFullEnding ;
240 63 : ar & (int&)modelType & (int&)lhaType;
241 :
242 63 : ar & Path & PathGspn & PathLha & constants;
243 :
244 63 : ar & (int&)generateLHA & loopLHA & loopTransientLHA & CSLformula & externalHASL;
245 63 : ar & localTesting & RareEvent & DoubleIS & BoundedRE & horizon & BoundedContinuous;
246 63 : ar & CountTrans & StringInSpnLHA & GMLinput & computeStateSpace & lumpStateSpace;
247 :
248 63 : ar & prismPath & dataoutput & dataraw & datatrace & sampleResol & dataPDFCDF & gnuplotDriver;
249 63 : ar & tracedPlace & dotfile & magic_values & use_magic_print & is_domain_impl_set;
250 :
251 63 : }
252 :
253 : };
254 :
255 : /**
256 : * Retrive the real absolute path of the executable of Cosmos
257 : * This is usefull for finding the library containing all the
258 : * code for the simulator.
259 : * Thoses functions fill the variable P.Path
260 : * This code is system dependant.
261 : * @param P is a structure of parameters
262 : */
263 : void findBinaryPath(parameters& P);
264 :
265 : extern parameters P;
266 :
267 : #endif
|