    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    }