getVariables() public method

public getVariables ( ) : List
return List
コード例 #1
0
 /**
  * Template method, which can be configured by overriding the three
  * primitive operations below.
  */
 private Assignment recursiveBackTrackingSearch(CSP csp,
         Assignment assignment)
 {
     Assignment result = null;
     if (assignment.isComplete(csp.getVariables()))
     {
         result = assignment;
     }
     else
     {
         Variable var = selectUnassignedVariable(assignment, csp);
         foreach (Object value in orderDomainValues(var, assignment, csp))
         {
             assignment.setAssignment(var, value);
             fireStateChanged(assignment, csp);
             if (assignment.isConsistent(csp.getConstraints(var)))
             {
                 DomainRestoreInfo info = inference(var, assignment, csp);
                 if (!info.isEmpty())
                     fireStateChanged(csp);
                 if (!info.isEmptyDomainFound())
                 {
                     result = recursiveBackTrackingSearch(csp, assignment);
                     if (result != null)
                         break;
                 }
                 info.restoreDomains(csp);
             }
             assignment.removeAssignment(var);
         }
     }
     return result;
 }
コード例 #2
0
ファイル: AC3Strategy.cs プロジェクト: PaulMineau/AIMA.Net
 /** 
  * Makes a CSP consisting of binary constraints arc-consistent.
  * @return An object which indicates success/failure and contains
  * data to undo the operation.
  */
 public DomainRestoreInfo reduceDomains(CSP csp)
 {
     DomainRestoreInfo result = new DomainRestoreInfo();
     FIFOQueue<Variable> queue = new FIFOQueue<Variable>();
     foreach (Variable var in csp.getVariables())
         queue.Add(var);
     reduceDomains(queue, csp, result);
     return result.compactify();
 }
コード例 #3
0
        private Assignment generateRandomAssignment(CSP csp) {
		Assignment assignment = new Assignment();
        foreach (Variable var in csp.getVariables())
        {
			Object randomValue = Util.selectRandomlyFromList(csp.getDomain(var)
					.asList());
			assignment.setAssignment(var, randomValue);
		}
		return assignment;
	}
コード例 #4
0
 /**
  * Primitive operation, selecting a not yet assigned variable. This default
  * implementation just selects the first in the ordered list of variables
  * provided by the CSP.
  */
 protected Variable selectUnassignedVariable(Assignment assignment, CSP csp)
 {
     foreach (Variable var in csp.getVariables())
     {
         if (!(assignment.hasAssignmentFor(var)))
         {
             return(var);
         }
     }
     return(null);
 }
コード例 #5
0
        private Assignment generateRandomAssignment(CSP csp)
        {
            Assignment assignment = new Assignment();

            foreach (Variable var in csp.getVariables())
            {
                Object randomValue = Util.selectRandomlyFromList(csp.getDomain(var)
                                                                 .asList());
                assignment.setAssignment(var, randomValue);
            }
            return(assignment);
        }
コード例 #6
0
ファイル: AC3Strategy.cs プロジェクト: claudiu04/AIMA.Net
        /**
         * Makes a CSP consisting of binary constraints arc-consistent.
         * @return An object which indicates success/failure and contains
         * data to undo the operation.
         */
        public DomainRestoreInfo reduceDomains(CSP csp)
        {
            DomainRestoreInfo    result = new DomainRestoreInfo();
            FIFOQueue <Variable> queue  = new FIFOQueue <Variable>();

            foreach (Variable var in csp.getVariables())
            {
                queue.Add(var);
            }
            reduceDomains(queue, csp, result);
            return(result.compactify());
        }
コード例 #7
0
 /**
  * Primitive operation, selecting a not yet assigned variable.
  */
 protected override Variable selectUnassignedVariable(Assignment assignment, CSP csp)
 {
     switch (selectionStrategy)
     {
         case MRV:
             return applyMRVHeuristic(csp, assignment).get(0);
         case MRV_DEG:
             List<Variable> vars = applyMRVHeuristic(csp, assignment);
             return applyDegreeHeuristic(vars, assignment, csp).get(0);
         default:
             foreach (Variable var in csp.getVariables())
             {
                 if (!(assignment.hasAssignmentFor(var)))
                     return var;
             }
     }
     return null;
 }
コード例 #8
0
        /**
         * Primitive operation, selecting a not yet assigned variable.
         */
        protected override Variable selectUnassignedVariable(Assignment assignment, CSP csp)
        {
            switch (selectionStrategy)
            {
            case MRV:
                return(applyMRVHeuristic(csp, assignment).get(0));

            case MRV_DEG:
                List <Variable> vars = applyMRVHeuristic(csp, assignment);
                return(applyDegreeHeuristic(vars, assignment, csp).get(0));

            default:
                foreach (Variable var in csp.getVariables())
                {
                    if (!(assignment.hasAssignmentFor(var)))
                    {
                        return(var);
                    }
                }
            }
            return(null);
        }
コード例 #9
0
        /**
         * Template method, which can be configured by overriding the three
         * primitive operations below.
         */
        private Assignment recursiveBackTrackingSearch(CSP csp,
                                                       Assignment assignment)
        {
            Assignment result = null;

            if (assignment.isComplete(csp.getVariables()))
            {
                result = assignment;
            }
            else
            {
                Variable var = selectUnassignedVariable(assignment, csp);
                foreach (Object value in orderDomainValues(var, assignment, csp))
                {
                    assignment.setAssignment(var, value);
                    fireStateChanged(assignment, csp);
                    if (assignment.isConsistent(csp.getConstraints(var)))
                    {
                        DomainRestoreInfo info = inference(var, assignment, csp);
                        if (!info.isEmpty())
                        {
                            fireStateChanged(csp);
                        }
                        if (!info.isEmptyDomainFound())
                        {
                            result = recursiveBackTrackingSearch(csp, assignment);
                            if (result != null)
                            {
                                break;
                            }
                        }
                        info.restoreDomains(csp);
                    }
                    assignment.removeAssignment(var);
                }
            }
            return(result);
        }
コード例 #10
0
        // //////////////////////////////////////////////////////////////
        // heuristics for selecting the next unassigned variable and domain ordering

        /** : the minimum-remaining-values heuristic. */
        private List <Variable> applyMRVHeuristic(CSP csp, Assignment assignment)
        {
            List <Variable> result = new List <Variable>();
            int             mrv    = int.MAX_VALUE;

            foreach (Variable var in csp.getVariables())
            {
                if (!assignment.hasAssignmentFor(var))
                {
                    int num = csp.getDomain(var).Count;
                    if (num <= mrv)
                    {
                        if (num < mrv)
                        {
                            result.clear();
                            mrv = num;
                        }
                        result.Add(var);
                    }
                }
            }
            return(result);
        }
コード例 #11
0
ファイル: Assignment.cs プロジェクト: claudiu04/AIMA.Net
 /**
  * Returns true if this assignment is consistent as well as complete with
  * respect to the given CSP.
  */
 public bool isSolution(CSP csp)
 {
     return(isConsistent(csp.getConstraints()) &&
            isComplete(csp.getVariables()));
 }
コード例 #12
0
 /**
  * Primitive operation, selecting a not yet assigned variable. This default
  * implementation just selects the first in the ordered list of variables
  * provided by the CSP.
  */
 protected Variable selectUnassignedVariable(Assignment assignment, CSP csp)
 {
     foreach (Variable var in csp.getVariables())
     {
         if (!(assignment.hasAssignmentFor(var)))
             return var;
     }
     return null;
 }
コード例 #13
0
ファイル: Assignment.cs プロジェクト: PaulMineau/AIMA.Net
 /**
  * Returns true if this assignment is consistent as well as complete with
  * respect to the given CSP.
  */
 public bool isSolution(CSP csp)
 {
     return isConsistent(csp.getConstraints())
             && isComplete(csp.getVariables());
 }
コード例 #14
0
        // //////////////////////////////////////////////////////////////
        // heuristics for selecting the next unassigned variable and domain ordering

        /** : the minimum-remaining-values heuristic. */
        private List<Variable> applyMRVHeuristic(CSP csp, Assignment assignment)
        {
            List<Variable> result = new List<Variable>();
            int mrv = int.MAX_VALUE;
            foreach (Variable var in csp.getVariables())
            {
                if (!assignment.hasAssignmentFor(var))
                {
                    int num = csp.getDomain(var).Count;
                    if (num <= mrv)
                    {
                        if (num < mrv)
                        {
                            result.clear();
                            mrv = num;
                        }
                        result.Add(var);
                    }
                }
            }
            return result;
        }