Browse Source
Removal of unused code.
Removal of unused code.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@80 bbc10eb1-c90d-0410-af57-cb519fbb1720master
6 changed files with 0 additions and 2002 deletions
-
187prism/src/simulator/old/ExplorationTesting.java
-
428prism/src/simulator/old/ExploreTesting.java
-
276prism/src/simulator/old/ExpressionTesting.java
-
103prism/src/simulator/old/LoadModelTesting.java
-
406prism/src/simulator/old/ManualSimulator.java
-
602prism/src/simulator/old/UpdatesTesting.java
@ -1,187 +0,0 @@ |
|||||
//============================================================================== |
|
||||
// |
|
||||
// Copyright (c) 2004-2005, Andrew Hinton |
|
||||
// |
|
||||
// This file is part of PRISM. |
|
||||
// |
|
||||
// PRISM is free software; you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation; either version 2 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// PRISM is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with PRISM; if not, write to the Free Software Foundation, |
|
||||
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
||||
// |
|
||||
//============================================================================== |
|
||||
|
|
||||
package simulator.old; |
|
||||
|
|
||||
import java.util.*; |
|
||||
import java.io.*; |
|
||||
import parser.*; |
|
||||
import prism.*; |
|
||||
|
|
||||
|
|
||||
public class ExplorationTesting |
|
||||
{ |
|
||||
public static void main(String[]args) |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
//PRISM initialisation stuff |
|
||||
Prism p = new Prism(null, null); |
|
||||
|
|
||||
//Parse model |
|
||||
ModulesFile mf = p.parseModelFile(new File(args[0])); |
|
||||
|
|
||||
//Define constants |
|
||||
|
|
||||
Values constants = new Values(); |
|
||||
|
|
||||
ConstantList modConstants = mf.getConstantList(); |
|
||||
if(modConstants.getNumUndefined() > 0) |
|
||||
System.out.println("Please enter values for the following undefined model constants:"); |
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
|
||||
String input; |
|
||||
if(modConstants != null) |
|
||||
{ |
|
||||
for(int i = 0; i < modConstants.getNumUndefined(); i++) |
|
||||
{ |
|
||||
|
|
||||
String var = (String)modConstants.getUndefinedConstants().elementAt(i); |
|
||||
|
|
||||
boolean valid = true; |
|
||||
do |
|
||||
{ |
|
||||
System.out.print(var+": "); |
|
||||
input = br.readLine(); |
|
||||
if(input.equals("true")) |
|
||||
{ |
|
||||
constants.addValue(var, new Integer(1)); |
|
||||
} |
|
||||
else if(input.equals("false")) |
|
||||
{ |
|
||||
constants.addValue(var, new Integer(0)); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
constants.addValue(var, new Integer(input)); |
|
||||
valid = true; |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
valid = false; |
|
||||
} |
|
||||
} |
|
||||
} while(!valid); |
|
||||
} |
|
||||
} |
|
||||
System.out.println("Constants done..."); |
|
||||
|
|
||||
|
|
||||
|
|
||||
//Dummy PropertiesFile |
|
||||
PropertiesFile pf = new PropertiesFile(mf); |
|
||||
|
|
||||
//Obtain the default initial state |
|
||||
Values v = mf.getInitialValues(); |
|
||||
|
|
||||
//Setup the simulator engine API |
|
||||
SimulatorEngine engine = new SimulatorEngine(); |
|
||||
|
|
||||
//Load in state v |
|
||||
engine.startNewPath(mf, pf, v); |
|
||||
|
|
||||
//At this point, the updates set has already been calculated, this can be queried: |
|
||||
int numUpdates = engine.getNumUpdates(); |
|
||||
System.out.println("Number of updates: "+numUpdates); |
|
||||
System.out.println(); |
|
||||
System.out.println("Module\tAction\tProb\tAssignments"); |
|
||||
System.out.println("=============================================================="); |
|
||||
for(int i = 0; i < numUpdates; i++) |
|
||||
{ |
|
||||
System.out.println(engine.getModuleNameOfUpdate(i)+"\t"+ |
|
||||
engine.getActionLabelOfUpdate(i)+"\t"+ |
|
||||
engine.getProbabilityOfUpdate(i)+"\t"+ |
|
||||
engine.getAssignmentDescriptionOfUpdate(i)); |
|
||||
//Note there are many, many more querying methods should you require them |
|
||||
} |
|
||||
|
|
||||
//Try another set of values |
|
||||
while(true) |
|
||||
{ |
|
||||
System.out.println(); |
|
||||
System.out.println("Try another set of values: "); |
|
||||
v = new Values(); |
|
||||
//simple for loop to read some values from the command line. |
|
||||
|
|
||||
for(int i = 0; i < mf.getVarNames().size(); i++) |
|
||||
{ |
|
||||
String var = (String)mf.getVarNames().elementAt(i); |
|
||||
|
|
||||
boolean valid = true; |
|
||||
do |
|
||||
{ |
|
||||
System.out.print(var+": "); |
|
||||
input = br.readLine(); |
|
||||
if(input.equals("true")) |
|
||||
{ |
|
||||
v.addValue(var, new Integer(1)); |
|
||||
} |
|
||||
else if(input.equals("false")) |
|
||||
{ |
|
||||
v.addValue(var, new Integer(0)); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
v.addValue(var, new Integer(input)); |
|
||||
valid = true; |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
valid = false; |
|
||||
} |
|
||||
} |
|
||||
} while(!valid); |
|
||||
} |
|
||||
|
|
||||
//Load in state v |
|
||||
engine.restartNewPath(v); |
|
||||
|
|
||||
//At this point, the updates set has already been calculated, this can be queried: |
|
||||
numUpdates = engine.getNumUpdates(); |
|
||||
System.out.println("Number of updates: "+numUpdates); |
|
||||
System.out.println(); |
|
||||
System.out.println("Module\tAction\tProb\tAssignments"); |
|
||||
System.out.println("=============================================================="); |
|
||||
for(int i = 0; i < numUpdates; i++) |
|
||||
{ |
|
||||
System.out.println(engine.getModuleNameOfUpdate(i)+"\t"+ |
|
||||
engine.getActionLabelOfUpdate(i)+"\t"+ |
|
||||
engine.getProbabilityOfUpdate(i)+"\t"+ |
|
||||
engine.getAssignmentDescriptionOfUpdate(i)); |
|
||||
//Note there are many, many more querying methods should you require them |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
System.out.println("Error: "+e.getMessage()); |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
@ -1,428 +0,0 @@ |
|||||
//============================================================================== |
|
||||
// |
|
||||
// Copyright (c) 2004-2005, Andrew Hinton |
|
||||
// |
|
||||
// This file is part of PRISM. |
|
||||
// |
|
||||
// PRISM is free software; you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation; either version 2 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// PRISM is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with PRISM; if not, write to the Free Software Foundation, |
|
||||
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
||||
// |
|
||||
//============================================================================== |
|
||||
|
|
||||
package simulator.old; |
|
||||
|
|
||||
import java.util.*; |
|
||||
import java.io.*; |
|
||||
import parser.*; |
|
||||
import prism.*; |
|
||||
|
|
||||
/** |
|
||||
*/ |
|
||||
public class ExploreTesting |
|
||||
{ |
|
||||
private Prism p; |
|
||||
private Expression e; |
|
||||
private SimulatorEngine s; |
|
||||
|
|
||||
public static void main(String[]args) |
|
||||
{ |
|
||||
if(args.length > 0) |
|
||||
new ExploreTesting(args[0]); |
|
||||
else |
|
||||
new ExploreTesting("1"); |
|
||||
} |
|
||||
|
|
||||
public ExploreTesting(String parameter) |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
p = new Prism(null, null); |
|
||||
s = new SimulatorEngine(p); |
|
||||
int type = 0; |
|
||||
|
|
||||
|
|
||||
ModulesFile m = p.parseModelFile(new File |
|
||||
//("../examples/dice/dice.pm")); |
|
||||
//("../examples/leader/synchronous/leader3_4.pm")); |
|
||||
//("../examples/dice/two_dice.nm")); |
|
||||
//("../examples/leader/asynchronous/leader4.nm")); |
|
||||
//("../andrew.pm")); |
|
||||
("../examples/cluster/cluster.sm")); |
|
||||
//("../examples/polling/poll3.sm")); |
|
||||
//("../examples/cyclin.sm")); |
|
||||
//("../test.sm")); |
|
||||
//("../examples/molecules/nacl.sm")); |
|
||||
//("../examples/brp/brp.pm")); |
|
||||
//("../examples/tandem/tandem.sm")); |
|
||||
//m.tidyUp(); |
|
||||
//m.setUndefinedConstants(constants); |
|
||||
//System.out.println(m.toString()+"\n\n\n\n\n\n\n"); |
|
||||
type = m.getType(); |
|
||||
long before= System.currentTimeMillis(); |
|
||||
s.loadModulesFile(m); |
|
||||
Values init = new Values(); |
|
||||
|
|
||||
//leader3_4.pm |
|
||||
/*init.addValue("c", new Integer(1)); |
|
||||
init.addValue("s1", new Integer(0)); |
|
||||
init.addValue("u1", new Boolean(false)); |
|
||||
init.addValue("v1", new Integer(0)); |
|
||||
init.addValue("p1", new Integer(0)); |
|
||||
init.addValue("s2", new Integer(0)); |
|
||||
init.addValue("u2", new Boolean(false)); |
|
||||
init.addValue("v2", new Integer(0)); |
|
||||
init.addValue("p2", new Integer(0)); |
|
||||
init.addValue("s3", new Integer(0)); |
|
||||
init.addValue("u3", new Boolean(false)); |
|
||||
init.addValue("v3", new Integer(0)); |
|
||||
init.addValue("p3", new Integer(0)); */ |
|
||||
|
|
||||
//dice.pm |
|
||||
//init.addValue("d", new Integer(0)); |
|
||||
//init.addValue("s", new Integer(0)); |
|
||||
|
|
||||
//two_dice.nm |
|
||||
//init.addValue("d1", new Integer(0)); |
|
||||
//init.addValue("d2", new Integer(0)); |
|
||||
//init.addValue("s1", new Integer(0)); |
|
||||
//init.addValue("s2", new Integer(0)); |
|
||||
|
|
||||
//leader4.nm |
|
||||
/*init.addValue("c1", new Integer(0)); |
|
||||
init.addValue("s1", new Integer(0)); |
|
||||
init.addValue("p1", new Integer(0)); |
|
||||
init.addValue("receive1", new Integer(0)); |
|
||||
init.addValue("sent1", new Integer(0)); |
|
||||
init.addValue("c2", new Integer(0)); |
|
||||
init.addValue("s2", new Integer(0)); |
|
||||
init.addValue("p2", new Integer(0)); |
|
||||
init.addValue("receive2", new Integer(0)); |
|
||||
init.addValue("sent2", new Integer(0)); |
|
||||
init.addValue("c3", new Integer(0)); |
|
||||
init.addValue("s3", new Integer(0)); |
|
||||
init.addValue("p3", new Integer(0)); |
|
||||
init.addValue("receive3", new Integer(0)); |
|
||||
init.addValue("sent3", new Integer(0)); |
|
||||
init.addValue("c4", new Integer(0)); |
|
||||
init.addValue("s4", new Integer(0)); |
|
||||
init.addValue("p4", new Integer(0)); |
|
||||
init.addValue("receive4", new Integer(0)); |
|
||||
init.addValue("sent4", new Integer(0)); */ |
|
||||
|
|
||||
|
|
||||
//cluster.sm |
|
||||
init.addValue("left_n", new Integer(parameter)); |
|
||||
init.addValue("left", new Boolean(false)); |
|
||||
init.addValue("right_n", new Integer(parameter)); |
|
||||
init.addValue("right", new Boolean(false)); |
|
||||
init.addValue("line", new Boolean(false)); |
|
||||
init.addValue("line_n", new Boolean(true)); |
|
||||
init.addValue("Toleft", new Boolean(false)); |
|
||||
init.addValue("Toright", new Boolean(false)); |
|
||||
init.addValue("Toleft_n", new Boolean(true)); |
|
||||
init.addValue("Toright_n", new Boolean(true)); |
|
||||
init.addValue("r", new Boolean(false)); |
|
||||
|
|
||||
//andrew.pm |
|
||||
//init.addValue("s", new Integer(0)); |
|
||||
|
|
||||
//poll23.sm |
|
||||
//init.addValue("s", new Integer(1)); |
|
||||
//init.addValue("a", new Integer(0)); |
|
||||
//init.addValue("s1", new Integer(0)); |
|
||||
//init.addValue("s2", new Integer(0)); |
|
||||
//init.addValue("s3", new Integer(0)); |
|
||||
//init.addValue("s4", new Integer(0)); |
|
||||
//init.addValue("s5", new Integer(0)); |
|
||||
//init.addValue("s6", new Integer(0)); |
|
||||
//init.addValue("s7", new Integer(0)); |
|
||||
//init.addValue("s8", new Integer(0)); |
|
||||
//init.addValue("s9", new Integer(0)); |
|
||||
//init.addValue("s10", new Integer(0)); |
|
||||
//init.addValue("s11", new Integer(0)); |
|
||||
//init.addValue("s12", new Integer(0)); |
|
||||
//init.addValue("s13", new Integer(0)); |
|
||||
//init.addValue("s14", new Integer(0)); |
|
||||
//init.addValue("s15", new Integer(0)); |
|
||||
//init.addValue("s16", new Integer(0)); |
|
||||
//init.addValue("s17", new Integer(0)); |
|
||||
//init.addValue("s18", new Integer(0)); |
|
||||
//init.addValue("s19", new Integer(0)); |
|
||||
//init.addValue("s20", new Integer(0)); |
|
||||
//init.addValue("s21", new Integer(0)); |
|
||||
//init.addValue("s22", new Integer(0)); |
|
||||
//init.addValue("s23", new Integer(0)); |
|
||||
|
|
||||
//cyclic.sm |
|
||||
/*init.addValue("cyclin", new Integer(4)); |
|
||||
init.addValue("cyclin_bound", new Integer(0)); |
|
||||
init.addValue("degc", new Integer(0)); |
|
||||
init.addValue("trim", new Integer(0)); |
|
||||
init.addValue("dim", new Integer(0)); |
|
||||
|
|
||||
init.addValue("bound1", new Integer(0)); |
|
||||
init.addValue("bound2", new Integer(0)); |
|
||||
|
|
||||
init.addValue("cdk", new Integer(2)); |
|
||||
init.addValue("cdk_cat", new Integer(0)); |
|
||||
|
|
||||
init.addValue("cdh1", new Integer(2)); |
|
||||
init.addValue("inact", new Integer(0)); |
|
||||
|
|
||||
init.addValue("cdc14", new Integer(4)); |
|
||||
|
|
||||
init.addValue("cki", new Integer(2)); */ |
|
||||
|
|
||||
//test.sm |
|
||||
//init.addValue("x", new Integer(0)); |
|
||||
|
|
||||
//nacl.sm |
|
||||
//init.addValue("na", new Integer(10)); |
|
||||
//init.addValue("cl", new Integer(10)); |
|
||||
//init.addValue("dummy", new Boolean(false)); |
|
||||
|
|
||||
//brp.pm |
|
||||
/*init.addValue("s", new Integer(0)); |
|
||||
init.addValue("srep", new Integer(0)); |
|
||||
init.addValue("nrtr", new Integer(0)); |
|
||||
init.addValue("i", new Integer(0)); |
|
||||
init.addValue("bs", new Boolean(false)); |
|
||||
init.addValue("s_ab", new Boolean(false)); |
|
||||
init.addValue("fs", new Boolean(false)); |
|
||||
init.addValue("ls", new Boolean(false)); |
|
||||
|
|
||||
init.addValue("r", new Integer(0)); |
|
||||
init.addValue("rrep", new Integer(0)); |
|
||||
init.addValue("fr", new Boolean(false)); |
|
||||
init.addValue("lr", new Boolean(false)); |
|
||||
init.addValue("br", new Boolean(false)); |
|
||||
init.addValue("r_ab", new Boolean(false)); |
|
||||
init.addValue("recv", new Boolean(false)); |
|
||||
|
|
||||
init.addValue("T", new Boolean(false)); |
|
||||
|
|
||||
init.addValue("k", new Boolean(false)); |
|
||||
|
|
||||
init.addValue("l", new Boolean(false)); */ |
|
||||
|
|
||||
//tandem.sm |
|
||||
|
|
||||
//init.addValue("sc", new Integer(0)); |
|
||||
//init.addValue("ph", new Integer(1)); |
|
||||
//init.addValue("sm", new Integer(0)); |
|
||||
|
|
||||
|
|
||||
Values constants = new Values();//m.getConstantValues(); |
|
||||
//constants.addValue("c", new Integer(124)); |
|
||||
|
|
||||
//constants.addValue("r", new Double(parameter)); |
|
||||
|
|
||||
//brp constants |
|
||||
//constants.addValue("N", new Integer(16)); |
|
||||
//constants.addValue("MAX", new Integer(2)); |
|
||||
|
|
||||
|
|
||||
//cluster constants |
|
||||
constants.addValue("N", new Integer(parameter)); |
|
||||
//constants.addValue("T", new Integer(10)); |
|
||||
|
|
||||
//tandem constants |
|
||||
//constants.addValue("c", new Integer(10)); |
|
||||
|
|
||||
m.setUndefinedConstants(constants); |
|
||||
Values v = m.getConstantValues(); |
|
||||
System.out.println(v.toString()); |
|
||||
|
|
||||
PropertiesFile pf = p.parsePropertiesFile(m, new File |
|
||||
//("../examples/dice/dice2.pctl")); |
|
||||
("../examples/cluster/cluster.csl")); |
|
||||
//("../examples/polling/pollandrew.csl")); |
|
||||
//("../examples/cyclin.csl")); |
|
||||
//("../test.csl")); |
|
||||
//("../examples/molecules/nacl.csl")); |
|
||||
//("../examples/brp/brp.pctl")); |
|
||||
//("../examples/tandem/tandem.csl")); |
|
||||
System.out.println(pf.toString()); |
|
||||
|
|
||||
s.loadProperties(pf); |
|
||||
|
|
||||
Values pConstants = new Values(); |
|
||||
|
|
||||
//cluster property constants |
|
||||
pConstants.addValue("T", new Integer(10)); |
|
||||
|
|
||||
pf.setUndefinedConstants(pConstants); |
|
||||
Values pv = pf.getConstantValues(); |
|
||||
|
|
||||
s.startNewPath(m.getConstantValues(), init); |
|
||||
//s.startNewPath(m.getConstantValues(), pf.getConstantValues(), init); |
|
||||
long timeTaken = System.currentTimeMillis() - before; |
|
||||
//System.out.println("Loading model complete!! Took: "+timeTaken+"ms\n\n"); |
|
||||
|
|
||||
System.out.println(SimulatorEngine.modelToString()); |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
//pctl |
|
||||
|
|
||||
for(int i = 0; i < pf.getNumProperties(); i++) |
|
||||
{ |
|
||||
System.out.println("adding property"); |
|
||||
s.addPCTLProperty(pf.getProperty(i)); |
|
||||
} |
|
||||
|
|
||||
//SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
|
|
||||
|
|
||||
//s.doSampling(); |
|
||||
|
|
||||
|
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
|
||||
|
|
||||
String input = null; |
|
||||
|
|
||||
System.out.print("SIM::> "); |
|
||||
try |
|
||||
{ |
|
||||
input = br.readLine(); |
|
||||
while(!input.equals("exit")) |
|
||||
{ |
|
||||
if(input.equals("backtrack")) |
|
||||
{ |
|
||||
System.out.print("to step: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
int i = Integer.parseInt(input); |
|
||||
if(i>=0)//protection |
|
||||
{ |
|
||||
s.backtrack(i); |
|
||||
|
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
//SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
} |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
else if(input.equals("remove")) |
|
||||
{ |
|
||||
System.out.print("to step: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
int i = Integer.parseInt(input); |
|
||||
if(i>=0)//protection |
|
||||
{ |
|
||||
s.removePrecedingStates(i); |
|
||||
|
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
//SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
} |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
else if(input.equals("auto")) |
|
||||
{ |
|
||||
System.out.println("how many steps: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
int i = Integer.parseInt(input); |
|
||||
if(i>=0) |
|
||||
{ |
|
||||
long cl = System.currentTimeMillis(); |
|
||||
s.automaticChoices(i); |
|
||||
long ti = System.currentTimeMillis() - cl; |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
//SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
//System.out.println(""+i+" steps took: "+ti+"ms"); |
|
||||
} |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
} |
|
||||
else //manual update |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
|
|
||||
int i = Integer.parseInt(input); |
|
||||
|
|
||||
if(type == ModulesFile.STOCHASTIC) |
|
||||
{ |
|
||||
System.out.print("time in state: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
double d = Double.parseDouble(input); |
|
||||
|
|
||||
s.manualUpdate(i,d); |
|
||||
|
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
} |
|
||||
else |
|
||||
s.manualUpdate(i); |
|
||||
System.out.println(); |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
//SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input, enter the update index"); |
|
||||
} |
|
||||
catch(SimulatorException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input: "+e.getMessage()); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
System.out.print("SIM::> "); |
|
||||
input = br.readLine(); |
|
||||
} |
|
||||
} |
|
||||
catch (IOException ioe) |
|
||||
{ |
|
||||
System.out.println("IO error trying to read your name!"); |
|
||||
System.exit(1); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
System.out.println("Error: "+e.getMessage()); |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
@ -1,276 +0,0 @@ |
|||||
//============================================================================== |
|
||||
// |
|
||||
// Copyright (c) 2004-2005, Andrew Hinton |
|
||||
// |
|
||||
// This file is part of PRISM. |
|
||||
// |
|
||||
// PRISM is free software; you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation; either version 2 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// PRISM is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with PRISM; if not, write to the Free Software Foundation, |
|
||||
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
||||
// |
|
||||
//============================================================================== |
|
||||
|
|
||||
package simulator.old; |
|
||||
|
|
||||
import java.util.*; |
|
||||
import java.io.*; |
|
||||
import parser.*; |
|
||||
import prism.*; |
|
||||
|
|
||||
/** Test cases for expression building |
|
||||
*/ |
|
||||
public class ExpressionTesting |
|
||||
{ |
|
||||
private Prism p; |
|
||||
private Expression e; |
|
||||
private SimulatorEngine s; |
|
||||
|
|
||||
public static void main(String[]args) |
|
||||
{ |
|
||||
new ExpressionTesting(); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public ExpressionTesting() |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
p = new Prism(null, null); |
|
||||
s = new SimulatorEngine(p); |
|
||||
|
|
||||
int startAt = 0; |
|
||||
int current; |
|
||||
|
|
||||
|
|
||||
for(current = startAt; current < tests.length; current++) |
|
||||
{ |
|
||||
e = p.parseSingleExpressionString(tests[current]); |
|
||||
System.out.print("Test "+(current+1)+"\t"+tests[current]+"\t"); |
|
||||
//s = new SimulatorEngine(p); |
|
||||
int sim = e.toSimulator(s); |
|
||||
System.out.print(SimulatorEngine.expressionToString(sim)); |
|
||||
System.out.println(""); |
|
||||
SimulatorEngine.deleteExpression(sim); |
|
||||
} |
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
System.out.println("Error: "+e.getMessage()); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
public static String[] tests = |
|
||||
{ |
|
||||
"(!false)", |
|
||||
"!(3=4)", |
|
||||
"!(3!=4)", |
|
||||
"!(3>4)", |
|
||||
"!(3<4)", |
|
||||
"!(3>=4)", |
|
||||
"!(3<=4)", |
|
||||
"!(true & true)", |
|
||||
"!(true & true & true)", |
|
||||
"!(true | true)", |
|
||||
"!(true | true | false)", |
|
||||
"!false", |
|
||||
"!true", |
|
||||
"ceil(2.23*2)", |
|
||||
"ceil(2.23-2.0)", |
|
||||
"ceil(1/2)", |
|
||||
"ceil(max(2.0,3.0,4.5))", |
|
||||
"ceil(2.23)", |
|
||||
"floor(2.23*2)", |
|
||||
"floor(2.23-2.0)", |
|
||||
"floor(1/2)", |
|
||||
"floor(max(2.0,3.0,4.5))", |
|
||||
"floor(2.23)", |
|
||||
"(!true)=(!true)", |
|
||||
"(!true)=(true=true)", |
|
||||
"(!true)=(true&true)", |
|
||||
"(!true)=(true & true & true)", |
|
||||
"(!true)=(true | true)", |
|
||||
"(!true)=(true | true | true)", |
|
||||
"(!true)=true", |
|
||||
"(!true)=false", |
|
||||
"(true=true)=(!true)", |
|
||||
"(true=true)=(true=true)", |
|
||||
"(true=true)=(true&true)", |
|
||||
"(true=true)=(true & true & true)", |
|
||||
"(true=true)=(true | true)", |
|
||||
"(true=true)=(true | true | true)", |
|
||||
"(true=true)=true", |
|
||||
"(true=true)=false", |
|
||||
"(true & true & true)=(!true)", |
|
||||
"(true&true&true)=(true=true)", |
|
||||
"(true & true & true)=(true&true)", |
|
||||
"(true & true & true)=(true & true & true)", |
|
||||
"(true & true & true)=(true | true)", |
|
||||
"(true & true & true)=(true | true | true)", |
|
||||
"(true & true & true)=true", |
|
||||
"(true & true & true)=false", |
|
||||
"(true | true | true)=(!true)", |
|
||||
"(true | true | true)=(true=true)", |
|
||||
"(true | true | true)=(true&true)", |
|
||||
"(true | true | true)=(true & true & true)", |
|
||||
"(true | true | true)=(true | true)", |
|
||||
"(true | true | true)=(true | true | true)", |
|
||||
"(true | true | true)=true", |
|
||||
"(true | true | true)=false", |
|
||||
"true=(!true)", |
|
||||
"true=(true=true)", |
|
||||
"true=(true&true)", |
|
||||
"true=(true & true & true)", |
|
||||
"true=(true | true)", |
|
||||
"true=(true | true | true)", |
|
||||
"true=true", |
|
||||
"true=false", |
|
||||
"(ceil(2.4))=(ceil(2.4))", |
|
||||
"(ceil(2.4))=(floor(2.4))", |
|
||||
"(ceil(2.4))=(2.0*4.0)", |
|
||||
"(ceil(2.4))=(2.0+4.0)", |
|
||||
"(ceil(2.4))=(2.0/4.0)", |
|
||||
"(ceil(2.4))=(2.0-4.0)", |
|
||||
"(ceil(2.4))=((true) ? (3.0) : (4.0))", |
|
||||
"(ceil(2.4))=max(2.0, 2.4)", |
|
||||
"(ceil(2.4))=min(2.0, 2.4)", |
|
||||
"(ceil(2.4))=3.0", |
|
||||
"(!true)!=(!true)", |
|
||||
"(!true)!=(true=true)", |
|
||||
"(!true)!=(true&true)", |
|
||||
"(!true)!=(true & true & true)", |
|
||||
"(!true)!=(true | true)", |
|
||||
"(!true)!=(true | true | true)", |
|
||||
"(!true)!=true", |
|
||||
"(!true)!=false", |
|
||||
"(true=true)!=(!true)", |
|
||||
"(true=true)!=(true=true)", |
|
||||
"(true=true)!=(true&true)", |
|
||||
"(true=true)!=(true & true & true)", |
|
||||
"(true=true)!=(true | true)", |
|
||||
"(true=true)!=(true | true | true)", |
|
||||
"(true=true)!=true", |
|
||||
"(true=true)!=false", |
|
||||
"(true & true & true)!=(!true)", |
|
||||
"(true&true&true)!=(true=true)", |
|
||||
"(true & true & true)!=(true&true)", |
|
||||
"(true & true & true)!=(true & true & true)", |
|
||||
"(true & true & true)!=(true | true)", |
|
||||
"(true & true & true)!=(true | true | true)", |
|
||||
"(true & true & true)!=true", |
|
||||
"(true & true & true)!=false", |
|
||||
"(true | true | true)!=(!true)", |
|
||||
"(true | true | true)!=(true=true)", |
|
||||
"(true | true | true)!=(true&true)", |
|
||||
"(true | true | true)!=(true & true & true)", |
|
||||
"(true | true | true)!=(true | true)", |
|
||||
"(true | true | true)!=(true | true | true)", |
|
||||
"(true | true | true)!=true", |
|
||||
"(true | true | true)!=false", |
|
||||
"true!=(!true)", |
|
||||
"true!=(true=true)", |
|
||||
"true!=(true&true)", |
|
||||
"true!=(true & true & true)", |
|
||||
"true!=(true | true)", |
|
||||
"true!=(true | true | true)", |
|
||||
"true!=true", |
|
||||
"true!=false", |
|
||||
"(ceil(2.4))!=(ceil(2.4))", |
|
||||
"(ceil(2.4))!=(floor(2.4))", |
|
||||
"(ceil(2.4))!=(2.0*4.0)", |
|
||||
"(ceil(2.4))!=(2.0+4.0)", |
|
||||
"(ceil(2.4))!=(2.0/4.0)", |
|
||||
"(ceil(2.4))!=(2.0-4.0)", |
|
||||
"(ceil(2.4))!=((true) ? (3.0) : (4.0))", |
|
||||
"(ceil(2.4))!=max(2.0, 2.4)", |
|
||||
"(ceil(2.4))!=min(2.0, 2.4)", |
|
||||
"(ceil(2.4))!=3.0", |
|
||||
"(ceil(2.4))>(ceil(2.4))", |
|
||||
"(ceil(2.4))>(floor(2.4))", |
|
||||
"(ceil(2.4))>(2.0*4.0)", |
|
||||
"(ceil(2.4))>(2.0+4.0)", |
|
||||
"(ceil(2.4))>(2.0/4.0)", |
|
||||
"(ceil(2.4))>(2.0-4.0)", |
|
||||
"(ceil(2.4))>((true) ? (3.0) : (4.0))", |
|
||||
"(ceil(2.4))>max(2.0, 2.4)", |
|
||||
"(ceil(2.4))>min(2.0, 2.4)", |
|
||||
"(ceil(2.4))>3.0", |
|
||||
"(ceil(2.4))<(ceil(2.4))", |
|
||||
"(ceil(2.4))<(floor(2.4))", |
|
||||
"(ceil(2.4))<(2.0*4.0)", |
|
||||
"(ceil(2.4))<(2.0+4.0)", |
|
||||
"(ceil(2.4))<(2.0/4.0)", |
|
||||
"(ceil(2.4))<(2.0-4.0)", |
|
||||
"(ceil(2.4))<((true) ? (3.0) : (4.0))", |
|
||||
"(ceil(2.4))<max(2.0, 2.4)", |
|
||||
"(ceil(2.4))<min(2.0, 2.4)", |
|
||||
"(ceil(2.4))<3.0", |
|
||||
"(ceil(2.4))>=(ceil(2.4))", |
|
||||
"(ceil(2.4))>=(floor(2.4))", |
|
||||
"(ceil(2.4))>=(2.0*4.0)", |
|
||||
"(ceil(2.4))>=(2.0+4.0)", |
|
||||
"(ceil(2.4))>=(2.0/4.0)", |
|
||||
"(ceil(2.4))>=(2.0-4.0)", |
|
||||
"(ceil(2.4))>=((true) ? (3.0) : (4.0))", |
|
||||
"(ceil(2.4))>=max(2.0, 2.4)", |
|
||||
"(ceil(2.4))>=min(2.0, 2.4)", |
|
||||
"(ceil(2.4))>=3.0", |
|
||||
"(ceil(2.4))<=(ceil(2.4))", |
|
||||
"(ceil(2.4))<=(floor(2.4))", |
|
||||
"(ceil(2.4))<=(2.0*4.0)", |
|
||||
"(ceil(2.4))<=(2.0+4.0)", |
|
||||
"(ceil(2.4))<=(2.0/4.0)", |
|
||||
"(ceil(2.4))<=(2.0-4.0)", |
|
||||
"(ceil(2.4))<=((true) ? (3.0) : (4.0))", |
|
||||
"(ceil(2.4))<=max(2.0, 2.4)", |
|
||||
"(ceil(2.4))<=min(2.0, 2.4)", |
|
||||
"(ceil(2.4))<=3.0", |
|
||||
"3.0*ceil(2.4)", |
|
||||
"3.0*floor(2.4)", |
|
||||
"3.0*(3.0*4.0)", |
|
||||
"3.0*(3.0+4.0)", |
|
||||
"3.0*(3.0/4.0)", |
|
||||
"3.0*(4.0-3.0)", |
|
||||
"3.0*((true) ? (3.0) : (4.0))", |
|
||||
"3.0*max(2.5, 2.6)", |
|
||||
"3.0*min(2.5, 2.6)", |
|
||||
"3.0*3.0", |
|
||||
"3*(3*4)", |
|
||||
"3*(3+4)", |
|
||||
"3*(3/4)", |
|
||||
"3*(4-3)", |
|
||||
"3*((true) ? (3) : (4))", |
|
||||
"3*max(3,4)", |
|
||||
"3*min(3,4)", |
|
||||
"3*3", |
|
||||
"3.0+ceil(2.4)", |
|
||||
"3.0+floor(2.4)", |
|
||||
"3.0+(3.0*4.0)", |
|
||||
"3.0+(3.0+4.0)", |
|
||||
"3.0+(3.0/4.0)", |
|
||||
"3.0+(4.0-3.0)", |
|
||||
"3.0+((true) ? (3.0) : (4.0))", |
|
||||
"3.0+max(2.5, 2.6)", |
|
||||
"3.0+min(2.5, 2.6)", |
|
||||
"3.0+3.0", |
|
||||
"3+(3*4)", |
|
||||
"3+(3+4)", |
|
||||
"3+(3/4)", |
|
||||
"3+(4-3)", |
|
||||
"3+((true) ? (3) : (4))", |
|
||||
"3+max(3,4)", |
|
||||
"3+min(3,4)", |
|
||||
"3+3"}; |
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
@ -1,103 +0,0 @@ |
|||||
//============================================================================== |
|
||||
// |
|
||||
// Copyright (c) 2004-2005, Andrew Hinton |
|
||||
// |
|
||||
// This file is part of PRISM. |
|
||||
// |
|
||||
// PRISM is free software; you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation; either version 2 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// PRISM is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with PRISM; if not, write to the Free Software Foundation, |
|
||||
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
||||
// |
|
||||
//============================================================================== |
|
||||
|
|
||||
package simulator.old; |
|
||||
|
|
||||
import java.util.*; |
|
||||
import java.io.*; |
|
||||
import parser.*; |
|
||||
import prism.*; |
|
||||
|
|
||||
/** Test cases for expression building |
|
||||
*/ |
|
||||
public class LoadModelTesting |
|
||||
{ |
|
||||
private Prism p; |
|
||||
private Expression e; |
|
||||
private SimulatorEngine s; |
|
||||
|
|
||||
public static void main(String[]args) |
|
||||
{ |
|
||||
new LoadModelTesting(); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public LoadModelTesting() |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
p = new Prism(null, null); |
|
||||
s = new SimulatorEngine(p); |
|
||||
|
|
||||
|
|
||||
|
|
||||
ModulesFile m = p.parseModelFile(new File |
|
||||
("../examples/dice/dice.pm")); |
|
||||
//("../examples/leader/synchronous/leader3_4.pm")); |
|
||||
//m.tidyUp(); |
|
||||
//m.setUndefinedConstants(constants); |
|
||||
System.out.println(m.toString()+"\n\n\n\n\n\n\n"); |
|
||||
long before= System.currentTimeMillis(); |
|
||||
s.loadModulesFile(m); |
|
||||
Values init = new Values(); |
|
||||
/* |
|
||||
init.addValue("c", new Integer(1)); |
|
||||
init.addValue("s1", new Integer(0)); |
|
||||
init.addValue("u1", new Boolean(false)); |
|
||||
init.addValue("v1", new Integer(0)); |
|
||||
init.addValue("p1", new Integer(0)); |
|
||||
init.addValue("s2", new Integer(0)); |
|
||||
init.addValue("u2", new Boolean(false)); |
|
||||
init.addValue("v2", new Integer(0)); |
|
||||
init.addValue("p2", new Integer(0)); |
|
||||
init.addValue("s3", new Integer(0)); |
|
||||
init.addValue("u3", new Boolean(false)); |
|
||||
init.addValue("v3", new Integer(0)); |
|
||||
init.addValue("p3", new Integer(0));*/ |
|
||||
|
|
||||
init.addValue("d", new Integer(0)); |
|
||||
init.addValue("s", new Integer(0)); |
|
||||
|
|
||||
Values constants = new Values();//m.getConstantValues(); |
|
||||
//constants.addValue("c", new Integer(124)); |
|
||||
|
|
||||
m.setUndefinedConstants(constants); |
|
||||
Values v = m.getConstantValues(); |
|
||||
System.out.println(v.toString()); |
|
||||
s.startNewPath(m.getConstantValues(), init); |
|
||||
long timeTaken = System.currentTimeMillis() - before; |
|
||||
System.out.println("Loading model complete!! Took: "+timeTaken+"ms\n\n"); |
|
||||
|
|
||||
System.out.println(SimulatorEngine.modelToString()); |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
System.out.println("Error: "+e.getMessage()); |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
@ -1,406 +0,0 @@ |
|||||
//============================================================================== |
|
||||
// |
|
||||
// Copyright (c) 2004-2005, Andrew Hinton |
|
||||
// |
|
||||
// This file is part of PRISM. |
|
||||
// |
|
||||
// PRISM is free software; you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation; either version 2 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// PRISM is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with PRISM; if not, write to the Free Software Foundation, |
|
||||
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
||||
// |
|
||||
//============================================================================== |
|
||||
|
|
||||
package simulator.old; |
|
||||
|
|
||||
import java.util.*; |
|
||||
import java.io.*; |
|
||||
import parser.*; |
|
||||
import prism.*; |
|
||||
|
|
||||
/** |
|
||||
*/ |
|
||||
public class ManualSimulator |
|
||||
{ |
|
||||
private Prism p; |
|
||||
private Expression e; |
|
||||
private SimulatorEngine s; |
|
||||
|
|
||||
public static void main(String[]args) |
|
||||
{ |
|
||||
if(args.length == 1) |
|
||||
new ManualSimulator(args[0], null, false); |
|
||||
else if(args.length == 2) |
|
||||
new ManualSimulator(args[0], args[1], false); |
|
||||
else if(args.length == 3) |
|
||||
new ManualSimulator(args[0], args[1], args[2].equals("-sample")); |
|
||||
|
|
||||
else |
|
||||
{ |
|
||||
System.out.println("usage: simulator <model_file>"); |
|
||||
System.out.println(" simulator <model_file> <properties_file>"); |
|
||||
System.out.println(" simulator <model_file> <properties_file> -sample"); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
public ManualSimulator(String parameter, String properties, boolean doSampling) |
|
||||
{ |
|
||||
//initialise prism |
|
||||
p = new Prism(null, null); |
|
||||
|
|
||||
//initialise simulator engine |
|
||||
s = new SimulatorEngine(p); |
|
||||
int type = 0; |
|
||||
|
|
||||
try |
|
||||
{ |
|
||||
//Parse model |
|
||||
ModulesFile m = p.parseModelFile(new File(parameter)); |
|
||||
|
|
||||
//Load this into simulator engine |
|
||||
s.loadModulesFile(m); |
|
||||
|
|
||||
//Console reader |
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
|
||||
String input; |
|
||||
|
|
||||
|
|
||||
//Sort out the initial state |
|
||||
System.out.println("Please enter values for the initial state."); |
|
||||
|
|
||||
Values init = new Values(); |
|
||||
for(int i = 0; i < m.getVarNames().size(); i++) |
|
||||
{ |
|
||||
String var = (String)m.getVarNames().elementAt(i); |
|
||||
|
|
||||
boolean valid = true; |
|
||||
do |
|
||||
{ |
|
||||
System.out.print(var+": "); |
|
||||
input = br.readLine(); |
|
||||
if(input.equals("true")) |
|
||||
{ |
|
||||
init.addValue(var, new Integer(1)); |
|
||||
} |
|
||||
else if(input.equals("false")) |
|
||||
{ |
|
||||
init.addValue(var, new Integer(0)); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
init.addValue(var, new Integer(input)); |
|
||||
valid = true; |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
valid = false; |
|
||||
} |
|
||||
} |
|
||||
} while(!valid); |
|
||||
} |
|
||||
System.out.println("Initial state done..."); |
|
||||
System.out.println(""); |
|
||||
|
|
||||
|
|
||||
Values constants = new Values(); |
|
||||
|
|
||||
ConstantList modConstants = m.getConstantList(); |
|
||||
if(modConstants.getNumUndefined() > 0) |
|
||||
System.out.println("Please enter values for the following undefined model constants:"); |
|
||||
|
|
||||
if(modConstants != null) |
|
||||
{ |
|
||||
for(int i = 0; i < modConstants.getNumUndefined(); i++) |
|
||||
{ |
|
||||
|
|
||||
|
|
||||
|
|
||||
String var = (String)modConstants.getUndefinedConstants().elementAt(i); |
|
||||
|
|
||||
boolean valid = true; |
|
||||
do |
|
||||
{ |
|
||||
System.out.print(var+": "); |
|
||||
input = br.readLine(); |
|
||||
if(input.equals("true")) |
|
||||
{ |
|
||||
constants.addValue(var, new Integer(1)); |
|
||||
} |
|
||||
else if(input.equals("false")) |
|
||||
{ |
|
||||
constants.addValue(var, new Integer(0)); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
constants.addValue(var, new Integer(input)); |
|
||||
valid = true; |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
valid = false; |
|
||||
} |
|
||||
} |
|
||||
} while(!valid); |
|
||||
} |
|
||||
} |
|
||||
System.out.println("Constants done..."); |
|
||||
System.out.println(""); |
|
||||
|
|
||||
//define the constants |
|
||||
m.setUndefinedConstants(constants); |
|
||||
|
|
||||
//properties |
|
||||
PropertiesFile pf = null; |
|
||||
Values propertyConstants = new Values(); |
|
||||
|
|
||||
if(properties != null) |
|
||||
{ |
|
||||
pf = p.parsePropertiesFile(m, new File(properties)); |
|
||||
|
|
||||
s.loadProperties(pf); |
|
||||
|
|
||||
Values propConValues = new Values(); |
|
||||
|
|
||||
Vector pConstants = pf.getUndefinedConstants(); |
|
||||
|
|
||||
if(pConstants != null) |
|
||||
{ |
|
||||
if(pConstants.size() > 0) |
|
||||
System.out.println("Please enter values for the following undefined property constants:"); |
|
||||
for(int i = 0; i < pConstants.size(); i++) |
|
||||
{ |
|
||||
|
|
||||
|
|
||||
|
|
||||
String var = (String)pConstants.elementAt(i); |
|
||||
|
|
||||
boolean valid = true; |
|
||||
do |
|
||||
{ |
|
||||
System.out.print(var+": "); |
|
||||
input = br.readLine(); |
|
||||
if(input.equals("true")) |
|
||||
{ |
|
||||
propConValues.addValue(var, new Integer(1)); |
|
||||
} |
|
||||
else if(input.equals("false")) |
|
||||
{ |
|
||||
propConValues.addValue(var, new Integer(0)); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
propConValues.addValue(var, new Integer(input)); |
|
||||
valid = true; |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
valid = false; |
|
||||
} |
|
||||
} |
|
||||
} while(!valid); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
pf.setUndefinedConstants(propConValues); |
|
||||
|
|
||||
propertyConstants = pf.getConstantValues(); |
|
||||
|
|
||||
s.startNewPath(m.getConstantValues(), propertyConstants, init); |
|
||||
|
|
||||
for(int i = 0; i < pf.getNumProperties(); i++) |
|
||||
{ |
|
||||
s.addPCTLProperty(pf.getProperty(i)); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
else |
|
||||
s.startNewPath(m.getConstantValues(), propertyConstants, init); |
|
||||
|
|
||||
|
|
||||
System.out.println("Simulator loaded successfully..."); |
|
||||
System.out.println(""); |
|
||||
|
|
||||
|
|
||||
if(doSampling) |
|
||||
{ |
|
||||
s.doSampling(); |
|
||||
System.exit(0); |
|
||||
} |
|
||||
|
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
SimulatorEngine.printCurrentUpdates(); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
System.out.print("SIM::> "); |
|
||||
try |
|
||||
{ |
|
||||
input = br.readLine(); |
|
||||
while(!input.equals("exit")) |
|
||||
{ |
|
||||
|
|
||||
if(input.equals("reset")) |
|
||||
{ |
|
||||
s.initialiseModel(); |
|
||||
s.loadModel(m); |
|
||||
|
|
||||
s.startNewPath(m.getConstantValues(), propertyConstants, init); |
|
||||
if(pf != null) |
|
||||
{ |
|
||||
for(int i = 0; i < pf.getNumProperties(); i++) |
|
||||
{ |
|
||||
s.addPCTLProperty(pf.getProperty(i)); |
|
||||
} |
|
||||
} |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
SimulatorEngine.printCurrentUpdates(); |
|
||||
} |
|
||||
if(input.equals("backtrack")) |
|
||||
{ |
|
||||
System.out.print("to step: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
int i = Integer.parseInt(input); |
|
||||
if(i>=0)//protection |
|
||||
{ |
|
||||
s.backtrack(i); |
|
||||
|
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
SimulatorEngine.printCurrentUpdates(); |
|
||||
} |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
else if(input.equals("remove")) |
|
||||
{ |
|
||||
System.out.print("to step: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
int i = Integer.parseInt(input); |
|
||||
if(i>=0)//protection |
|
||||
{ |
|
||||
s.removePrecedingStates(i); |
|
||||
|
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
SimulatorEngine.printCurrentUpdates(); |
|
||||
} |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
else if(input.equals("auto")) |
|
||||
{ |
|
||||
System.out.println("how many steps: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
int i = Integer.parseInt(input); |
|
||||
if(i>=0) |
|
||||
{ |
|
||||
long cl = System.currentTimeMillis(); |
|
||||
s.automaticChoices(i); |
|
||||
long ti = System.currentTimeMillis() - cl; |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
SimulatorEngine.printCurrentUpdates(); |
|
||||
//System.out.println(""+i+" steps took: "+ti+"ms"); |
|
||||
} |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
} |
|
||||
else //manual update |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
|
|
||||
int i = Integer.parseInt(input); |
|
||||
|
|
||||
if(type == ModulesFile.STOCHASTIC) |
|
||||
{ |
|
||||
System.out.print("time in state: "); |
|
||||
input = br.readLine(); |
|
||||
try |
|
||||
{ |
|
||||
double d = Double.parseDouble(input); |
|
||||
|
|
||||
s.manualUpdate(i,d); |
|
||||
|
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input"); |
|
||||
} |
|
||||
} |
|
||||
else |
|
||||
s.manualUpdate(i); |
|
||||
System.out.println(); |
|
||||
System.out.println(SimulatorEngine.pathToString()); |
|
||||
SimulatorEngine.printRegisteredPathFormulae(); |
|
||||
SimulatorEngine.printCurrentUpdates(); |
|
||||
} |
|
||||
catch(NumberFormatException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input, enter the update index"); |
|
||||
} |
|
||||
catch(SimulatorException e) |
|
||||
{ |
|
||||
System.out.println("Invalid input: "+e.getMessage()); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
System.out.print("SIM::> "); |
|
||||
input = br.readLine(); |
|
||||
} |
|
||||
} |
|
||||
catch (IOException ioe) |
|
||||
{ |
|
||||
System.out.println("IO error trying to read your name!"); |
|
||||
System.exit(1); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
System.out.println("Error: "+e.getMessage()); |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
@ -1,602 +0,0 @@ |
|||||
//============================================================================== |
|
||||
// |
|
||||
// Copyright (c) 2004-2005, Andrew Hinton |
|
||||
// |
|
||||
// This file is part of PRISM. |
|
||||
// |
|
||||
// PRISM is free software; you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation; either version 2 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// PRISM is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with PRISM; if not, write to the Free Software Foundation, |
|
||||
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
||||
// |
|
||||
//============================================================================== |
|
||||
|
|
||||
package simulator.old; |
|
||||
|
|
||||
import java.util.*; |
|
||||
import java.io.*; |
|
||||
import parser.*; |
|
||||
import prism.*; |
|
||||
|
|
||||
/** |
|
||||
*/ |
|
||||
public class UpdatesTesting |
|
||||
{ |
|
||||
private Prism p; |
|
||||
private Expression e; |
|
||||
private SimulatorEngine s; |
|
||||
|
|
||||
public static void main(String[]args) |
|
||||
{ |
|
||||
new UpdatesTesting(); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public UpdatesTesting() |
|
||||
{ |
|
||||
PrismFileLog ppp = new PrismFileLog("stdout"); |
|
||||
p = new Prism(ppp,ppp); |
|
||||
p.initialise(); |
|
||||
|
|
||||
s = new SimulatorEngine(p); |
|
||||
|
|
||||
//Setup the test log |
|
||||
|
|
||||
PrintWriter testLog = null; |
|
||||
try |
|
||||
{ |
|
||||
File f = new File("../testing/update_testlog_1.log"); |
|
||||
testLog = new PrintWriter(new FileWriter(f), true); |
|
||||
|
|
||||
//testLog.println("Test the printwriter"); |
|
||||
} |
|
||||
catch(IOException e) |
|
||||
{ |
|
||||
System.err.println("Error in opening test log file: \n"+e.getMessage()); |
|
||||
} |
|
||||
|
|
||||
Model builtModel = null; |
|
||||
|
|
||||
//for each test case |
|
||||
for(int i = 0; i < getNumTestCases(); i++) |
|
||||
{ |
|
||||
s.initialiseModel(); |
|
||||
|
|
||||
//create ModulesFile for this test case |
|
||||
ModulesFile mf = null; |
|
||||
try |
|
||||
{ |
|
||||
File f = new File(getTestFile(i)); |
|
||||
System.err.println("Loading..."+f.toString()); |
|
||||
mf = p.parseModelFile(f); |
|
||||
//System.err.println(mf.toString()); |
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
testLog.println(getTestFile(i)+"\t"+"Parsing Error: "+e.getMessage()); |
|
||||
continue; |
|
||||
} |
|
||||
Values constants = new Values(); |
|
||||
addConstantsForTestFile(i, constants); |
|
||||
|
|
||||
try |
|
||||
{ |
|
||||
mf.setUndefinedConstants(constants); |
|
||||
Values v = mf.getConstantValues(); |
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
testLog.println(getTestFile(i)+"\t"+"Invalid Constants Provided: "+e.getMessage()); |
|
||||
continue; |
|
||||
} |
|
||||
|
|
||||
try |
|
||||
{ |
|
||||
if(builtModel != null) |
|
||||
builtModel.clear(); |
|
||||
builtModel = p.buildModel(mf); |
|
||||
} |
|
||||
catch(PrismException e) |
|
||||
{ |
|
||||
testLog.println(getTestFile(i)+"\t"+"Build Error "+e.getMessage()); |
|
||||
continue; |
|
||||
} |
|
||||
|
|
||||
StateList sl = builtModel.getReachableStates(); |
|
||||
|
|
||||
PrismFileLog pfl = new PrismFileLog("../testing/tempStates.txt"); |
|
||||
sl.print(pfl); |
|
||||
pfl.close(); |
|
||||
File stateFile = new File("../testing/tempStates.txt"); |
|
||||
File transFile = new File("../testing/tempTrans.txt"); |
|
||||
try |
|
||||
{ |
|
||||
p.exportToFile(builtModel, true, Prism.EXPORT_PLAIN, transFile); |
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
testLog.println(getTestFile(i)+"\t"+"Error when exporting transitions: "+e.getMessage()); |
|
||||
} |
|
||||
ArrayList states = new ArrayList(); |
|
||||
|
|
||||
try |
|
||||
{ |
|
||||
//testLog.println(getTestFile(i)+"\t"+"Before test states and transitions"); |
|
||||
computeStatesAndTransitions(states, stateFile, transFile, builtModel.getNumVars()); |
|
||||
//testLog.println(getTestFile(i)+"\t"+"Computed test states and transitions"); |
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
testLog.println(getTestFile(i)+"\t"+"Error when computing test states and transitions: "+e.getMessage()); |
|
||||
continue; |
|
||||
} |
|
||||
|
|
||||
int countErrors = 0; |
|
||||
int countTests = 0; |
|
||||
|
|
||||
String[]varNames = new String[mf.getVarNames().size()]; |
|
||||
for(int j = 0; j < varNames.length; j++) |
|
||||
{ |
|
||||
varNames[j] = (String)mf.getVarNames().elementAt(j); |
|
||||
//System.out.println("A var: "+varNames[j]); |
|
||||
} |
|
||||
|
|
||||
s.loadModulesFile(mf); |
|
||||
|
|
||||
|
|
||||
for(int j = 0; j < states.size(); j++) |
|
||||
{ |
|
||||
if(j%10 == 0) |
|
||||
{ |
|
||||
System.err.print("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); |
|
||||
System.err.print("Iteration: "+j); |
|
||||
} |
|
||||
|
|
||||
//System.out.println("Iteration "+j+": "); |
|
||||
State currentTestState = (State)states.get(j); |
|
||||
//System.out.println(currentTestState.toString()); |
|
||||
Values test = new Values(); |
|
||||
for(int k = 0; k < varNames.length; k++) |
|
||||
{ |
|
||||
int type = ((Integer)mf.getVarTypes().elementAt(k)).intValue(); |
|
||||
Object obj; |
|
||||
|
|
||||
if(type == Expression.BOOLEAN) |
|
||||
{ |
|
||||
obj = (currentTestState.varValues[k] == 0) ? new Boolean(false) : new Boolean(true); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
obj = new Integer(currentTestState.varValues[k]); |
|
||||
} |
|
||||
test.addValue(varNames[k], obj); |
|
||||
} |
|
||||
try |
|
||||
{ |
|
||||
if(j == 0) |
|
||||
s.startNewPath(mf.getConstantValues(), test); |
|
||||
else |
|
||||
s.startNewPath(test); |
|
||||
//System.err.println(s.modelToString()); |
|
||||
//System.err.println(s.pathToString()); |
|
||||
boolean result = currentTestState.compareUpdates(s, states); |
|
||||
if(!result) |
|
||||
{ |
|
||||
//Produce error report |
|
||||
|
|
||||
countErrors++; |
|
||||
|
|
||||
PrintWriter pw = new PrintWriter(new FileWriter(new File("../testing/errorReports/error_"+i+"_"+countErrors+".txt"))); |
|
||||
|
|
||||
pw.println("Error report for "+getTestFile(i)); |
|
||||
pw.println("==================================================================="); |
|
||||
pw.println(); |
|
||||
//pw.println(s.modelToString()); |
|
||||
|
|
||||
int numUpdates = s.getNumUpdates(); |
|
||||
pw.println("Actual Results"); |
|
||||
pw.println(); |
|
||||
|
|
||||
for(int ii = 0; ii < numUpdates; ii++) |
|
||||
{ |
|
||||
int[] vars = new int[builtModel.getNumVars()]; |
|
||||
pw.print(s.getProbabilityOfUpdate(ii)+"\t"); |
|
||||
pw.print(s.getDistributionIndexOfUpdate(ii)+"\t"); |
|
||||
double prob = s.getProbabilityOfUpdate(ii); |
|
||||
int dist = s.getDistributionIndexOfUpdate(ii); |
|
||||
for(int jj = 0; jj < builtModel.getNumVars(); jj++) |
|
||||
{ |
|
||||
vars[jj] = s.getResultOfUpdate(ii,jj); |
|
||||
//pw.print(s.getResultOfUpdate(i,j)); |
|
||||
} |
|
||||
State ssss = null; |
|
||||
for(int jj = 0; jj < states.size(); jj++) |
|
||||
{ |
|
||||
ssss = (State)states.get(jj); |
|
||||
if(ssss.equals(vars)) |
|
||||
{ |
|
||||
pw.println(" "+ssss.index); |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
pw.println("Expected results"); |
|
||||
pw.println(currentTestState.toString()); |
|
||||
pw.println(); |
|
||||
pw.flush(); |
|
||||
pw.close(); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
catch(Exception e) |
|
||||
{ |
|
||||
testLog.println(getTestFile(i)+"\t"+"Error in starting new path"); |
|
||||
} |
|
||||
countTests++; |
|
||||
} |
|
||||
|
|
||||
testLog.println(getTestFile(i)+"\tno. tests: "+countTests+"\tfailed: "+countErrors); |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
public void computeStatesAndTransitions(ArrayList states, File stateFile, File transFile, int numVars) throws Exception |
|
||||
{ |
|
||||
BufferedReader br = new BufferedReader(new FileReader(stateFile)); |
|
||||
|
|
||||
int ff= 0; |
|
||||
while(br.ready()) |
|
||||
{ |
|
||||
String line = br.readLine(); |
|
||||
//System.err.println("line = "+line); |
|
||||
//find the number |
|
||||
int numEnd = 0; |
|
||||
while(line.charAt(numEnd) != ':') |
|
||||
numEnd++; |
|
||||
int index = Integer.parseInt(line.substring(0,numEnd)); |
|
||||
//System.err.println("step1"); |
|
||||
State st = new State(index, numVars); |
|
||||
|
|
||||
|
|
||||
//System.err.println("numEnd = "+line.charAt(numEnd)); |
|
||||
int curr = numEnd+2; //start where the variables start |
|
||||
int startNum = numEnd+2; |
|
||||
|
|
||||
int varIndex = 0; |
|
||||
//System.err.println("step2"); |
|
||||
while(line.charAt(curr)!= ')') |
|
||||
{ |
|
||||
//System.err.println("step "+line.charAt(curr)); |
|
||||
if(line.charAt(curr) == ',') |
|
||||
{ |
|
||||
//System.err.println("step3"); |
|
||||
int num = Integer.parseInt(line.substring(startNum, curr)); |
|
||||
startNum = curr+1; |
|
||||
st.varValues[varIndex++] = num; |
|
||||
} |
|
||||
curr++; |
|
||||
} |
|
||||
int num = Integer.parseInt(line.substring(startNum, curr)); |
|
||||
startNum = curr+1; |
|
||||
st.varValues[varIndex++] = num; |
|
||||
|
|
||||
states.add(st); |
|
||||
} |
|
||||
|
|
||||
br = new BufferedReader(new FileReader(transFile)); |
|
||||
|
|
||||
br.readLine(); //ignore the first line header info |
|
||||
|
|
||||
while(br.ready()) |
|
||||
{ |
|
||||
String line = br.readLine(); |
|
||||
StringTokenizer tokens = new StringTokenizer(line, " "); |
|
||||
if(tokens.countTokens() == 4) //nondeterministic |
|
||||
{ |
|
||||
int fromIndex = Integer.parseInt(tokens.nextToken()); |
|
||||
int distIndex = Integer.parseInt(tokens.nextToken()); |
|
||||
int toIndex = Integer.parseInt(tokens.nextToken()); |
|
||||
double probability = Double.parseDouble(tokens.nextToken()); |
|
||||
|
|
||||
State fromState = (State)states.get(fromIndex); |
|
||||
State toState = (State)states.get(toIndex); |
|
||||
Transition tran = new Transition(toState, distIndex, probability); |
|
||||
|
|
||||
fromState.addTransition(tran); |
|
||||
} |
|
||||
else if(tokens.countTokens() == 3) //dtmc (ctmc) |
|
||||
{ |
|
||||
int fromIndex = Integer.parseInt(tokens.nextToken()); |
|
||||
int distIndex = -1; |
|
||||
int toIndex = Integer.parseInt(tokens.nextToken()); |
|
||||
double probability = Double.parseDouble(tokens.nextToken()); |
|
||||
|
|
||||
State fromState = (State)states.get(fromIndex); |
|
||||
State toState = (State)states.get(toIndex); |
|
||||
Transition tran = new Transition(toState, distIndex, probability); |
|
||||
|
|
||||
fromState.addTransition(tran); |
|
||||
} |
|
||||
else throw new Exception("Wrong number of tokens in transition file"); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
class State |
|
||||
{ |
|
||||
int index; |
|
||||
int[] varValues; |
|
||||
|
|
||||
ArrayList transitions; |
|
||||
|
|
||||
public State(int index, int numVarValues) |
|
||||
{ |
|
||||
this.index = index; |
|
||||
varValues = new int[numVarValues]; |
|
||||
|
|
||||
transitions = new ArrayList(); |
|
||||
} |
|
||||
|
|
||||
public boolean equals(int[]test) |
|
||||
{ |
|
||||
for(int i = 0; i < varValues.length; i++) |
|
||||
if(varValues[i] != test[i]) return false; |
|
||||
return true; |
|
||||
} |
|
||||
|
|
||||
public boolean compareUpdates(SimulatorEngine s, ArrayList states) |
|
||||
{ |
|
||||
int numUpdates = s.getNumUpdates(); |
|
||||
|
|
||||
int[] distribution = new int[100]; |
|
||||
for(int i = 0; i < distribution.length; i++) |
|
||||
{ |
|
||||
distribution[i] = -1; |
|
||||
} |
|
||||
|
|
||||
for(int i = 0; i < numUpdates; i++) |
|
||||
{ |
|
||||
int[] vars = new int[varValues.length]; |
|
||||
//System.err.print(s.getProbabilityOfUpdate(i)+"\t"); |
|
||||
//System.err.print(s.getDistributionIndexOfUpdate(i)+"\t"); |
|
||||
double prob = s.getProbabilityOfUpdate(i); |
|
||||
int dist = s.getDistributionIndexOfUpdate(i); |
|
||||
for(int j = 0; j < varValues.length; j++) |
|
||||
{ |
|
||||
vars[j] = s.getResultOfUpdate(i,j); |
|
||||
//System.err.print(s.getResultOfUpdate(i,j)); |
|
||||
} |
|
||||
State ssss = null; |
|
||||
for(int j = 0; j < states.size(); j++) |
|
||||
{ |
|
||||
ssss = (State)states.get(j); |
|
||||
if(ssss.equals(vars)) |
|
||||
{ |
|
||||
//System.err.print(" "+ssss.index); |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
//System.err.println(); |
|
||||
if(ssss != null) |
|
||||
{ |
|
||||
for(int j = 0; j < getNumTransitions(); j++) |
|
||||
{ |
|
||||
Transition t = getTransition(j); |
|
||||
if(t.toState.index == ssss.index) |
|
||||
{ |
|
||||
if(t.probability > prob-0.0000001 && t.probability < prob+0.0000001) |
|
||||
{ |
|
||||
t.checked = true; |
|
||||
/*if(distribution[t.distributionIndex] == -1) |
|
||||
{ |
|
||||
distribution[t.distributionIndex] = dist; |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
//if we have already assigned check |
|
||||
//that it is the same |
|
||||
if(distribution[t.distributionIndex] |
|
||||
!= dist) return false; |
|
||||
}*/ |
|
||||
} |
|
||||
else return false; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
//all transitions should have been checked |
|
||||
for(int i = 0; i < getNumTransitions(); i++) |
|
||||
{ |
|
||||
if(!getTransition(i).checked) return false; |
|
||||
} |
|
||||
//System.err.println(); |
|
||||
//System.err.println(this.toString()); |
|
||||
//System.err.println(); |
|
||||
return true; |
|
||||
} |
|
||||
|
|
||||
public Transition getTransition(int i) |
|
||||
{ |
|
||||
return (Transition)transitions.get(i); |
|
||||
} |
|
||||
|
|
||||
public void addTransition(Transition t) |
|
||||
{ |
|
||||
transitions.add(t); |
|
||||
} |
|
||||
|
|
||||
public int getNumTransitions() |
|
||||
{ |
|
||||
return transitions.size(); |
|
||||
} |
|
||||
|
|
||||
public String toString() |
|
||||
{ |
|
||||
String returner = ""+index+":("; |
|
||||
for(int i = 0; i < varValues.length; i++) |
|
||||
{ |
|
||||
returner+=""+varValues[i]; |
|
||||
if(i != varValues.length-1) returner+=","; |
|
||||
} |
|
||||
returner+=")"; |
|
||||
for(int i = 0; i < transitions.size(); i++) |
|
||||
returner+="\n\t"+getTransition(i).toString(); |
|
||||
|
|
||||
return returner; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
class Transition |
|
||||
{ |
|
||||
State toState; |
|
||||
int distributionIndex; |
|
||||
double probability; |
|
||||
boolean checked; |
|
||||
|
|
||||
public Transition(State toState, int distributionIndex, double probability) |
|
||||
{ |
|
||||
this.toState = toState; |
|
||||
this.distributionIndex = distributionIndex; |
|
||||
this.probability = probability; |
|
||||
} |
|
||||
|
|
||||
public String toString() |
|
||||
{ |
|
||||
String returner = distributionIndex >= 0 ? "["+distributionIndex+"]" : ""; |
|
||||
returner+=" "+probability+": "+toState.index; |
|
||||
return returner; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
//==================================================================== |
|
||||
// Test Cases |
|
||||
//==================================================================== |
|
||||
|
|
||||
public String getTestFile(int i ) |
|
||||
{ |
|
||||
String returner = "../examples/"; |
|
||||
switch(i) |
|
||||
{ |
|
||||
/*case 0: return returner+"dice/two_dice.nm"; |
|
||||
case 1: return returner+"leader/asynchronous/leader4.nm"; |
|
||||
case 2: return returner+"leader/asynchronous/leader5.nm"; |
|
||||
case 3: return returner+"firewire/abst/deadline.nm"; |
|
||||
case 4: return returner+"firewire/abst/deadline.nm"; |
|
||||
case 5: return returner+"lrabin/lrabin34.nm"; */ |
|
||||
//case 0: return returner+"/cluster/cluster.sm"; |
|
||||
//case 0: return returner+"mutual/mutual3.nm"; |
|
||||
case 0: return returner+"cyclin.sm"; |
|
||||
case 1: return returner+"phil/phil4.nm"; |
|
||||
case 2: return returner+"rabin/rabin3.nm"; |
|
||||
|
|
||||
case 9: return returner+"lrabin/lrabin35.nm"; |
|
||||
case 10: return returner+"lrabin/lrabin36.nm"; |
|
||||
case 11: return returner+"lrabin/lrabin38.nm"; |
|
||||
case 12: return returner+"lrabin/lrabin44.nm"; |
|
||||
case 13: return returner+"lrabin/lrabin45.nm"; |
|
||||
case 14: return returner+"lrabin/lrabin46.nm"; |
|
||||
case 15: return returner+"lrabin/lrabin48.nm"; |
|
||||
case 16: return returner+"mutual/mutual10.nm"; |
|
||||
case 17: return returner+"mutual/mutual4.nm"; |
|
||||
case 18: return returner+"mutual/mutual5.nm"; |
|
||||
case 19: return returner+"mutual/mutual8.nm"; |
|
||||
|
|
||||
case 20: return returner+"phil/phil15.nm"; |
|
||||
case 21: return returner+"phil/phil2.nm"; |
|
||||
case 22: return returner+"phil/phil20.nm"; |
|
||||
case 24: return returner+"phil/phil25.nm"; |
|
||||
case 25: return returner+"phil/phil3.nm"; |
|
||||
case 26: return returner+"phil/phil30.nm"; |
|
||||
case 27: return returner+"phil/phil35.nm"; |
|
||||
case 28: return returner+"phil/phil4.nm"; |
|
||||
case 29: return returner+"phil/phil5.nm"; |
|
||||
case 30: return returner+"phil/phil6.nm"; |
|
||||
case 31: return returner+"phil/phil7.nm"; |
|
||||
case 32: return returner+"phil/phil8.nm"; |
|
||||
case 33: return returner+"phil/phil9.nm"; |
|
||||
|
|
||||
case 35: return returner+"rabin/rabin12.nm"; |
|
||||
case 36: return returner+"rabin/rabin3.nm"; |
|
||||
case 37: return returner+"rabin/rabin4.nm"; |
|
||||
case 38: return returner+"rabin/rabin5.nm"; |
|
||||
case 39: return returner+"rabin/rabin6.nm"; |
|
||||
case 40: return returner+"rabin/rabin8.nm"; |
|
||||
case 41: return returner+"leader/asynchronous/leader6.nm"; |
|
||||
case 42: return returner+"leader/asynchronous/leader7.nm"; |
|
||||
|
|
||||
|
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
|
|
||||
public void addConstantsForTestFile(int i, Values values) |
|
||||
{ |
|
||||
switch(i) |
|
||||
{ |
|
||||
case 0: values.addValue("N", new Integer(2)); return; |
|
||||
case 1: return; |
|
||||
case 2: return; |
|
||||
case 3: values.addValue("deadline", new Integer(10)); return; //eg |
|
||||
case 4: return; |
|
||||
case 5: return; |
|
||||
case 6: return; |
|
||||
case 7: return; |
|
||||
case 8: return; |
|
||||
case 9: return; |
|
||||
case 10: return; |
|
||||
case 11: return; |
|
||||
case 12: return; |
|
||||
case 13: return; |
|
||||
case 14: return; |
|
||||
case 15: return; |
|
||||
case 16: return; |
|
||||
case 17: return; |
|
||||
case 18: return; |
|
||||
case 19: return; |
|
||||
case 20: return; |
|
||||
case 21: return; |
|
||||
case 22: return; |
|
||||
case 23: return; |
|
||||
case 24: return; |
|
||||
case 25: return; |
|
||||
case 26: return; |
|
||||
case 27: return; |
|
||||
case 28: return; |
|
||||
case 29: return; |
|
||||
case 30: return; |
|
||||
case 31: return; |
|
||||
case 32: return; |
|
||||
case 33: return; |
|
||||
case 34: return; |
|
||||
case 35: return; |
|
||||
case 36: return; |
|
||||
case 37: return; |
|
||||
case 38: return; |
|
||||
case 39: return; |
|
||||
case 40: return; |
|
||||
case 41: return; |
|
||||
case 42: return; |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
public int getNumTestCases() |
|
||||
{ |
|
||||
return 1; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue