|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.sat4j.minisat.core.Solver<L,D>
public class Solver<L extends ILits,D extends DataStructureFactory<L>>
The backbone of the library providing the modular implementation of a MiniSAT (Chaff) like solver.
Field Summary | |
---|---|
protected AssertingClauseGenerator |
analyzer
|
protected D |
dsfactory
|
org.sat4j.minisat.core.Solver.ISimplifier |
EXPENSIVE_SIMPLIFICATION
|
static org.sat4j.minisat.core.Solver.ISimplifier |
NO_SIMPLIFICATION
|
protected int |
rootLevel
S? |
org.sat4j.minisat.core.Solver.ISimplifier |
SIMPLE_SIMPLIFICATION
|
protected IVecInt |
trail
affectation en ordre chronologique |
protected IVecInt |
trailLim
indice des s? |
protected L |
voc
|
Constructor Summary | |
---|---|
Solver(AssertingClauseGenerator acg,
LearningStrategy<L,D> learner,
D dsf,
IOrder<L> order,
RestartStrategy restarter)
creates a Solver without LearningListener. |
|
Solver(AssertingClauseGenerator acg,
LearningStrategy<L,D> learner,
D dsf,
SearchParams params,
IOrder<L> order,
RestartStrategy restarter)
|
Method Summary | |
---|---|
void |
addAllClauses(IVec<IVecInt> clauses)
Create clauses from a set of set of literals. |
IConstr |
addAtLeast(IVecInt literals,
int degree)
Create a cardinality constraint of the type "at least n of those literals must be satisfied" |
IConstr |
addAtMost(IVecInt literals,
int degree)
Create a cardinality constraint of the type "at most n of those literals must be satisfied" |
IConstr |
addClause(IVecInt literals)
Create a clause from a set of literals The literals are represented by non null integers such that opposite literals a represented by opposite values. |
protected IConstr |
addConstr(Constr constr)
|
void |
analyze(Constr confl,
Pair results)
|
protected void |
analyzeAtRootLevel(Constr conflict)
|
boolean |
assume(int p)
|
protected void |
cancelUntil(int level)
Cancel several levels of assumptions |
void |
claBumpActivity(Constr confl)
Propagate activity to a constraint |
void |
clearLearntClauses()
Remove clauses learned during the solving process. |
protected void |
decayActivities()
|
int |
decisionLevel()
|
protected IVecInt |
dimacs2internal(IVecInt in)
|
boolean |
enqueue(int p)
Satisfait un litt? |
boolean |
enqueue(int p,
Constr from)
Put the literal on the queue of assignments to be done. |
void |
expireTimeout()
Expire the timeout of the solver. |
int[] |
findModel()
Look for a model satisfying all the clauses available in the problem. |
int[] |
findModel(IVecInt assumps)
Look for a model satisfying all the clauses available in the problem. |
DataStructureFactory<L> |
getDSFactory()
|
IConstr |
getIthConstr(int i)
returns the ith constraint in the solver. |
IOrder<L> |
getOrder()
|
IVecInt |
getOutLearnt()
|
java.util.Map<java.lang.String,java.lang.Number> |
getStat()
To obtain a map of the available statistics from the solver. |
SolverStats |
getStats()
|
int |
getTimeout()
Useful to check the internal timeout of the solver. |
long |
getTimeoutMs()
Useful to check the internal timeout of the solver. |
L |
getVocabulary()
|
boolean |
isDBSimplificationAllowed()
Indicate whether the solver is allowed to simplify the formula by propagating the truth value of top level satisfied variables. |
boolean |
isSatisfiable()
Check the satisfiability of the set of constraints contained inside the solver. |
boolean |
isSatisfiable(boolean global)
Check the satisfiability of the set of constraints contained inside the solver. |
boolean |
isSatisfiable(IVecInt assumps)
Check the satisfiability of the set of constraints contained inside the solver. |
boolean |
isSatisfiable(IVecInt assumps,
boolean global)
Check the satisfiability of the set of constraints contained inside the solver. |
void |
learn(Constr c)
|
int[] |
model()
Si un mod? |
boolean |
model(int var)
Provide the truth value of a specific variable in the model. |
protected int |
nAssigns()
|
int |
nConstraints()
To know the number of constraints currently available in the solver. |
int |
newVar()
Deprecated. |
int |
newVar(int howmany)
Create howmany variables in the solver (and thus in the
vocabulary). |
int |
nVars()
To know the number of variables used in the solver. |
void |
printInfos(java.io.PrintWriter out,
java.lang.String prefix)
To print additional informations regarding the problem. |
void |
printLearntClausesInfos(java.io.PrintWriter out,
java.lang.String prefix)
|
void |
printStat(java.io.PrintStream out,
java.lang.String prefix)
Display statistics to the given output stream Please use writers instead of stream. |
void |
printStat(java.io.PrintWriter out,
java.lang.String prefix)
Display statistics to the given output writer |
Constr |
propagate()
|
protected void |
reduceDB()
|
protected void |
reduceDB(double lim)
|
boolean |
removeConstr(IConstr co)
Remove a constraint returned by one of the add method from the solver. |
void |
reset()
Clean up the internal state of the solver. |
void |
setDataStructureFactory(D dsf)
Change the internal representation of the contraints. |
void |
setDBSimplificationAllowed(boolean status)
Set whether the solver is allowed to simplify the formula by propagating the truth value of top level satisfied variables. |
void |
setExpectedNumberOfClauses(int nb)
To inform the solver of the expected number of clauses to read. |
void |
setOrder(IOrder<L> h)
|
void |
setRestartStrategy(RestartStrategy restarter)
|
void |
setSearchListener(SearchListener sl)
|
void |
setSearchParams(SearchParams sp)
|
void |
setSimplifier(org.sat4j.minisat.core.Solver.ISimplifier simp)
Setup the reason simplification strategy. |
void |
setSimplifier(java.lang.String simp)
Setup the reason simplification strategy. |
void |
setTimeout(int t)
To set the internal timeout of the solver. |
void |
setTimeoutMs(long t)
To set the internal timeout of the solver. |
void |
setTimeoutOnConflicts(int count)
To set the internal timeout of the solver. |
boolean |
simplifyDB()
|
java.lang.String |
toString()
|
java.lang.String |
toString(java.lang.String prefix)
Display a textual representation of the solver configuration. |
protected void |
undoOne()
|
void |
varBumpActivity(int p)
Update the activity of a variable v. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final IVecInt trail
protected final IVecInt trailLim
protected int rootLevel
protected L extends ILits voc
protected final AssertingClauseGenerator analyzer
protected D extends DataStructureFactory<L> dsfactory
public static final org.sat4j.minisat.core.Solver.ISimplifier NO_SIMPLIFICATION
public final org.sat4j.minisat.core.Solver.ISimplifier SIMPLE_SIMPLIFICATION
public final org.sat4j.minisat.core.Solver.ISimplifier EXPENSIVE_SIMPLIFICATION
Constructor Detail |
---|
public Solver(AssertingClauseGenerator acg, LearningStrategy<L,D> learner, D dsf, IOrder<L> order, RestartStrategy restarter)
acg
- an asserting clause generatorpublic Solver(AssertingClauseGenerator acg, LearningStrategy<L,D> learner, D dsf, SearchParams params, IOrder<L> order, RestartStrategy restarter)
Method Detail |
---|
protected IVecInt dimacs2internal(IVecInt in)
public final void setDataStructureFactory(D dsf)
dsf
- the internal factorypublic void setSearchListener(SearchListener sl)
public void setTimeout(int t)
ISolver
setTimeout
in interface ISolver
t
- the timeout (in s)public void setTimeoutMs(long t)
ISolver
setTimeoutMs
in interface ISolver
t
- the timeout (in milliseconds)public void setTimeoutOnConflicts(int count)
ISolver
setTimeoutOnConflicts
in interface ISolver
count
- the timeout (in number of counflicts)public void setSearchParams(SearchParams sp)
public void setRestartStrategy(RestartStrategy restarter)
public void expireTimeout()
ISolver
expireTimeout
in interface ISolver
protected int nAssigns()
public int nConstraints()
IProblem
nConstraints
in interface IProblem
public void learn(Constr c)
learn
in interface Learner
public int decisionLevel()
@Deprecated public int newVar()
ISolver
newVar
in interface ISolver
public int newVar(int howmany)
ISolver
howmany
variables in the solver (and thus in the
vocabulary).
newVar
in interface ISolver
howmany
- number of variables to create
public IConstr addClause(IVecInt literals) throws ContradictionException
ISolver
addClause
in interface ISolver
literals
- a set of literals
ContradictionException
- iff the vector of literals is empty or if it contains only
falsified literals after unit propagationISolver.removeConstr(IConstr)
public boolean removeConstr(IConstr co)
ISolver
removeConstr
in interface ISolver
co
- a constraint returned by one of the add method.
public void addAllClauses(IVec<IVecInt> clauses) throws ContradictionException
ISolver
addAllClauses
in interface ISolver
clauses
- a vector of set (VecInt) of literals in the dimacs format. The
vector can be reused since the solver is not supposed to keep
a reference to that vector.
ContradictionException
- iff the vector of literals is empty or if it contains only
falsified literals after unit propagationISolver.addClause(IVecInt)
public IConstr addAtMost(IVecInt literals, int degree) throws ContradictionException
ISolver
addAtMost
in interface ISolver
literals
- a set of literals The vector can be reused since the solver is
not supposed to keep a reference to that vector.degree
- the degree of the cardinality constraint
ContradictionException
- iff the vector of literals is empty or if it contains more
than degree satisfied literals after unit propagationISolver.removeConstr(IConstr)
public IConstr addAtLeast(IVecInt literals, int degree) throws ContradictionException
ISolver
addAtLeast
in interface ISolver
literals
- a set of literals. The vector can be reused since the solver
is not supposed to keep a reference to that vector.degree
- the degree of the cardinality constraint
ContradictionException
- iff the vector of literals is empty or if degree literals are
not remaining unfalsified after unit propagationISolver.removeConstr(IConstr)
public boolean simplifyDB()
public int[] model()
model
in interface IProblem
IProblem.isSatisfiable()
,
IProblem.isSatisfiable(IVecInt)
public boolean enqueue(int p)
enqueue
in interface UnitPropagationListener
p
- le litt?ral
public boolean enqueue(int p, Constr from)
enqueue
in interface UnitPropagationListener
p
- the literal.from
- the reason to propagate that literal, else null
public void analyze(Constr confl, Pair results)
public void setSimplifier(java.lang.String simp)
simp
- the name of the simplifier (one of NO_SIMPLIFICATION,
SIMPLE_SIMPLIFICATION, EXPENSIVE_SIMPLIFICATION).public void setSimplifier(org.sat4j.minisat.core.Solver.ISimplifier simp)
simp
- protected void undoOne()
public void claBumpActivity(Constr confl)
confl
- a constraintpublic void varBumpActivity(int p)
VarActivityListener
p
- a literal (v<<1 or v<<1^1)public Constr propagate()
public boolean assume(int p)
protected void cancelUntil(int level)
level
- protected void analyzeAtRootLevel(Constr conflict)
public boolean model(int var)
IProblem
model
in interface IProblem
var
- the variable id in Dimacs format
IProblem.model()
protected void reduceDB()
public void clearLearntClauses()
ISolver
clearLearntClauses
in interface ISolver
protected void reduceDB(double lim)
protected void decayActivities()
public boolean isSatisfiable() throws TimeoutException
IProblem
isSatisfiable
in interface IProblem
TimeoutException
public boolean isSatisfiable(boolean global) throws TimeoutException
IProblem
isSatisfiable
in interface IProblem
global
- whether that call is part of a global process (i.e.
optimization) or not. if (global), the timeout will not be
reset between each call.
TimeoutException
public boolean isSatisfiable(IVecInt assumps) throws TimeoutException
IProblem
isSatisfiable
in interface IProblem
assumps
- a set of literals (represented by usual non null integers
in Dimacs format).
TimeoutException
public boolean isSatisfiable(IVecInt assumps, boolean global) throws TimeoutException
IProblem
isSatisfiable
in interface IProblem
assumps
- a set of literals (represented by usual non null integers
in Dimacs format).global
- whether that call is part of a global process (i.e.
optimization) or not. if (global), the timeout will not be
reset between each call.
TimeoutException
public void printInfos(java.io.PrintWriter out, java.lang.String prefix)
IProblem
printInfos
in interface IProblem
out
- the place to print the informationprefix
- the prefix to put in front of each linepublic void printLearntClausesInfos(java.io.PrintWriter out, java.lang.String prefix)
public SolverStats getStats()
public IOrder<L> getOrder()
public void setOrder(IOrder<L> h)
public L getVocabulary()
public void reset()
ISolver
reset
in interface ISolver
public int nVars()
IProblem
nVars
in interface IProblem
protected IConstr addConstr(Constr constr)
constr
- a constraint implementing the Constr interface.
public DataStructureFactory<L> getDSFactory()
public IVecInt getOutLearnt()
public IConstr getIthConstr(int i)
i
- the constraint number (begins at 0)
public void printStat(java.io.PrintStream out, java.lang.String prefix)
ISolver
printStat
in interface ISolver
prefix
- the prefix to put in front of each lineISolver.printStat(PrintWriter, String)
public void printStat(java.io.PrintWriter out, java.lang.String prefix)
ISolver
printStat
in interface ISolver
prefix
- the prefix to put in front of each linepublic java.lang.String toString(java.lang.String prefix)
ISolver
toString
in interface ISolver
prefix
- the prefix to use on each line.
public java.lang.String toString()
toString
in class java.lang.Object
public int getTimeout()
ISolver
getTimeout
in interface ISolver
public long getTimeoutMs()
ISolver
getTimeoutMs
in interface ISolver
public void setExpectedNumberOfClauses(int nb)
ISolver
p cnf
line is
read in dimacs formatted input file.
Note that this method is supposed to be called AFTER a call to newVar(int)
setExpectedNumberOfClauses
in interface ISolver
nb
- the expected number of clauses.ISolver.newVar(int)
public java.util.Map<java.lang.String,java.lang.Number> getStat()
ISolver
getStat
in interface ISolver
public int[] findModel() throws TimeoutException
IProblem
if (isSatisfiable()) {
return model();
}
return null;
findModel
in interface IProblem
null
if no model is found
TimeoutException
- if a model cannot be found within the given timeout.public int[] findModel(IVecInt assumps) throws TimeoutException
IProblem
if (isSatisfiable(assumpt)) {
return model();
}
return null;
findModel
in interface IProblem
null
if no model is found
TimeoutException
- if a model cannot be found within the given timeout.public boolean isDBSimplificationAllowed()
ISolver
isDBSimplificationAllowed
in interface ISolver
public void setDBSimplificationAllowed(boolean status)
ISolver
setDBSimplificationAllowed
in interface ISolver
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |