private int CheckCondition(string condition, int i) { var conc = ConclusionClass.CheckIfStringIsFact(condition, _bases.FactBase.FactList); //TODO:trzeba sprawdzic metodę która sprawdza czy string jest faktem if (conc) { i++; } else { var value = ConclusionClass.FindConditionsOrReturnNull (condition, _bases.RuleBase.RulesList); if (value == null) { if (IsModel(condition) == false) { _viewModel.AskingForwardRuleValueMethod(condition); i++; } else { if ((bool)_modelActions.ProcessModel(condition)) //todo: może byc jakiś problem { i++; } //todo:jeszcze trzeba będzie przelecieć przez } } } return(i); }
/// <summary> /// Checks the conclusion value or count model. /// </summary> /// <param name="askingTable">The asking table.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> private bool CheckConclusionValueOrCountModel(List <SimpleTree> askingTable) { int i = 0; foreach (SimpleTree simpleTree in askingTable) { _constrainActions.ConstrainAsk(simpleTree); if (simpleTree.Model) { var checker = CheckIfStringIsFact(simpleTree.rule.Conclusion, _bases.FactBase.FactList); if (checker == false) { var value = _modelActions.ProcessModel(simpleTree.rule.Conclusion); if (value == null) { MessageBox.Show("Brak danych do ukonkretnienia modelu " + simpleTree.rule.Conclusion); _bases.FactBase.FactList.Add(new Fact() { FactName = simpleTree.rule.Conclusion, FactValue = false }); } else { _bases.FactBase.FactList.Add(new Fact() { FactName = simpleTree.rule.Conclusion, FactValue = (bool)value }); if ((bool)value) { i++; IfParentTrueWrite(simpleTree); } else { break; } //TODO: trzeba sprawdziæ czy warunek jest faktem simpleTree.ConclusionValue = (bool)value; } } } else { if (CheckIfStringIsFact(simpleTree.rule.Conclusion, _bases.FactBase.FactList)) { i++; simpleTree.ConclusionValue = true; IfParentTrueWrite(simpleTree); } else { _viewModel.AskingRuleValueMethod(simpleTree); if (_viewModel.CheckedRuleVal) { i++; IfParentTrueWrite(simpleTree); // Check if parent changed value to concrete } } } } if (i == askingTable.Count) { return(true); // hipoteza jest prawdziwa } return(false); //else trzeba sprawdzac dalej }