コード例 #1
0
ファイル: AddEditInterval.cs プロジェクト: sarochm/ltc
 private void buttonSave_Click(object sender, EventArgs e)
 {
     if (Interval == null) Interval = new Interval();
     Interval.TimeFrom = dateTimePickerFrom.Value.TimeOfDay;
     Interval.TimeTo = dateTimePickerTo.Value.TimeOfDay;
     Interval.Days = new HashSet<DayOfWeek>();
     foreach (var checkedItem in checkedListBoxDays.CheckedIndices)
     {
         Interval.Days.Add((DayOfWeek) checkedItem);
     }
 }
コード例 #2
0
ファイル: Interval.cs プロジェクト: osnihur/fuzzycheck
 public static Interval Min(Interval A, Interval B)
 {
     double upper = Math.Min(A.Upper, B.Upper);
     double lower = A.Upper >= B.Upper ? B.Lower : A.Lower;
     return new Interval(lower, upper);
 }
コード例 #3
0
 public RuleWithFiringStrength(Type2MamdaniFuzzyRule rule, Interval firingStrength)
 {
     this.rule = rule;
     this.firingStrength = firingStrength;
 }
コード例 #4
0
        public ActionResult Aggregate(ResultsModel resultsModel)
        {
            try
            {
                // union
                double lower = 10, upper = 0;
                foreach (var result in resultsModel.AllResults)
                {
                    if (!result.IsFullWorkspace)
                    {
                        var splitInterval = (from i in result.OutputInterval.Split(new[] {";", "[", "]"},
                            StringSplitOptions.RemoveEmptyEntries)
                            select i.Trim()).ToList();
                        if (splitInterval.Count() == 2)
                        {
                            double parsedLower = double.Parse(splitInterval[0]);
                            if (parsedLower < lower)
                            {
                                lower = parsedLower;
                            }

                            double parsedUpper = double.Parse(splitInterval[1]);
                            if (parsedUpper > upper)
                            {
                                upper = parsedUpper;
                            }
                        }
                    }
                }

                // intersection with full results
                foreach (var result in resultsModel.AllResults)
                {
                    if (result.IsFullWorkspace)
                    {
                        var splitInterval = (from i in result.OutputInterval.Split(new[] { ";", "[", "]" },
                            StringSplitOptions.RemoveEmptyEntries)
                                             select i.Trim()).ToList();
                        if (splitInterval.Count() == 2)
                        {
                            double parsedLower = double.Parse(splitInterval[0]);
                            if (parsedLower < upper)
                            {
                                lower = parsedLower;
                            }

                            double parsedUpper = double.Parse(splitInterval[1]);
                            if (parsedUpper > lower)
                            {
                                upper = parsedUpper;
                            }
                        }
                    }
                }

                var interval = new Interval(lower, upper);
                var aggregatedResult = new ResultModel
                {
                    IsAggregated = true,
                    OutputInterval = interval.ToString(),
                    OutputLinguistic = string.Join( ", ", DecisionMakerType2.IntervalToLinguistic(interval))
                };

                return PartialView("_Result", aggregatedResult);
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError);
            }
        }
コード例 #5
0
 private ResultModel ResultToModel(Interval result, bool isFullWorkspace, int workspaceId, string workspaceName, string linguisticTerm)
 {
     return new ResultModel
     {
         IsAggregated = false,
         IsFullWorkspace = isFullWorkspace,
         IsSelectedForAggregation = false,
         WorkspaceID = workspaceId,
         WorkspaceName = workspaceName,
         OutputInterval = result.ToString(),
         OutputLinguistic = linguisticTerm
     };
 }
コード例 #6
0
        private Interval EvaluateConditionPair(Interval cond1, Interval cond2, OperatorType op)
        {
            if (op == OperatorType.And)
            {
                return Interval.Min(cond1, cond2);
            }

            throw new Exception("Internal error.");
        }
コード例 #7
0
        public static List<string> IntervalToLinguistic(Interval outputInterval)
        {
            var result = new List<string>();

            if (outputInterval.Lower <= 3)
            {
                result.Add(TermToUA("Low"));
            }

            if (outputInterval.Lower <= 7 && outputInterval.Upper > 3)
            {
                result.Add(TermToUA("Acceptable"));
            }

            if (outputInterval.Upper > 7)
            {
                result.Add(TermToUA("High"));
            }

            //var sortedTerms = outputVariable.Terms.OrderBy(t => t.LowerB);
            //foreach (var term in sortedTerms)
            //{
            //    if (outputInterval.Lower < term.UpperB)
            //    {
            //        result.Add(TermToUA(term.Name));
            //    }

            //    if (outputInterval.Upper < term.UpperB)
            //    {
            //        break;
            //    }
            //}

            return result;
        }