net.sf.cpsolver.ifs.heuristics
Class GeneralVariableSelection
java.lang.Object
net.sf.cpsolver.ifs.heuristics.GeneralVariableSelection
- All Implemented Interfaces:
- VariableSelection
public class GeneralVariableSelection
- extends Object
- implements VariableSelection
General implementation of variable selection criterion.
In case that all variables are assigned, one of the variables is selected randomly. In case of MPP,
the random selection is made among the variables which have not assigned initial values.
When there are unassigned variables, a variable is selected randomly among all
unassigned variables (when Variable.RandomSelection is true) or the following roulette
wheel selection takes place (MPP):
- one point for a variable with no initial assignment
- 3 * ( 1 + number of conflicts with the initial assignment) for a variable with an initial assignment
If MacPropagation
is used and Variable.UnassignWhenNoGood parameter is true, while
there is a variable with an empty domain:
- with Variable.UnassignWhenNoGoodRandomWalk probabilty an arbitrary assigned variable is selected
- otherwise, one variable with empty domain is picked, one of its original values is picked and
one of the variables from the explanation of that value is then returned. If the explanation is
empty, another variable and value is tried (up to ten times).
Parameters:
Parameter | Type | Comment |
Variable.RandomSelection | Boolean | if true, an unassigned variable is picked randomly |
Variable.UnassignWhenNoGood | Boolean | if true and if MacPropagation is used: if there is a variable with empty domain, assigned variable (which is present in some explanation for a vairable with empty domain) is selected (for reassignment) |
Variable.UnassignWhenNoGoodRandomWalk | Double | if Variable.UnassignWhenNoGood is true and if MacPropagation is used: if there is a variable with empty domain, with the given probability an arbitrary assigned variable is selected |
- Version:
- IFS 1.1 (Iterative Forward Search)
Copyright (C) 2006 Tomáš Müller
muller@unitime.org
Lazenska 391, 76314 Zlin, Czech Republic
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- See Also:
VariableSelection
,
Solver
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
GeneralVariableSelection
public GeneralVariableSelection(DataProperties properties)
- Constructor
- Parameters:
properties
- input configuration
GeneralVariableSelection
public GeneralVariableSelection()
init
public void init(Solver solver)
- Initialization
- Specified by:
init
in interface VariableSelection
selectVariable
public Variable selectVariable(Solution solution)
- Variable selection
- Specified by:
selectVariable
in interface VariableSelection
- Parameters:
solution
- current solution