package experimental.igel; import java.util.ArrayList; import java.util.List; public class BinaryFactor extends Factor { protected double[][] potential; public BinaryFactor() { this.setMessages(new ArrayList<Message>()); this.setNeighbors(new ArrayList<SegmentVariable>()); this.setMessageIds(new ArrayList<Integer>()); this.setPotential(new double[2][2]); } public void passMessages() { Message messageIn1 = this.messages.get(messageIds.get(0)); Message messageIn2 = this.messages.get(messageIds.get(1)); // message 1 this.messages.get(0).measure[0] = this.potential[0][0] * messageIn2.measure[0] + this.potential[0][1] * messageIn2.measure[1]; this.messages.get(0).measure[1] = this.potential[1][0] * messageIn2.measure[0] + this.potential[1][1] * messageIn2.measure[1]; // message 2 this.messages.get(1).measure[0] = this.potential[0][0] * messageIn1.measure[0] + this.potential[1][0] * messageIn1.measure[1]; this.messages.get(1).measure[1] = this.potential[0][1] * messageIn1.measure[0] + this.potential[1][1] * messageIn1.measure[1]; } public double[][] getPotential() { return potential; } public void setPotential(double[][] potential) { this.potential = potential; } }