summaryrefslogtreecommitdiff
path: root/src/theory/arith/simplex.h
AgeCommit message (Collapse)Author
2011-06-30Merging the playground branch upto r1957 into trunk.Tim King
2011-04-18This commit merges the branch arithmetic/propagation-again into trunk.Tim King
- This adds code for bounds refinement, and conflict weakening. - This adds util/boolean_simplification.h. - This adds a propagation manager to theory of arithmetic. - Propagation is disabled by default. - Propagation can be enabled by the command line flag "--enable-arithmetic-propagation" - Propagation interacts *heavily* with rewriting equalities, and will work best if the command line flag "--rewrite-arithmetic-equalities" is enabled.
2011-04-01This commit is a merge from the "betterstats" branch, which:Morgan Deters
* Makes Options an "omnipresent thread-local global" (like the notion of the "current NodeManager" was already). Options::current() accesses this structure. * Removes Options from constructors and data structures everywhere (this cleans up a lot of things). * No longer uses StatisticsRegistry statically. An instance of the registry is created and linked to a NodeManager. * StatisticsRegistry::current() is similar to Options::current(), but the pointer is stowed in the NodeManager (rather than stored) * The static functions of StatisticsRegistry have been left, for backward compatibility; they now use the "current" statistics registry. * SmtEngine::getStatisticsRegistry() is a public accessor for the registry; this is needed by main() to reach in and get the registry, for flushing statistics at the end.
2011-03-30Merged the branch sparse-tableau into trunk.Tim King
2011-03-22Merges the small changes on the queue-period branch into trunk. This branch ↵Tim King
importantly removes an unintentional line of code that had it pivoting more times than intended before rechecking the queue. Importantly, it does this without losing any examples with rewrite-equality enabled. This adds a parameter NUM_CHECKS which determines how many times the queue chould be checked during difference mode. A value of 10 for NUM_CHECKS has been empirically determined to be good in practice. See jobs 1815, 1824, 1825, 1821, 1814.
2011-03-17Switched SimplexDecisionProcedure::d_delayedLemmas from a vector to a queue.Tim King
2011-03-17SimplexDecisionProcedure no longer takes an OutputChannel as a parameter.Tim King
2011-03-17- Removes arith_constants.hTim King
- Adds ArithStaticLearner. Consolidates and cleans up the code for static learning in arithmetic. Static learning is now associated with a small amount of state between calls. This is used to track the data for the miplib trick. The goal is to make this inference work without relying on the fact that all of the miplib problem is asserted under the same AND node. - This commit contains miscellaneous other arithmetic cleanup.
2011-03-08- Merges queue-interrogation branch into the trunk. This branch adds extra ↵Tim King
phases of looking for additional conflicts during and after the heuristic pivoting stage. (For the expected performance gain, comparing jobs 1676 and 1643 gives a rough idea.)
2011-03-05- Adds "PreferenceFunction" to SimplexDecisionProcedure. A ↵Tim King
PreferenceFunction allows for specifying how to choose between two nonbasic variables for which should become basic during the selectSlack(...) function. This partially addresses a point brought up by Dejan during the Code Review. (Unfortunately, function pointers are involved in the implementation. Because of this, I have had Morgan review this code before check-in.)
2011-03-03- Creates a queue for lemmas discovered during the simplex procedure. Lemmas ↵Tim King
are sent to the sat solver during theory propagation. The lemmas currently come from additional conflicts that are discovered by findConflictOnTheQueue(...).
2011-02-27- Adds a path for Theory to be passed a reference to Options.Tim King
- Adds 3 choices of heuristic variable orders to use in ArithPriorityQueue. - Adds the pivot-rule command line option.
2011-02-24- Adds an additional round of checks for a conflict after the difference ↵Tim King
heuristic round has been completed. This happens immediately before switching to the variable order round.
2011-02-21- Adds the ArithPriorityQueue class. The ArithPriorityQueue class provides ↵Tim King
an abstraction to the previous priority queues representing the 2 different pivoting rules.
2011-02-21- Adds the statistic d_avgNumRowsNotContainingOnPivot.Tim King
- Removed a bug in row counting in row counting.
2011-02-19Changes:Tim King
- The Tableau is now in charge of managing what variables are basic in a unified manner. Specifically, TheoryArith::d_basicManager was merged into Tableau::d_basicVariables.
2011-02-17This commit is the promised clean up after removing row ejection.Tim King
2011-02-17Removed ActivityMonitor from arithmetic. This was only used for row ↵Tim King
ejection, and is now superfluous.
2011-02-17Row ejection is now completely disabled. Another commit cleaning this one up ↵Tim King
will follow shortly.
2011-02-16Overview of the changes:Tim King
- Preparing to remove row ejection from the code base! - Checks for conflicts immediately after a pivot to avoid potentially wasteful search. - Added arithvar_set.h. This replaces ArithVarSet that was previously in the Tableau, and ArithVarDenseSet. - Removes variables that have no preregistered bounds during presolve(). - Theory::isLeafOf() currently returns true for atoms. (I was unaware.) I modified Variable::isMember() to account for this exclude atoms. - Added statistics all over the place. This commit effects both boolean search and simplex search so expect running times to go all over the place. The time differences should be roughly as follows: http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=1486&reference_id=1447&p=10&category=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29
2011-02-14Reverses the order of the d_possiblyInconsistent queue. (It is that old ↵Tim King
termination bug again. *le sigh*)
2011-02-133 heuristics were added to arithmetic. A heuristic for detecting an encoding ↵Tim King
of min added to static learning in LRA. A heuristic added for when the true branch and false branch are both constants (also in static learning). A heuristic for checking whether any variables begin in conflict before pivoting.
2010-11-04This commit adds the ejected and un-ejected statistics.Tim King
2010-10-30Adds a hueristic from Alberto's thesis. For a fixed window the row count is ↵Tim King
used to select which non-basic variable is a row in made basic.
2010-10-29Factors out the QF_LRA decision procedure from TheoryArith and puts this ↵Tim King
into its own class SimplexDecisionProcedure. Implements about 1/2 of the pivoting rule from Alberto's thesis (section2.5.3).
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback