001 package net.sf.cpsolver.ifs.solution;
002
003 /**
004 * IFS solution listener.
005 *
006 * @see Solution
007 *
008 * @version
009 * IFS 1.1 (Iterative Forward Search)<br>
010 * Copyright (C) 2006 Tomáš Müller<br>
011 * <a href="mailto:muller@unitime.org">muller@unitime.org</a><br>
012 * Lazenska 391, 76314 Zlin, Czech Republic<br>
013 * <br>
014 * This library is free software; you can redistribute it and/or
015 * modify it under the terms of the GNU Lesser General Public
016 * License as published by the Free Software Foundation; either
017 * version 2.1 of the License, or (at your option) any later version.
018 * <br><br>
019 * This library is distributed in the hope that it will be useful,
020 * but WITHOUT ANY WARRANTY; without even the implied warranty of
021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
022 * Lesser General Public License for more details.
023 * <br><br>
024 * You should have received a copy of the GNU Lesser General Public
025 * License along with this library; if not, write to the Free Software
026 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
027 */
028 public interface SolutionListener {
029 /** Called by the solution when it is updated, see {@link Solution#update(double)}.
030 * @param solution source solution
031 */
032 public void solutionUpdated(Solution solution);
033
034 /** Called by the solution when it is asked to produce info table, see {@link Solution#getInfo()}.
035 * A listener can also add some its info into this table.
036 * @param solution source solution
037 * @param info produced info table
038 */
039 public void getInfo(Solution solution, java.util.Dictionary info);
040 /** Called by the solution when it is asked to produce info table, see {@link Solution#getInfo()}.
041 * A listener can also add some its info into this table.
042 * @param solution source solution
043 * @param info produced info table
044 * @param variables only variables from this set are included
045 */
046 public void getInfo(Solution solution, java.util.Dictionary info, java.util.Vector variables);
047
048 /** Called by the solution when method {@link Solution#clearBest()} is called.
049 * @param solution source solution
050 */
051 public void bestCleared(Solution solution);
052
053 /** Called by the solution when method {@link Solution#saveBest()} is called.
054 * @param solution source solution
055 */
056 public void bestSaved(Solution solution);
057
058 /** Called by the solution when method {@link Solution#restoreBest()} is called.
059 * @param solution source solution
060 */
061 public void bestRestored(Solution solution);
062 }