Skip to content
Snippets Groups Projects
Commit 09c10f14 authored by hoijui's avatar hoijui
Browse files

cleanup: removes println's & misc

parent f5a5bced
No related branches found
No related tags found
No related merge requests found
......@@ -51,66 +51,11 @@ public class SimpleMarkovChain<S> extends AbstractMarkovChain<S>
this.states = Collections.unmodifiableSet(states);
this.rowMapping = new ArrayList<List<S>>();
// final int rows = transitionProbabilities.size();
// final int columns = this.states.size();
final int columns = (this.states.size() > transitionProbabilities.size() ? this.states.size() : transitionProbabilities.size());
final int rows = columns;
final double[][] matrixValues = new double[rows][columns];
//this.columnMapping = new ArrayList<S>(this.states); // <-- did not get the states in the correct order
/*
//Generate the column mapping from the first element of each transition probability's entry key (which is a list of states)
//iterates through column mapping, matching rowheading leading elements
this.columnMapping = new ArrayList<S>();
for(final Entry<List<S>, Map<S, Double>> transitionProbability : transitionProbabilities.entrySet())
{
final List<S> rowHeader = Collections.unmodifiableList(new ArrayList<S>(transitionProbability.getKey()));
S nextColumn;
if (rowHeader.isEmpty())
{
continue;
//nextColumn = null;
}
else
{
nextColumn = rowHeader.get(0);
}
if (!columnMapping.contains(nextColumn))
{
columnMapping.add(nextColumn);
}
}
//iterate through all the new rows
int row = 0;
for(final Entry<List<S>, Map<S, Double>> transitionProbability : transitionProbabilities.entrySet())
{
final List<S> rowHeader = Collections.unmodifiableList(new ArrayList<S>(transitionProbability.getKey()));
final Map<S, Double> rowTransition = Collections.unmodifiableMap(new LinkedHashMap<S, Double>(transitionProbability.getValue()));
assert !rowMapping.contains(rowHeader);
this.rowMapping.add(rowHeader);
double rowSum = 0.0;
for(final Entry<S, Double> stateTransition : rowTransition.entrySet())
{
final int column = this.columnMapping.indexOf(stateTransition.getKey());
matrixValues[row][column] = stateTransition.getValue();
rowSum += matrixValues[row][column];
}
if( Math.abs(rowSum - 1.0) > MAXIMUM_ROW_ERROR )
throw new IllegalArgumentException("One of the rows does not sum to 1");
row++;
}
*/
this.columnMapping = new ArrayList<S>(this.states);
......@@ -291,21 +236,12 @@ public class SimpleMarkovChain<S> extends AbstractMarkovChain<S>
}
final RealMatrix simultaneousMatrix = new SimpleRealMatrix(simultaneousValues);
System.out.println();
System.out.println("transitionProbabilityMatrix matrix:\n" + transitionProbabilityMatrix.toString());
//System.out.println("steadyState matrix:\n" + steadyStateMatrix.toString());
System.out.println("simultaneous matrix:\n" + simultaneousMatrix.toString());
final double[][] solutionValues = new double[simultaneousValues.length][1];
solutionValues[simultaneousValues.length - 1][0] = 1.0;
final RealMatrix solutionMatrix = new SimpleRealMatrix(solutionValues);
System.out.println("solution matrix:\n" + solutionMatrix.toString());
final RealMatrix simultaneousSolved = simultaneousMatrix.solve(solutionMatrix);
System.out.println("simultaneous solved:\n" + simultaneousSolved.toString());
final Map<S, Double> stateProbabilities = new LinkedHashMap<S, Double>();
for(int stateIndex = 0; stateIndex < this.columnMapping.size(); stateIndex++)
{
......@@ -314,9 +250,6 @@ System.out.println("simultaneous solved:\n" + simultaneousSolved.toString());
stateProbabilities.put(currentState, currentProbability);
}
//System.out.println("xstate probabilities:\n" + stateProbabilities);
//System.out.println("---");
return Collections.unmodifiableMap(stateProbabilities);
}
}
......@@ -122,28 +122,6 @@ public class SimpleMarkovChainEvidence<S> implements MarkovChainEvidence<S>
for(Map.Entry<List<S>, StateCounter<S>> countEntry : this.evidence.entrySet())
transitionProbabilities.put(countEntry.getKey(), countEntry.getValue().probabilities());
System.out.println("all influences:");
for(List<S> influences : transitionProbabilities.keySet())
{
System.out.print(influences.size() + " influences: ");
for( S influence : influences )
{
if( influence != null )
System.out.print(influence + " ");
else
System.out.print("null ");
}
System.out.print(" -> ");
// StateCounter<S> counter = this.evidence.get(influences);
Map<S,Double> probabilities = transitionProbabilities.get(influences);
for( Map.Entry<S,Double> probabilityEntry : probabilities.entrySet())
{
System.out.print(probabilityEntry.getKey() + ":" + probabilityEntry.getValue() + " ");
}
System.out.println();
}
return new SimpleMarkovChain<S>(transitionProbabilities, this.order, this.observedStates);
}
......
......@@ -85,7 +85,6 @@ public class TestSimpleMarkovChain
@Test
public void testExplicitChainSecondOrder()
{
System.out.println("===ESO begining===");
final Map<List<WeatherState>, Map<WeatherState, Double>> transitionProbabilities = new HashMap<List<WeatherState>, Map<WeatherState, Double>>();
/*
......@@ -96,7 +95,6 @@ System.out.println("===ESO begining===");
transitionProbabilities.put(initialState, initialTransitions);
*/
final List<WeatherState> sunnyState = new ArrayList<WeatherState>();
sunnyState.add(WeatherState.SUNNY);
final Map<WeatherState, Double> sunnyTransitions = new TreeMap<WeatherState, Double>();
......@@ -155,15 +153,13 @@ System.out.println("===ESO begining===");
LOGGER.info("transition rows: " + simpleChain.getTransitionProbabilityRows());
LOGGER.info("transition matrix: " + simpleChain.getTransitionProbabilityMatrix());
LOGGER.info("steady state: " + simpleChain.getSteadyStateProbability(WeatherState.SUNNY) + " , " + simpleChain.getSteadyStateProbability(WeatherState.RAINY));
System.out.println("ESO testing sunny steady:");
Assert.assertEquals("Sunny steady state incorrect", 0.83333333333, Math.abs(simpleChain.getSteadyStateProbability(WeatherState.SUNNY)), 0.001);
System.out.println("ESO sunny test done");
Assert.assertEquals("Rainy steady state incorrect", 0.16666666666, Math.abs(simpleChain.getSteadyStateProbability(WeatherState.RAINY)), 0.001);
Assert.assertEquals("Sunny 1 step incorrect", 0.9, Math.abs(simpleChain.getProbability(WeatherState.SUNNY, 1)), 0.001);
Assert.assertEquals("Rainy 1 step incorrect", 0.1, Math.abs(simpleChain.getProbability(WeatherState.RAINY, 1)), 0.001);
Assert.assertEquals("Sunny 2 step incorrect", 0.86, Math.abs(simpleChain.getProbability(WeatherState.SUNNY, 2)), 0.001);
Assert.assertEquals("Rainy 2 step incorrect", 0.14, Math.abs(simpleChain.getProbability(WeatherState.RAINY, 2)), 0.001);
System.out.println("===ESO ending===");
}
@Test
......@@ -275,27 +271,4 @@ System.out.println("===ESO ending===");
Assert.assertEquals("Sunny 2 step incorrect", 0.86, Math.abs(simpleChain.getProbability(WeatherState.SUNNY, 2)), 0.025);
Assert.assertEquals("Rainy 2 step incorrect", 0.14, Math.abs(simpleChain.getProbability(WeatherState.RAINY, 2)), 0.025);
}
@Test
public void testFailProbability()
{
final int RUNS = 10;
int failures = 0;
for(int run = 0; run < RUNS; run++)
{
try
{
testExplicitChainFirstOrder();
testExplicitChainSecondOrder();
testSampledChainFirstOrder();
testSampledChainSecondOrder();
}
catch (java.lang.AssertionError err)
{
err.printStackTrace();
failures++;
}
}
Assert.assertTrue("testSampledChainSecondOrder - failed runs: " + failures + "/" + RUNS + " -> " + ((double)failures / RUNS), failures == 0);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment