private NormalDistributionDecisionTree(NormalDistributionDecisionTree tree1, NormalDistributionDecisionTree tree2) { decisions = new List <PercentageDecision>(); foreach (PercentageDecision decision in tree1.decisions) { decisions.Add(decision); } foreach (PercentageDecision decision in tree2.decisions) { PercentageDecision foundDecision = decisions.FirstOrDefault(x => (int)x.DecisionObject == (int)decision.DecisionObject); if (foundDecision != null) { foundDecision.Percentage += decision.Percentage; } else { decisions.Add(decision); } } decisions.ForEach(x => x.Percentage /= 2); //Creates the decision tree decisionTree = new PercentageDecisionTree(); decisionTree.AddDecisions(decisions); }
private void CreateBalancedNormalDecisionTree(int[] decisionArray) { double currentChance = 50.0; for (int i = 0; i < decisionArray.Length / 2; i++) { int index1 = 0 + (decisionArray.Length / 2) - i - 1; int index2 = decisionArray.Length - (decisionArray.Length / 2) + i; currentChance /= 2; decisions.Add(new PercentageDecision(decisionArray[index1], currentChance)); decisions.Add(new PercentageDecision(decisionArray[index2], currentChance)); } //Check whats left and adds to main decisions double leftoverValue = 100.0 - decisions.Sum(x => x.Percentage); decisions.Where(x => x.Percentage == 25.0).ToList().ForEach(x => x.Percentage += leftoverValue / 2); //Creates the decision tree decisionTree = new PercentageDecisionTree(); decisionTree.AddDecisions(decisions); }