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 }
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 }
public int getNumberOfConflictsFor(string conflictedVariable, Object value, Constraint constraint) { Assignment duplicate = copy(); duplicate.setAssignment(conflictedVariable, value); return(duplicate.getConflictedVariables(constraint).Count); }
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); }
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); }
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; }