public RandomVariable calculate_next_backward_message( RandomVariable forwardBelief, RandomVariable present_backward_message, String perception) { RandomVariable result = present_backward_message.duplicate(); // System.out.println("fb :-calculating new backward message"); // System.out.println("fb :-diagonal matrix from sens model = "); Matrix oMatrix = sensorModel.asMatrix(perception); // System.out.println(oMatrix); Matrix transitionMatrix = transitionModel.asMatrix(); // action // should // be // passed // in // here? // System.out.println("fb :-present backward message = " // +present_backward_message); Matrix backwardMatrix = transitionMatrix.times(oMatrix.times(present_backward_message.asMatrix())); Matrix resultMatrix = backwardMatrix.arrayTimes(forwardBelief.asMatrix()); result.updateFrom(resultMatrix); result.normalize(); // System.out.println("fb :-normalized new backward message = " // +result); return result; }