public class OPBStringSolver extends DimacsStringSolver implements IPBSolver
firstConstr, fixedNbClauses, nbclauses, nbvars
Constructor and Description |
---|
OPBStringSolver() |
OPBStringSolver(int initSize) |
Modifier and Type | Method and Description |
---|---|
IConstr |
addAtLeast(IVecInt literals,
int degree) |
IConstr |
addAtLeast(IVecInt literals,
IVec<BigInteger> coeffs,
BigInteger degree)
Create a pseudo-boolean constraint of the type "at least".
|
IConstr |
addAtLeast(IVecInt literals,
IVecInt coeffs,
int degree)
Create a pseudo-boolean constraint of the type "at least".
|
IConstr |
addAtMost(IVecInt literals,
int degree) |
IConstr |
addAtMost(IVecInt literals,
IVec<BigInteger> coeffs,
BigInteger degree)
Create a pseudo boolean constraint of the type "at most".
|
IConstr |
addAtMost(IVecInt literals,
IVecInt coeffs,
int degree)
Create a pseudo boolean constraint of the type "at most".
|
IConstr |
addClause(IVecInt literals) |
IConstr |
addExactly(IVecInt literals,
int weight) |
IConstr |
addExactly(IVecInt literals,
IVec<BigInteger> coeffs,
BigInteger weight)
Create a pseudo-boolean constraint of the type "subset sum".
|
IConstr |
addExactly(IVecInt literals,
IVecInt coeffs,
int weight)
Create a pseudo-boolean constraint of the type "subset sum".
|
IConstr |
addPseudoBoolean(IVecInt lits,
IVec<BigInteger> coeffs,
boolean moreThan,
BigInteger d)
Create a Pseudo-Boolean constraint of the type "at least n or at most n
of those literals must be satisfied"
|
String |
getExplanation() |
ObjectiveFunction |
getObjectiveFunction()
Retrieve the objective function from the solver.
|
boolean |
isSatisfiable(IVecInt assumps) |
boolean |
isSatisfiable(IVecInt assumps,
boolean global) |
int |
nConstraints() |
int |
newVar(int howmany) |
void |
setExpectedNumberOfClauses(int nb) |
void |
setListOfVariablesForExplanation(IVecInt listOfVariables) |
void |
setObjectiveFunction(ObjectiveFunction obj)
Provide an objective function to the solver.
|
String |
toString() |
String |
toString(String prefix) |
getOut, modelWithInternalVariables, newVar, nextFreeVarId, nVars, primeImplicant, printInfos, printStat, realNumberOfVariables, registerLiteral, reset, setNbVars
addAllClauses, addBlockingClause, clearLearntClauses, expireTimeout, findModel, findModel, getLogPrefix, getSearchListener, getSolvingEngine, getStat, getTimeout, getTimeoutMs, isDBSimplificationAllowed, isSatisfiable, isSatisfiable, isSolverKeptHot, isVerbose, model, model, primeImplicant, printInfos, printStat, printStat, removeConstr, removeSubsumedConstr, setDBSimplificationAllowed, setKeepSolverHot, setLogPrefix, setSearchListener, setTimeout, setTimeoutMs, setTimeoutOnConflicts, setVerbose, unsatExplanation
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addAllClauses, addBlockingClause, clearLearntClauses, expireTimeout, getLogPrefix, getSearchListener, getSolvingEngine, getStat, getTimeout, getTimeoutMs, isDBSimplificationAllowed, isSolverKeptHot, isVerbose, modelWithInternalVariables, newVar, nextFreeVarId, printStat, printStat, printStat, realNumberOfVariables, registerLiteral, removeConstr, removeSubsumedConstr, reset, setDBSimplificationAllowed, setKeepSolverHot, setLogPrefix, setSearchListener, setTimeout, setTimeoutMs, setTimeoutOnConflicts, setVerbose, unsatExplanation
findModel, findModel, isSatisfiable, isSatisfiable, model, nVars, primeImplicant, primeImplicant, printInfos, printInfos
model
public OPBStringSolver()
public OPBStringSolver(int initSize)
initSize
- public boolean isSatisfiable(IVecInt assumps) throws TimeoutException
isSatisfiable
in interface IProblem
isSatisfiable
in class AbstractOutputSolver
TimeoutException
public boolean isSatisfiable(IVecInt assumps, boolean global) throws TimeoutException
isSatisfiable
in interface IProblem
isSatisfiable
in class AbstractOutputSolver
TimeoutException
public IConstr addPseudoBoolean(IVecInt lits, IVec<BigInteger> coeffs, boolean moreThan, BigInteger d) throws ContradictionException
IPBSolver
addPseudoBoolean
in interface IPBSolver
lits
- a set of literals. The vector can be reused since the solver
is not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.moreThan
- true if it is a constraint >= degree, false if it is a
constraint <= degreed
- the degree of the cardinality constraintContradictionException
- iff the vector of literals is empty or if the constraint is
falsified after unit propagationISolver.removeConstr(IConstr)
public void setObjectiveFunction(ObjectiveFunction obj)
IPBSolver
setObjectiveFunction
in interface IPBSolver
obj
- the objective functionpublic IConstr addAtLeast(IVecInt literals, int degree) throws ContradictionException
addAtLeast
in interface ISolver
addAtLeast
in class DimacsStringSolver
ContradictionException
public IConstr addAtMost(IVecInt literals, int degree) throws ContradictionException
addAtMost
in interface ISolver
addAtMost
in class DimacsStringSolver
ContradictionException
public IConstr addClause(IVecInt literals) throws ContradictionException
addClause
in interface ISolver
addClause
in class DimacsStringSolver
ContradictionException
public String getExplanation()
public void setListOfVariablesForExplanation(IVecInt listOfVariables)
public String toString()
toString
in class DimacsStringSolver
public String toString(String prefix)
toString
in interface ISolver
toString
in class DimacsStringSolver
public int newVar(int howmany)
newVar
in interface IProblem
newVar
in class DimacsStringSolver
public void setExpectedNumberOfClauses(int nb)
setExpectedNumberOfClauses
in interface ISolver
setExpectedNumberOfClauses
in class DimacsStringSolver
public ObjectiveFunction getObjectiveFunction()
IPBSolver
getObjectiveFunction
in interface IPBSolver
public int nConstraints()
nConstraints
in interface IProblem
nConstraints
in class DimacsStringSolver
public IConstr addAtMost(IVecInt literals, IVecInt coeffs, int degree) throws ContradictionException
IPBSolver
addAtMost
in interface IPBSolver
literals
- a set of literals The vector can be reused since the solver is
not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.degree
- the degree of the pseudo-boolean constraintContradictionException
- iff the constraint is found trivially unsat.ISolver.removeConstr(IConstr)
public IConstr addAtMost(IVecInt literals, IVec<BigInteger> coeffs, BigInteger degree) throws ContradictionException
IPBSolver
addAtMost
in interface IPBSolver
literals
- a set of literals The vector can be reused since the solver is
not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.degree
- the degree of the pseudo-boolean constraintContradictionException
- iff the constraint is found trivially unsat.ISolver.removeConstr(IConstr)
public IConstr addAtLeast(IVecInt literals, IVecInt coeffs, int degree) throws ContradictionException
IPBSolver
addAtLeast
in interface IPBSolver
literals
- a set of literals. The vector can be reused since the solver
is not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.degree
- the degree of the pseudo-boolean constraintContradictionException
- iff the constraint is found trivially unsat.ISolver.removeConstr(IConstr)
public IConstr addAtLeast(IVecInt literals, IVec<BigInteger> coeffs, BigInteger degree) throws ContradictionException
IPBSolver
addAtLeast
in interface IPBSolver
literals
- a set of literals. The vector can be reused since the solver
is not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.degree
- the degree of the pseudo-boolean constraintContradictionException
- iff the constraint is found trivially unsat.ISolver.removeConstr(IConstr)
public IConstr addExactly(IVecInt literals, int weight) throws ContradictionException
addExactly
in interface ISolver
addExactly
in class DimacsStringSolver
ContradictionException
public IConstr addExactly(IVecInt literals, IVecInt coeffs, int weight) throws ContradictionException
IPBSolver
addExactly
in interface IPBSolver
literals
- a set of literals. The vector can be reused since the solver
is not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.weight
- the number of literals that must be satisfiedContradictionException
- iff the constraint is trivially unsatisfiable.public IConstr addExactly(IVecInt literals, IVec<BigInteger> coeffs, BigInteger weight) throws ContradictionException
IPBSolver
addExactly
in interface IPBSolver
literals
- a set of literals. The vector can be reused since the solver
is not supposed to keep a reference to that vector.coeffs
- the coefficients of the literals. The vector can be reused
since the solver is not supposed to keep a reference to that
vector.weight
- the number of literals that must be satisfiedContradictionException
- iff the constraint is trivially unsatisfiable.Copyright © 2013 Centre de Recherche en Informatique de Lens (CRIL). All Rights Reserved.