|
|
|
@ -170,10 +170,12 @@ public class Explicit2MTBDD |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
numStates = 0; |
|
|
|
while (s != null) { |
|
|
|
// skip blank lines |
|
|
|
s = s.trim(); |
|
|
|
if (s.length() > 0) { |
|
|
|
// increment state count |
|
|
|
numStates++; |
|
|
|
// split string |
|
|
|
s = s.trim(); |
|
|
|
s = s.substring(s.indexOf('(')+1, s.indexOf(')')); |
|
|
|
ss = s.split(","); |
|
|
|
if (ss.length != numVars) throw new PrismException("wrong number of variables"); |
|
|
|
@ -195,6 +197,8 @@ public class Explicit2MTBDD |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// read next line |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
} |
|
|
|
// compute variable ranges |
|
|
|
@ -300,7 +304,9 @@ public class Explicit2MTBDD |
|
|
|
// read remaining lines |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
while (s != null) { |
|
|
|
// skip blank lines |
|
|
|
s = s.trim(); |
|
|
|
if (s.length() > 0) { |
|
|
|
// split into two parts |
|
|
|
ss = s.split(":"); |
|
|
|
// determine which state this line describes |
|
|
|
@ -321,6 +327,8 @@ public class Explicit2MTBDD |
|
|
|
else throw new PrismException("(invalid Boolean value \""+ss[j]+"\") "); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// read next line |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
} |
|
|
|
// close file |
|
|
|
@ -486,10 +494,12 @@ public class Explicit2MTBDD |
|
|
|
maxNumChoices = 0; |
|
|
|
while (s != null) { |
|
|
|
s = s.trim(); |
|
|
|
if (s.length() > 0) { |
|
|
|
ss = s.split(" "); |
|
|
|
if (ss.length < 4 || ss.length > 5) throw new PrismException(""); |
|
|
|
j = Integer.parseInt(ss[1]); |
|
|
|
if (j+1 > maxNumChoices) maxNumChoices = j+1; |
|
|
|
} |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
} |
|
|
|
// close file |
|
|
|
@ -698,9 +708,11 @@ public class Explicit2MTBDD |
|
|
|
// read remaining lines |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
while (s != null) { |
|
|
|
// skip blank lines |
|
|
|
s = s.trim(); |
|
|
|
if (s.length() > 0) { |
|
|
|
foundReward = false; |
|
|
|
// parse line, split into parts |
|
|
|
s = s.trim(); |
|
|
|
ss = s.split(" "); |
|
|
|
// case for dtmcs/ctmcs... |
|
|
|
if (modelType != ModelType.MDP) { |
|
|
|
@ -758,6 +770,7 @@ public class Explicit2MTBDD |
|
|
|
transRewards = JDD.Apply(JDD.PLUS, transRewards, JDD.Apply(JDD.TIMES, JDD.Constant(x), tmp)); |
|
|
|
} |
|
|
|
JDD.Deref(tmp); |
|
|
|
} |
|
|
|
// read next line |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
} |
|
|
|
@ -804,8 +817,10 @@ public class Explicit2MTBDD |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
numStates = 0; |
|
|
|
while (s != null) { |
|
|
|
// split string |
|
|
|
// skip blank lines |
|
|
|
s = s.trim(); |
|
|
|
if (s.length() > 0) { |
|
|
|
// split string |
|
|
|
ss = s.split(":"); |
|
|
|
s1 = ss[0].trim(); |
|
|
|
s2 = ss[1].trim(); |
|
|
|
@ -833,6 +848,7 @@ public class Explicit2MTBDD |
|
|
|
JDD.Deref(tmp); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// read next line |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
} |
|
|
|
@ -874,7 +890,9 @@ public class Explicit2MTBDD |
|
|
|
// read remaining lines |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
while (s != null) { |
|
|
|
// skip blank lines |
|
|
|
s = s.trim(); |
|
|
|
if (s.length() > 0) { |
|
|
|
// split into two/three parts |
|
|
|
ss = s.split(":"); |
|
|
|
// determine which state this line describes |
|
|
|
@ -899,6 +917,7 @@ public class Explicit2MTBDD |
|
|
|
// add it into mtbdd for state rewards |
|
|
|
stateRewards = JDD.Apply(JDD.PLUS, stateRewards, JDD.Apply(JDD.TIMES, JDD.Constant(d), tmp)); |
|
|
|
} |
|
|
|
} |
|
|
|
// read next line |
|
|
|
s = in.readLine(); lineNum++; |
|
|
|
} |
|
|
|
|