Exemple #1
0
        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();
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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() == "'уровень цен на бирже - падает'");
        }