示例#1
0
        private static void ReportRedundancyInRules(List <SimpleTree> firstSimpleTree, List <SimpleTree> secoundSimpleTree)
        {
            var firstRuleDescription   = ConclusionClass.GetFlatteredRuleDescription(firstSimpleTree);
            var secoundRuleDescription = ConclusionClass.GetFlatteredRuleDescription(secoundSimpleTree);

            MessageBox.Show("Mamy nadmiarowość " + firstRuleDescription + secoundRuleDescription);
        }
示例#2
0
        public void TestMethod1()
        {
            bases.RuleBase.ReadRules("REstudent.BED");

            ConclusionClass conclusionClass = new ConclusionClass(bases, _viewModel);

            conclusionClass.BackwardConclude(bases.RuleBase.RulesList[3]);
        }
示例#3
0
 public ActionsOnBase(GatheredBases bases, ViewModel model, IElementsNamesLanguageConfig config)
 {
     _viewModel        = model;
     _config           = config;
     _bases            = bases;
     conclusion        = new ConclusionClass(_bases, _viewModel, config);
     _constrainActions = new ConstrainActions(conclusion, _viewModel, _bases);
 }
示例#4
0
        private static void ReportRedundancyInConstrains
            (List <SimpleTree> firstSimpleTree, List <SimpleTree> secoundSimpleTree, Constrain value)
        {
            var firstRuleDescription   = ConclusionClass.GetFlatteredRuleDescription(firstSimpleTree);
            var secoundRuleDescription = ConclusionClass.GetFlatteredRuleDescription(secoundSimpleTree);

            MessageBox.Show("Mamy nadmiarowość z ograniczeniem \n" + firstRuleDescription + secoundRuleDescription +
                            "z ograniczeniem numer" + value.NumberOfConstrain);
        }
示例#5
0
        public static List <List <SimpleTree> > AllFlatteredRules(GatheredBases bases, Rule ruleForCheck)
        {
            List <List <SimpleTree> > allFlatteredRules = new List <List <SimpleTree> >();
            List <Rule> ruleList = ConclusionClass.FindRulesWithParticularConclusion
                                       (ruleForCheck.Conclusion, bases.RuleBase.RulesList);

            foreach (var r in ruleList)
            {
                List <List <Rule> > differencesList;
                var tree = TreeOperations.ReturnComplexTreeAndDifferences(
                    bases, r, out differencesList);
                List <List <SimpleTree> > possibleTrees = TreeOperations.ReturnPossibleTrees(tree,
                                                                                             differencesList);
                allFlatteredRules.AddRange(possibleTrees);
            }
            return(allFlatteredRules);
        }
        public static void ExpandBrunchOrMakeAskable
            (GatheredBases bases, SimpleTree parentWithoutChild, List <List <Rule> > divideList)
        {
            foreach (string condition in parentWithoutChild.rule.Conditions)
            {
                List <Rule> returnedRules = ConclusionClass.FindRulesWithParticularConclusion(condition,
                                                                                              bases.RuleBase.RulesList);

                if (returnedRules.Count == 0)
                {
                    bool isModel = CheckIfModel(condition, bases);
                    var  endRule = new Rule
                    {
                        Conclusion = condition,

                        NumberOfRule = bases.RuleBase.RulesList.Count + 1000
                    };
                    parentWithoutChild.Children.Add(new SimpleTree
                    {
                        Model   = isModel,
                        Askable = true,
                        rule    = endRule,
                        Parent  = parentWithoutChild //todo:nie wiem czy nie lepiej bêdzie jak dopyt i model bêd¹ w endRule
                    });
                }
                else
                {
                    List <SimpleTree> alternativeBranches = ReturnAlternativeBranches(returnedRules, parentWithoutChild);
                    //
                    parentWithoutChild.Children.AddRange(alternativeBranches);

                    if (returnedRules.Count > 1)
                    {
                        divideList.Add(returnedRules);
                    }
                }
            }
        }