net.sf.cpsolver.ifs.heuristics
Class GeneralVariableSelection<V extends Variable<V,T>,T extends Value<V,T>>
java.lang.Object
net.sf.cpsolver.ifs.heuristics.GeneralVariableSelection<V,T>
- All Implemented Interfaces:
- VariableSelection<V,T>
public class GeneralVariableSelection<V extends Variable<V,T>,T extends Value<V,T>>
- extends Object
- implements VariableSelection<V,T>
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.2 (Iterative Forward Search)
Copyright (C) 2006 - 2010 Tomas Muller
muller@unitime.org
http://muller.unitime.org
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 3 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 see .
- 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<V,T> solver)
- Initialization
- Specified by:
init
in interface VariableSelection<V extends Variable<V,T>,T extends Value<V,T>>
selectVariable
public V selectVariable(Solution<V,T> solution)
- Variable selection
- Specified by:
selectVariable
in interface VariableSelection<V extends Variable<V,T>,T extends Value<V,T>>
- Parameters:
solution
- current solution
Copyright © 2014 UniTime LLC. All Rights Reserved.