Package org.jacop.satwrapper
Class SatChangesListener
java.lang.Object
org.jacop.satwrapper.SatChangesListener
- All Implemented Interfaces:
SolverComponent
,AssertionListener
,BackjumpListener
,PropagateListener
public final class SatChangesListener
extends Object
implements AssertionListener, PropagateListener, BackjumpListener
this class listens to changes in literals in SAT solver, and reminds
what changes this implies for CP variables
- Version:
- 4.10
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Set
<BooleanVar> private Core
private BitSet
private Integer[]
private Integer[]
private SatWrapper
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
clears all sets, so that elements occurring in them later result only from later eventsvoid
ensureAccess
(IntVar cpVar) gets sure we won't have a NullPointerExceptionvoid
initialize
(Core core) initializes the component with the given solver.void
initialize
(SatWrapper wrapper) private void
onAssertion
(int literal) this should be called every time a new boolean variable representing a CP proposition is asserted, but preferably only once per variable, so that it can later update the CP variables domainsvoid
onAssertion
(int literal, int level) Called when a variable is setvoid
onBackjump
(int oldLevel, int newLevel) clear on backjumpvoid
onPropagate
(int literal, int clauseId) called when a propagation occursvoid
onRestart
(int oldLevel) called when the solver restarts.toString()
void
updateCpVariables
(int storeLevel) Using all data accumulated since last clear(), update the domain of the given CP variable
-
Field Details
-
wrapper
-
core
-
excludedValues
-
upperBounds
-
lowerBounds
-
intVarsToUpdate
-
booleanVarsToUpdate
-
-
Constructor Details
-
SatChangesListener
public SatChangesListener()
-
-
Method Details
-
clear
public void clear()clears all sets, so that elements occurring in them later result only from later events -
onPropagate
public void onPropagate(int literal, int clauseId) Description copied from interface:PropagateListener
called when a propagation occurs- Specified by:
onPropagate
in interfacePropagateListener
- Parameters:
literal
- the literal propagatedclauseId
- the unique ID of the unit clause
-
onAssertion
public void onAssertion(int literal, int level) Description copied from interface:AssertionListener
Called when a variable is set- Specified by:
onAssertion
in interfaceAssertionListener
- Parameters:
literal
- the literal that is set propagation, false otherwiselevel
- the search level
-
onBackjump
public void onBackjump(int oldLevel, int newLevel) clear on backjump- Specified by:
onBackjump
in interfaceBackjumpListener
- Parameters:
oldLevel
- the level at which the solver was before backtrackingnewLevel
- the level to which the solver backtracks
-
onRestart
public void onRestart(int oldLevel) Description copied from interface:BackjumpListener
called when the solver restarts.components that want to be warned about restarts should put themselves in Core.restartModules.
- Specified by:
onRestart
in interfaceBackjumpListener
- Parameters:
oldLevel
- the level at which the solver was before restarting
-
onAssertion
private void onAssertion(int literal) this should be called every time a new boolean variable representing a CP proposition is asserted, but preferably only once per variable, so that it can later update the CP variables domains- Parameters:
literal
- the boolean literal that has been asserted
-
updateCpVariables
public void updateCpVariables(int storeLevel) Using all data accumulated since last clear(), update the domain of the given CP variable- Parameters:
storeLevel
- the current level of the store
-
ensureAccess
gets sure we won't have a NullPointerException- Parameters:
cpVar
- the CP variable we are about to access
-
toString
-
initialize
Description copied from interface:SolverComponent
initializes the component with the given solver. May be called only once. This method must register the component to the solver for the run.- Specified by:
initialize
in interfaceSolverComponent
- Parameters:
core
- core component to initialize
-
initialize
-