## org.opencyc.inferencesupport
Class Solution

    java.lang.Object
      |
      +--org.opencyc.inferencesupport.Solution

public class Solution
extends java.lang.Object

`Solution` object to model the attributes and behavior of solutions to the `ConstraintProblem`.

Author:
  Stephen L. Reed

  Copyright 2001 Cycorp, Inc., license is open source GNU LGPL.

  the license

  www.opencyc.org

  OpenCyc at SourceForge

  THIS SOFTWARE AND KNOWLEDGE BASE CONTENT ARE PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENCYC ORGANIZATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND KNOWLEDGE BASE CONTENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

See Also:
  `UnitTest#testConstraintProblem`

Field Summary
`static int` `DEFAULT_VERBOSITY` The default verbosity of the solution output.
`protected int` `nbrSolutionsFound` Number of solutions found by the search.
`protected java.lang.Integer` `nbrSolutionsRequested` The number of solutions requested in the parent object.
`protected java.util.ArrayList` `solutions` List of solutions where each solution is a list of constraint variable - domain value bindings which satisfy all the constraint rules.
`protected int` `verbosity` Sets verbosity of the constraint solver output.

Constructor Summary
`Solution(java.lang.Integer nbrSolutionsRequested, int verbosity)` Constructs a new `Solution` object given the parent `ConstraintProblem` object.

Method Summary
`void` `addBindingSet(BindingSet bindingSet)` Adds the solutions contained in the given binding set.
`void` `addBindingToCurrentSolution(Binding binding)` Adds the variable / value binding to the current solution.
`void` `addSolution(java.util.ArrayList solution)` Adds a new solution to the solution set.
`void` `displaySolution(java.util.ArrayList solution)` Displays the bindings in a given solution to the constraint problem.
`void` `displaySolutions()` Displays the bindings in all solutions to the constraint problem.
`void` `finalizeAllSolutions()` Removes the current empty solution in the special case where all solutions were requested and where all solutions were found.
`java.util.ArrayList` `getCurrentSolution()` Returns the current solution.
`int` `getNbrSolutionsFound()` Returns the number of solutions found.
`java.util.ArrayList` `getSolutions()` Returns all solutions.
`void` `recordNewSolution(Binding binding)` Records the current solution state by copying the current solution into a new partial solution without including the given binding, which is already part of a prior solution.
`void` `removeBindingFromCurrentSolution(Binding binding)` Removes the variable / value binding from the current solution.
`void` `setNbrSolutionsFound(int nbrSolutionsFound)` Sets the number of solutions found.
`void` `setSolutions(java.util.ArrayList solutions)` Sets solutions to the given list of solutions.
`void` `setVerbosity(int verbosity)` Sets verbosity of the constraint solver output.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_VERBOSITY

    public static final int DEFAULT_VERBOSITY

  The default verbosity of the solution output. 0 --> quiet ... 9 -> maximum diagnostic input.

### verbosity

    protected int verbosity

  Sets verbosity of the constraint solver output. 0 --> quiet ... 9 -> maximum diagnostic input.

### nbrSolutionsRequested

    protected java.lang.Integer nbrSolutionsRequested

  The number of solutions requested in the parent object.

### nbrSolutionsFound

    protected int nbrSolutionsFound

  Number of solutions found by the search. Will not be more than the number requested if `nbrSolutionsRequested` is not `null`.

### solutions

    protected java.util.ArrayList solutions

  List of solutions where each solution is a list of constraint variable - domain value bindings which satisfy all the constraint rules. Newest solution is at the end of the list.

Constructor Detail

### Solution

    public Solution(java.lang.Integer nbrSolutionsRequested,
                    int verbosity)

  Constructs a new `Solution` object given the parent `ConstraintProblem` object. Initializes the solutions to a single empty solution.
  Parameters:
    `parent` - the parent `ConstraintProblem` or `QueryProcessor` object

Method Detail

### addBindingSet

    public void addBindingSet(BindingSet bindingSet)

  Adds the solutions contained in the given binding set.
  Parameters:
    `bindingSet` - the binding set whose variable value bindings are to be added to the solution

### addBindingToCurrentSolution

    public void addBindingToCurrentSolution(Binding binding)

  Adds the variable / value binding to the current solution.
  Parameters:
    `binding` - the variable / value binding to be added

### removeBindingFromCurrentSolution

    public void removeBindingFromCurrentSolution(Binding binding)

  Removes the variable / value binding from the current solution.
  Parameters:
    `binding` - the variable / value binding to be removed

### addSolution

    public void addSolution(java.util.ArrayList solution)

  Adds a new solution to the solution set. The added solution becomes the current solution.
  Parameters:
    `the` - new solution `ArrayList` of `Binding` objects to be added to the solution set

### getCurrentSolution

    public java.util.ArrayList getCurrentSolution()

  Returns the current solution.
  Returns:
    the current solution

### setNbrSolutionsFound

    public void setNbrSolutionsFound(int nbrSolutionsFound)

  Sets the number of solutions found.
  Parameters:
    `nbrSolutionsFound` - the new value for the number of solutions found

### getNbrSolutionsFound

    public int getNbrSolutionsFound()

  Returns the number of solutions found.
  Returns:
    the number of solutions found

### getSolutions

    public java.util.ArrayList getSolutions()

  Returns all solutions.
  Returns:
    the `ArrayList` of solutions, each solution is an `ArrayList` of `Binding` objects

### setSolutions

    public void setSolutions(java.util.ArrayList solutions)

  Sets solutions to the given list of solutions.
  Parameters:
    `solutions` - the list of solutions

### recordNewSolution

    public void recordNewSolution(Binding binding)

  Records the current solution state by copying the current solution into a new partial solution without including the given binding, which is already part of a prior solution.
  Parameters:
    `binding` - the variable / value binding, which is not to be included in the new partial solution

### displaySolution

    public void displaySolution(java.util.ArrayList solution)

  Displays the bindings in a given solution to the constraint problem.

### displaySolutions

    public void displaySolutions()

  Displays the bindings in all solutions to the constraint problem.

### finalizeAllSolutions

    public void finalizeAllSolutions()

  Removes the current empty solution in the special case where all solutions were requested and where all solutions were found.

### setVerbosity

    public void setVerbosity(int verbosity)

  Sets verbosity of the constraint solver output. 0 --> quiet ... 9 -> maximum diagnostic input.
  Parameters:
    `verbosity` - 0 --> quiet ... 9 -> maximum diagnostic input