001 package ifs.heuristics;
002
003 import ifs.model.*;
004 import ifs.solution.*;
005 import ifs.solver.*;
006
007 /**
008 * Value selection criterion.
009 * <br><br>
010 * After a variable is selected, we need to find a value to be assigned to the variable. This problem is usually called
011 * "value selection" in constraint programming. Typically, the most useful advice is to select the best-fit value.
012 * So, we are looking for a value which is the most preferred for the variable and which causes the least trouble as well.
013 * This means that we need to find a value with the minimal potential for future conflicts with other variables.
014 * For example, a value which violates the smallest number of soft constraints can be selected among those with
015 * the smallest number of hard conflicts.
016 * <br><br>
017 * The task of this criterion is to select a value of the given variable which will be assigned to this variable.
018 *
019 * @see Solver
020 *
021 * @author <a href="mailto:muller@ktiml.mff.cuni.cz">Tomáš Müller</a>
022 * @version 1.0
023 **/
024 public interface ValueSelection {
025 /** Initialization */
026 public void init(Solver solver);
027 /** Value selection
028 * @param solution current solution
029 * @param selectedVariable selected variable
030 */
031 public Value selectValue(Solution solution, Variable selectedVariable);
032 }