static void Main(string[] args) { IStorageService service = new PrMInMemoryStService(); IKnowledgeBase knBase = new ProductionModelReteNetwork(service); //IProductionSolver solver = new DirectProductionSolver(knBase); //breadth first //IProductionSolver solver = new DepthFirstDirectProductionSolver(knBase); //depth first; IProductionSolver solver = new SimplicityFirstDirectSolver(knBase); //simplicity first; LogicalExpressionHelper eh = new LogicalExpressionHelper(); IParser parser = new PrModelParser(eh); IExpertSystem expert = new ExpertSystemBase(knBase, solver, parser); string rules = Properties.Resources.TravelBase; Console.WriteLine("Parsing rules..."); expert.AddRules(rules); Console.WriteLine("Done!"); string query = "если 'выбор направления-Европа', 'выбор страны-Испания', 'приоритет отеля-центр города', 'приоритет города-экскурсии', 'количество звезд-4' то 'отель=?'"; //string query = "если 'желание-купить', 'денег-достаточно', 'расстояние-равно', " + // "'цены лучше-РИО' то 'пойти в РИО=?', 'пойти в Рубин=?'"; Console.WriteLine("Submitting query: {0}", query); Console.Write("Result:"); ResultingFactSet result = (ResultingFactSet)expert.GetResult(query); foreach (var item in result) { if (item.Value != null) { Console.WriteLine(item); } } Console.ReadKey(); }
public void TestReteCreation() { //это прсото тест на создание //корректность создания и работы проверяется в тесте решателя IParser parser = new PrModelParser(new LogicalExpressionHelper()); IStorageService service = new PrMInMemoryStService(); ProductionModelReteNetwork rete = new ProductionModelReteNetwork(service); foreach (var statement in parser.ParseRules(Properties.Resources.sampleBase)) { rete.AddStatement(statement); } }
public void TestDirectReteNetworkSolver() { IKnowledgeBase knBase = new ProductionModelReteNetwork(new PrMInMemoryStService()); ILogicalSolver solver = new DirectProductionSolver(knBase); LogicalExpressionHelper eh = new LogicalExpressionHelper(); IParser parser = new PrModelParser(eh); expert = new ExpertSystemBase(knBase, solver, parser); string rules = Properties.Resources.knowledgeBase; expert.AddRules(rules); string query = "если 'валютный курс доллара - падает' то 'уровень цен на бирже=?'"; ILogicalResult result = expert.GetResult(query); Assert.IsTrue(result is ResultingFactSet); Assert.IsTrue(result.ToString() == "'уровень цен на бирже - падает'"); }