69 lines
2.2 KiB
C++
69 lines
2.2 KiB
C++
#ifndef _limit_hpp_INCLUDED
|
|
#define _limit_hpp_INCLUDED
|
|
|
|
namespace CaDiCaL {
|
|
|
|
struct Limit {
|
|
|
|
bool initialized;
|
|
|
|
int64_t conflicts; // conflict limit if non-negative
|
|
int64_t decisions; // decision limit if non-negative
|
|
int64_t preprocessing; // limit on preprocessing rounds
|
|
int64_t localsearch; // limit on local search rounds
|
|
|
|
int64_t compact; // conflict limit for next 'compact'
|
|
int64_t condition; // conflict limit for next 'condition'
|
|
int64_t elim; // conflict limit for next 'elim'
|
|
int64_t flush; // conflict limit for next 'flush'
|
|
int64_t probe; // conflict limit for next 'probe'
|
|
int64_t reduce; // conflict limit for next 'reduce'
|
|
int64_t rephase; // conflict limit for next 'rephase'
|
|
int64_t report; // report limit for header
|
|
int64_t restart; // conflict limit for next 'restart'
|
|
int64_t stabilize; // conflict limit for next 'stabilize'
|
|
int64_t subsume; // conflict limit for next 'subsume'
|
|
|
|
int keptsize; // maximum kept size in 'reduce'
|
|
int keptglue; // maximum kept glue in 'reduce'
|
|
|
|
// How often rephased during (1) or out (0) of stabilization.
|
|
//
|
|
int64_t rephased[2];
|
|
|
|
// Current elimination bound per eliminated variable.
|
|
//
|
|
int64_t elimbound;
|
|
|
|
struct {
|
|
int check; // countdown to next terminator call
|
|
int forced; // forced termination for testing
|
|
} terminate;
|
|
|
|
Limit ();
|
|
};
|
|
|
|
struct Last {
|
|
struct { int64_t propagations; } transred, vivify;
|
|
struct { int64_t fixed, subsumephases, marked; } elim;
|
|
struct { int64_t propagations, reductions; } probe;
|
|
struct { int64_t conflicts; } reduce, rephase;
|
|
struct { int64_t marked; } ternary;
|
|
struct { int64_t fixed; } collect;
|
|
Last ();
|
|
};
|
|
|
|
struct Inc {
|
|
int64_t flush; // flushing interval in terms of conflicts
|
|
int64_t stabilize; // stabilization interval increment
|
|
int64_t conflicts; // next conflict limit if non-negative
|
|
int64_t decisions; // next decision limit if non-negative
|
|
int64_t preprocessing; // next preprocessing limit if non-negative
|
|
int64_t localsearch; // next local search limit if non-negative
|
|
Inc ();
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|