示例#1
0
文件: CSP.cs 项目: langeds/aima
        private Assignment recursiveBackTrackingSearch(Assignment anAssignment)
        {
            if (anAssignment.isComplete())
            {
                return(anAssignment);
            }
            string    variable     = anAssignment.selectFirstUnassignedVariable();
            ArrayList domainValues = defaultOrderDomainOf(variable);

            for (int i = 0; i < domainValues.Count; i++)
            {
                Object value = domainValues[i];

                if (constraints.isSatisfiedWith(anAssignment, variable, value))
                {
                    anAssignment.setAssignment(variable, value);
                    Assignment result = recursiveBackTrackingSearch(anAssignment);
                    if (result != null)
                    {
                        return(result);
                    }
                    anAssignment.remove(variable);
                }
            }
            return(null);           //failure
        }
示例#2
0
文件: CSP.cs 项目: langeds/aima
		private Assignment recursiveBackTrackingSearch(Assignment anAssignment) 
		{
			if (anAssignment.isComplete()) 
			{
				return anAssignment;
			}
			string variable = anAssignment.selectFirstUnassignedVariable();
			ArrayList domainValues = defaultOrderDomainOf(variable);
			for (int i = 0; i < domainValues.Count; i++) 
			{
				Object value = domainValues[i];

				if (constraints.isSatisfiedWith(anAssignment, variable, value)) 
				{
					anAssignment.setAssignment(variable, value);
					Assignment result = recursiveBackTrackingSearch(anAssignment);
					if (result != null) 
					{
						return result;
					}
					anAssignment.remove(variable);
				}
			}
			return null;//failure
		}
示例#3
0
        public int getNumberOfConflictsFor(string conflictedVariable, Object value,
                                           Constraint constraint)
        {
            Assignment duplicate = copy();

            duplicate.setAssignment(conflictedVariable, value);
            return(duplicate.getConflictedVariables(constraint).Count);
        }
示例#4
0
文件: CSP.cs 项目: langeds/aima
        private Assignment generateRandomAssignment()
        {
            ArrayList vars = new ArrayList();

            for (int i = 0; i < variables.Count; i++)
            {
                vars.Add(variables[i]);
            }
            Assignment assignment = new Assignment(vars);

            for (int i = 0; i < variables.Count; i++)
            {
                string variable    = variables[i].ToString();
                Object randomValue = Util.selectRandomlyFromList(domains
                                                                 .getDomainOf(variable));
                //System.out.println("in generate Assignment setting");
                assignment.setAssignment(variable, randomValue);
            }
            return(assignment);
        }
示例#5
0
文件: CSP.cs 项目: langeds/aima
        public Assignment mcSearch(int maxSteps)
        {
            Assignment randomAssignment = generateRandomAssignment();

            for (int i = 0; i < maxSteps; i++)
            {
                if (randomAssignment.satisfies(constraints))
                {
                    return(randomAssignment);
                }
                else
                {
                    string conflictedVariable = Util
                                                .selectRandomlyFromList(randomAssignment.getConflictedVariables(constraints)).ToString();
                    Object minConflictValue = randomAssignment
                                              .getMinimumConflictingValueFor(conflictedVariable,
                                                                             domains.getDomainOf(conflictedVariable),
                                                                             constraints);
                    randomAssignment.setAssignment(conflictedVariable,
                                                   minConflictValue);
                }
            }
            return(null);
        }
示例#6
0
文件: CSP.cs 项目: langeds/aima
		private Assignment generateRandomAssignment() 
		{
			ArrayList vars = new ArrayList();
			for (int i = 0; i < variables.Count; i++) 
			{
				vars.Add(variables[i]);
			}
			Assignment assignment = new Assignment(vars);
			for (int i = 0; i < variables.Count; i++) 
			{
				string variable = variables[i].ToString();
				Object randomValue = Util.selectRandomlyFromList(domains
					.getDomainOf(variable));
				//System.out.println("in generate Assignment setting");
				assignment.setAssignment(variable, randomValue);
			}
			return assignment;
		}