Beispiel #1
0
        public void NextValue(ValuePickingHeuristic heuristic, FilteringHeuristic filtering, Dictionary <Variable, DomainSet> emptyVars)
        {
            switch (heuristic)
            {
            case ValuePickingHeuristic.LCV:
                LCVPicking(emptyVars);
                break;

            default:
                StepByStepPicking(filtering);
                break;
            }

            switch (filtering)
            {
            case FilteringHeuristic.ForwardChecking:
                foreach (var k in new List <Variable>(emptyVars.Keys))
                {
                    emptyVars[k]._possibleValues = emptyVars[k]._possibleValues.Where(x => (!x.Equals(_value))).ToList();
                }
                break;

            default:
                break;
            }
        }
Beispiel #2
0
        public bool TriedWholeDomain(ValuePickingHeuristic heuristic, FilteringHeuristic filtering) //TO DO: reduce code
        {
            if (filtering != FilteringHeuristic.NONE)
            {
                if (PossibleValues.Count == 0)
                {
                    FillPossibleValues();
                    return(true);
                }

                return(false);
            }

            switch (heuristic)
            {
            case ValuePickingHeuristic.LCV:
                if (PossibleValues.Count == 0)
                {
                    FillPossibleValues();
                    return(true);
                }

                return(false);

            default:
                var lastDayTime = Value.DayValue == Days.Last() && Value.TimeValue == Times.Last();
                return(lastDayTime && Value.AudienceValue == Audiences.Last() &&
                       Value.TeacherValue == Teachers.Last());
            }
        }
Beispiel #3
0
        public DomainSet(JsonElement element, String subject, LessonType type, ValuePickingHeuristic heuristic, FilteringHeuristic filtering) : this(element)
        {
            CutOffStaticLimitations(subject, type);

            if (heuristic != ValuePickingHeuristic.NONE || filtering != FilteringHeuristic.NONE)
            {
                FillPossibleValues();
            }
        }