Пример #1
0
        internal BodyState AddMultiRequirement(ConceptRequirement requirement)
        {
            var newRequirements = new Dictionary <ConceptRequirement, IEnumerable <Concept> >(_multiParameterRequirements);

            newRequirements.Add(requirement, null);

            return(new BodyState(Score, _input, _values, _pointings, _parameterRequirements, newRequirements));
        }
Пример #2
0
        internal bool RequireMultiParameter(string request, out IEnumerable <Concept> parameter, IEnumerable <Concept> domain = null)
        {
            var realDomain  = getRealDomain(domain);
            var requirement = new ConceptRequirement(request, EvaluatedConcept, realDomain);

            parameter = _currentState.GetMultiParameter(requirement);
            if (parameter == null)
            {
                _currentState = _currentState.AddMultiRequirement(requirement);
            }

            return(parameter != null);
        }
Пример #3
0
        internal BodyState AssignParameter(ConceptRequirement requirement, Concept concept, double score)
        {
            if (_parameterRequirements.ContainsKey(requirement) && _parameterRequirements[requirement] != concept)
            {
                var newParameterRequirements = new Dictionary <ConceptRequirement, Concept>(_parameterRequirements);
                newParameterRequirements[requirement] = concept;
                return(new BodyState(Score, _input, _values, _pointings, newParameterRequirements, _multiParameterRequirements));
            }

            if (_multiParameterRequirements.ContainsKey(requirement) && !_multiParameterRequirements[requirement].Contains(concept))
            {
                var newMultiParameterRequirements = new Dictionary <ConceptRequirement, IEnumerable <Concept> >(_multiParameterRequirements);
                var parameters = new HashSet <Concept>(_multiParameterRequirements[requirement]);
                parameters.Add(concept);
                newMultiParameterRequirements[requirement] = parameters;
                return(new BodyState(Score + score, _input, _values, _pointings, _parameterRequirements, newMultiParameterRequirements));
            }
            return(this);
        }
Пример #4
0
        private BodyState assignParameter(BodyState initialState, ConceptRequirement requirement, Concept assignedConcept)
        {
            if (!requirement.Domain.Contains(assignedConcept))
            {
                return(null);
            }

            var parameterScore = _body.ParameterAssignScore(initialState, requirement, assignedConcept);

            if (parameterScore <= 0)
            {
                return(null);
            }

            var assignedState = initialState.AssignParameter(requirement, assignedConcept, parameterScore);
            var context       = new BodyContext(requirement.RequestingConcept, _body, assignedState);

            context.EvaluateActivation(requirement.RequestingConcept.Concept);
            return(context.CurrentState);
        }
Пример #5
0
 internal double ParameterAssignScore(BodyState currentState, ConceptRequirement parameter, Concept concept)
 {
     return(_model.ParameterAssignScore(currentState, parameter, concept));
 }
Пример #6
0
 internal IEnumerable <Concept> GetMultiParameter(ConceptRequirement requirement)
 {
     return(_multiParameterRequirements[requirement]);
 }
Пример #7
0
 internal Concept GetParameter(ConceptRequirement requirement)
 {
     _parameterRequirements.TryGetValue(requirement, out var result);
     return(result);
 }