package aima.test.core.experiment.logic.propositional.algorithms; import org.junit.Test; import aima.core.logic.propositional.inference.WalkSAT; import aima.core.logic.propositional.kb.KnowledgeBase; import aima.core.logic.propositional.kb.data.Model; import aima.core.logic.propositional.parsing.PLParser; import aima.core.logic.propositional.visitors.ConvertToConjunctionOfClauses; /** * @author Ravi Mohan * */ public class WalkSATExperiment { private PLParser parser = new PLParser(); // NOT REALLY A JUNIT TESTCASE BUT written as one to allow easy execution @Test public void testWalkSat() { WalkSAT walkSAT = new WalkSAT(); Model m = walkSAT.walkSAT(ConvertToConjunctionOfClauses.convert(parser.parse("A & B")) .getClauses(), 0.5, 1000); if (m == null) { System.out.println("failure"); } else { m.print(); } } @Test public void testWalkSat2() { WalkSAT walkSAT = new WalkSAT(); Model m = walkSAT.walkSAT(ConvertToConjunctionOfClauses.convert(parser.parse("A & ~B")) .getClauses(), 0.5, 1000); if (m == null) { System.out.println("failure"); } else { m.print(); } } @Test public void testAIMAExample() { KnowledgeBase kb = new KnowledgeBase(); kb.tell("P => Q"); kb.tell("L & M => P"); kb.tell("B & L => M"); kb.tell("A & P => L"); kb.tell("A & B => L"); kb.tell("A"); kb.tell("B"); WalkSAT walkSAT = new WalkSAT(); Model m = walkSAT.walkSAT(ConvertToConjunctionOfClauses.convert(kb.asSentence()) .getClauses(), 0.5, 1000); if (m == null) { System.out.println("failure"); } else { m.print(); } } }