/// <summary> /// Executes this instance. /// </summary> /// <param name="decisionSession">The decision session.</param> /// <exception cref="System.NotImplementedException"></exception> public void Execute(Model.DecisionModels.Decision decisionSession) { foreach (DecisionSubject decisionSubject in decisionSession.DecisionArray) { decisionSubject.FinalRate = System.Math.Round(decisionSubject.FinalRate * 100); } }
/// <summary> /// Counts the decision. /// </summary> /// <param name="decisionSession">The decision session.</param> /// <returns></returns> /// <exception cref="ArgumentNullException"><paramref /> or <paramref /> is null.</exception> private Model.DecisionModels.Decision CountDecision(Model.DecisionModels.Decision decisionSession) { foreach (DecisionSubject decisionSubject in decisionSession.DecisionArray) { decisionSubject.FinalRate = decisionSubject.CriteriaArray .Sum(criterion => criterion.CriterionPriority * criterion.ValuePriority); } return(decisionSession); }
/// <summary> /// Counts the decision. /// </summary> /// <param name="decision">The decision.</param> public DecisionViewModel CountDecision(DecisionViewModel decision) { Model.DecisionModels.Decision workflowDecision = Mapper.Map <Model.DecisionModels.Decision>(decision); foreach (IDecisionExecutionComponent decisionExecutionComponent in this.DecisionExecutionComponents) { decisionExecutionComponent.Execute(workflowDecision); } return(Mapper.Map <DecisionViewModel>(workflowDecision)); }
/// <summary> /// Counts the local priorities. /// </summary> /// <param name="decisionSession">The decision session.</param> private void CountLocalPriorities(Model.DecisionModels.Decision decisionSession) { for (int i = 0; i < decisionSession.DecisionArray.First().CriteriaArray.Count(); i++) { List <Criterion> list = decisionSession.DecisionArray.Select(decisionSubject => decisionSubject.CriteriaArray[i]).ToList(); double[] c = this._decisionMath.CountPriorities(list.Select(x => (double)x.ValueRate).ToArray()); for (int j = 0; j < c.Length; j++) { list[j].ValuePriority = c[j]; } } }
/// <summary> /// Counts the global decision. /// </summary> /// <param name="decisionSession">The decision session.</param> /// <returns></returns> /// <exception cref="ArgumentNullException"><paramref /> or <paramref /> is null.</exception> /// <exception cref="OverflowException">The number of elements in <paramref /> is larger than <see cref="F:System.Int32.MaxValue" />.</exception> /// <exception cref="ArgumentOutOfRangeException"><paramref /> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1" />.</exception> /// <exception cref="NotSupportedException">The property is set and the <see cref="T:System.Collections.Generic.IList`1" /> is read-only.</exception> public Model.DecisionModels.Decision CountGlobalDecision(Model.DecisionModels.Decision decisionSession) { foreach (DecisionSubject decisionSubject in decisionSession.DecisionArray) { double[] criteriaRateArray = decisionSubject.CriteriaArray.Select(x => (double)x.Rate).ToArray(); double[] countedPrioritise = this._decisionMath.CountPriorities(criteriaRateArray); int count = decisionSubject.CriteriaArray.Count(); for (int i = 0; i < count; i++) { decisionSubject.CriteriaArray[i].CriterionPriority = countedPrioritise[i]; } } this.CountLocalPriorities(decisionSession); return(this.CountDecision(decisionSession)); }
/// <summary> /// Executes this instance. /// </summary> /// <param name="decisionSession">The decision session.</param> /// <returns></returns> /// <exception cref="OverflowException">The number of elements in <paramref /> is larger than <see cref="F:System.Int32.MaxValue" />.</exception> public void Execute(Model.DecisionModels.Decision decisionSession) { this.MathManager.CountGlobalDecision(decisionSession); }