A type holding data (possibly) shared between a set of minimize constraints. More...
#include <minimize_constraint.h>
Classes | |
struct | LevelWeight |
A type to represent a weight at a certain level. More... | |
Public Types | |
typedef SharedMinimizeData | ThisType |
typedef PodVector< LevelWeight > ::type | WeightVec |
A type for holding sparse vectors of level weights of a multi-level constraint. | |
Public Member Functions | |
wsum_t | adjust (uint32 x) const |
Returns the adjustment for level x. | |
bool | checkNext () const |
Returns whether minimization should search for solutions with current or next smaller upper bound. | |
uint32 | generation () const |
bool | heuristic (Solver &s, bool full) const |
Assumes literals from last model to false until either a conflict is reached or all literals are assigned. | |
uint32 | level (uint32 i) const |
Returns the highest level of the literal with the given index i. | |
wsum_t | lower (uint32 x) const |
Returns the lower bound of level x. | |
const wsum_t * | lower () const |
uint32 | maxLevel () const |
MinimizeMode | mode () const |
Returns the active minimization mode. | |
uint32 | numRules () const |
Number of minimize statements contained in this constraint. | |
bool | optimize () const |
Returns true if optimization is active. | |
wsum_t | optimum (uint32 x) const |
Returns the current (ajusted and possibly tentative) optimum for level x. | |
void | release () |
Decreases the object's reference count and destroys it if reference count drops to 0. | |
ThisType * | share () |
Increases the reference count of this object. | |
SharedMinimizeData (const SumVec &lhsAdjust, MinimizeMode m=MinimizeMode_t::optimize) | |
wsum_t | upper (uint32 x) const |
Returns the upper bound of level x. | |
const wsum_t * | upper () const |
weight_t | weight (uint32 i) const |
Returns the most important weight of the literal with the given index i. | |
interface for optimization | |
The following functions shall not be called concurrently. | |
bool | setMode (MinimizeMode m, const wsum_t *bound=0, uint32 boundSize=0) |
Sets the enumeration mode and (optionally) an initial bound. | |
bool | setMode (MinimizeMode m, const SumVec &bound) |
void | resetBounds () |
MinimizeConstraint * | attach (Solver &s, uint32 strat=UINT32_MAX, bool addRef=true) |
Attaches a new minimize constraint to this data object. | |
const SumVec * | setOptimum (const wsum_t *opt) |
Makes opt the new (tentative) optimum. | |
void | setLower (uint32 lev, wsum_t low) |
Sets the lower bound of level lev to low. | |
void | markOptimal () |
Marks the current tentative optimum as the final optimum. | |
Arithmetic functions on weights. | |
void | add (wsum_t *lhs, const WeightLiteral &lit) const |
Computes lhs += weight(lit). | |
void | add (wsum_t *lhs, const LevelWeight *w) const |
void | sub (wsum_t *lhs, const WeightLiteral &lit, uint32 &aLev) const |
Computes lhs -= weight(lit). | |
void | sub (wsum_t *lhs, const LevelWeight *w, uint32 &aLev) const |
bool | imp (wsum_t *lhs, const WeightLiteral &lit, const wsum_t *rhs, uint32 &lev) const |
Returns (lhs + weight(lit)) > rhs. | |
bool | imp (wsum_t *lhs, const LevelWeight *w, const wsum_t *rhs, uint32 &lev) const |
weight_t | weight (const WeightLiteral &lit, uint32 lev) const |
Returns the weight of lit at level lev. | |
Static Public Member Functions | |
static wsum_t | maxBound () |
Public Attributes | |
WeightLiteral | lits [0] |
WeightVec | weights |
Private Types | |
typedef Clasp::atomic< uint32 > | Atomic |
Private Member Functions | |
void | destroy () const |
SharedMinimizeData & | operator= (const SharedMinimizeData &) |
SharedMinimizeData (const SharedMinimizeData &) | |
~SharedMinimizeData () | |
Private Attributes | |
SumVec | adjust_ |
Atomic | count_ |
Atomic | gCount_ |
SumVec | lower_ |
MinimizeMode | mode_ |
SumVec | opt_ [2] |
uint32 | optGen_ |
A type holding data (possibly) shared between a set of minimize constraints.
Definition at line 58 of file minimize_constraint.h.
typedef Clasp::atomic<uint32> Clasp::SharedMinimizeData::Atomic [private] |
Definition at line 170 of file minimize_constraint.h.
Definition at line 60 of file minimize_constraint.h.
A type for holding sparse vectors of level weights of a multi-level constraint.
Definition at line 74 of file minimize_constraint.h.
Clasp::SharedMinimizeData::SharedMinimizeData | ( | const SumVec & | lhsAdjust, |
MinimizeMode | m = MinimizeMode_t::optimize |
||
) | [explicit] |
Definition at line 27 of file minimize_constraint.cpp.
Clasp::SharedMinimizeData::~SharedMinimizeData | ( | ) | [private] |
Definition at line 33 of file minimize_constraint.cpp.
Clasp::SharedMinimizeData::SharedMinimizeData | ( | const SharedMinimizeData & | ) | [private] |
void Clasp::SharedMinimizeData::add | ( | wsum_t * | lhs, |
const WeightLiteral & | lit | ||
) | const [inline] |
Computes lhs += weight(lit).
Definition at line 151 of file minimize_constraint.h.
void Clasp::SharedMinimizeData::add | ( | wsum_t * | lhs, |
const LevelWeight * | w | ||
) | const [inline] |
Definition at line 152 of file minimize_constraint.h.
wsum_t Clasp::SharedMinimizeData::adjust | ( | uint32 | x | ) | const [inline] |
Returns the adjustment for level x.
Definition at line 95 of file minimize_constraint.h.
MinimizeConstraint * Clasp::SharedMinimizeData::attach | ( | Solver & | s, |
uint32 | strat = UINT32_MAX , |
||
bool | addRef = true |
||
) |
Attaches a new minimize constraint to this data object.
strat | The optimization strategy to use (see SolverStrategies::OptStrategy). If UINT32_MAX, the strategy is read from the solver's configuration. |
addRef | If true, the ref count of the shared object is increased. Otherwise, the new minimize constraint inherits the reference to the shared object. |
Definition at line 80 of file minimize_constraint.cpp.
bool Clasp::SharedMinimizeData::checkNext | ( | ) | const [inline] |
Returns whether minimization should search for solutions with current or next smaller upper bound.
Definition at line 104 of file minimize_constraint.h.
void Clasp::SharedMinimizeData::destroy | ( | ) | const [private] |
Definition at line 35 of file minimize_constraint.cpp.
uint32 Clasp::SharedMinimizeData::generation | ( | ) | const [inline] |
Definition at line 102 of file minimize_constraint.h.
bool Clasp::SharedMinimizeData::heuristic | ( | Solver & | s, |
bool | full | ||
) | const |
Assumes literals from last model to false until either a conflict is reached or all literals are assigned.
Definition at line 121 of file minimize_constraint.cpp.
bool Clasp::SharedMinimizeData::imp | ( | wsum_t * | lhs, |
const WeightLiteral & | lit, | ||
const wsum_t * | rhs, | ||
uint32 & | lev | ||
) | const [inline] |
Returns (lhs + weight(lit)) > rhs.
Definition at line 157 of file minimize_constraint.h.
bool Clasp::SharedMinimizeData::imp | ( | wsum_t * | lhs, |
const LevelWeight * | w, | ||
const wsum_t * | rhs, | ||
uint32 & | lev | ||
) | const |
Definition at line 137 of file minimize_constraint.cpp.
uint32 Clasp::SharedMinimizeData::level | ( | uint32 | i | ) | const [inline] |
Returns the highest level of the literal with the given index i.
Definition at line 99 of file minimize_constraint.h.
wsum_t Clasp::SharedMinimizeData::lower | ( | uint32 | x | ) | const [inline] |
Returns the lower bound of level x.
Definition at line 89 of file minimize_constraint.h.
const wsum_t* Clasp::SharedMinimizeData::lower | ( | ) | const [inline] |
Definition at line 90 of file minimize_constraint.h.
Marks the current tentative optimum as the final optimum.
Definition at line 118 of file minimize_constraint.cpp.
static wsum_t Clasp::SharedMinimizeData::maxBound | ( | ) | [inline, static] |
Definition at line 83 of file minimize_constraint.h.
uint32 Clasp::SharedMinimizeData::maxLevel | ( | ) | const [inline] |
Definition at line 82 of file minimize_constraint.h.
MinimizeMode Clasp::SharedMinimizeData::mode | ( | ) | const [inline] |
Returns the active minimization mode.
Definition at line 85 of file minimize_constraint.h.
uint32 Clasp::SharedMinimizeData::numRules | ( | ) | const [inline] |
Number of minimize statements contained in this constraint.
Definition at line 81 of file minimize_constraint.h.
SharedMinimizeData& Clasp::SharedMinimizeData::operator= | ( | const SharedMinimizeData & | ) | [private] |
bool Clasp::SharedMinimizeData::optimize | ( | ) | const [inline] |
Returns true if optimization is active.
Definition at line 87 of file minimize_constraint.h.
wsum_t Clasp::SharedMinimizeData::optimum | ( | uint32 | x | ) | const [inline] |
Returns the current (ajusted and possibly tentative) optimum for level x.
Definition at line 97 of file minimize_constraint.h.
void Clasp::SharedMinimizeData::release | ( | ) | [inline] |
Decreases the object's reference count and destroys it if reference count drops to 0.
Definition at line 79 of file minimize_constraint.h.
Definition at line 40 of file minimize_constraint.cpp.
void Clasp::SharedMinimizeData::setLower | ( | uint32 | lev, |
wsum_t | low | ||
) |
Sets the lower bound of level lev to low.
Definition at line 115 of file minimize_constraint.cpp.
bool Clasp::SharedMinimizeData::setMode | ( | MinimizeMode | m, |
const wsum_t * | bound = 0 , |
||
uint32 | boundSize = 0 |
||
) |
Sets the enumeration mode and (optionally) an initial bound.
Definition at line 59 of file minimize_constraint.cpp.
bool Clasp::SharedMinimizeData::setMode | ( | MinimizeMode | m, |
const SumVec & | bound | ||
) | [inline] |
Definition at line 119 of file minimize_constraint.h.
const SumVec * Clasp::SharedMinimizeData::setOptimum | ( | const wsum_t * | opt | ) |
Makes opt the new (tentative) optimum.
Definition at line 102 of file minimize_constraint.cpp.
ThisType* Clasp::SharedMinimizeData::share | ( | ) | [inline] |
Increases the reference count of this object.
Definition at line 77 of file minimize_constraint.h.
void Clasp::SharedMinimizeData::sub | ( | wsum_t * | lhs, |
const WeightLiteral & | lit, | ||
uint32 & | aLev | ||
) | const [inline] |
Computes lhs -= weight(lit).
Definition at line 154 of file minimize_constraint.h.
void Clasp::SharedMinimizeData::sub | ( | wsum_t * | lhs, |
const LevelWeight * | w, | ||
uint32 & | aLev | ||
) | const |
Definition at line 133 of file minimize_constraint.cpp.
wsum_t Clasp::SharedMinimizeData::upper | ( | uint32 | x | ) | const [inline] |
Returns the upper bound of level x.
Definition at line 92 of file minimize_constraint.h.
const wsum_t* Clasp::SharedMinimizeData::upper | ( | ) | const [inline] |
Definition at line 93 of file minimize_constraint.h.
weight_t Clasp::SharedMinimizeData::weight | ( | uint32 | i | ) | const [inline] |
Returns the most important weight of the literal with the given index i.
Definition at line 101 of file minimize_constraint.h.
weight_t Clasp::SharedMinimizeData::weight | ( | const WeightLiteral & | lit, |
uint32 | lev | ||
) | const [inline] |
Returns the weight of lit at level lev.
Definition at line 162 of file minimize_constraint.h.
SumVec Clasp::SharedMinimizeData::adjust_ [private] |
Definition at line 171 of file minimize_constraint.h.
Atomic Clasp::SharedMinimizeData::count_ [private] |
Definition at line 175 of file minimize_constraint.h.
Atomic Clasp::SharedMinimizeData::gCount_ [private] |
Definition at line 176 of file minimize_constraint.h.
Definition at line 180 of file minimize_constraint.h.
SumVec Clasp::SharedMinimizeData::lower_ [private] |
Definition at line 172 of file minimize_constraint.h.
MinimizeMode Clasp::SharedMinimizeData::mode_ [private] |
Definition at line 174 of file minimize_constraint.h.
SumVec Clasp::SharedMinimizeData::opt_[2] [private] |
Definition at line 173 of file minimize_constraint.h.
uint32 Clasp::SharedMinimizeData::optGen_ [private] |
Definition at line 177 of file minimize_constraint.h.
Definition at line 179 of file minimize_constraint.h.