#include <bab.hpp>
|
CUDA | BAB (AType atype, sub_ptr sub, best_ptr best) |
|
template<class A2 , class B2 , class... Allocators> |
CUDA NI | BAB (const BAB< A2, B2 > &other, AbstractDeps< Allocators... > &deps) |
|
CUDA AType | aty () const |
|
CUDA allocator_type | get_allocator () const |
|
CUDA local::B | is_bot () const |
|
CUDA local::B | is_top () const |
|
template<bool diagnose = false, class F , class Env , class Alloc2 > |
CUDA NI bool | interpret_tell (const F &f, Env &env, tell_type< Alloc2 > &tell, IDiagnostics &diagnostics) const |
|
template<bool diagnose = false, class F , class Env , class Alloc2 > |
CUDA NI bool | interpret_ask (const F &f, const Env &env, ask_type< Alloc2 > &ask, IDiagnostics &diagnostics) const |
|
template<IKind kind, bool diagnose = false, class F , class Env , class I > |
CUDA NI bool | interpret (const F &f, Env &env, I &intermediate, IDiagnostics &diagnostics) const |
|
template<class Alloc > |
CUDA bool | deduce (const tell_type< Alloc > &t) |
|
template<class Alloc2 > |
CUDA NI TFormula< Alloc2 > | deinterpret_best_bound (const typename best_type::universe_type &best_bound, const Alloc2 &alloc=Alloc2{}) const |
|
template<class Alloc2 > |
CUDA TFormula< Alloc2 > | deinterpret_best_bound (const Alloc2 &alloc=Alloc2{}) const |
|
CUDA local::B | deduce (const typename best_type::universe_type &best_bound) |
|
template<class Store1 , class Store2 > |
CUDA bool | compare_bound (const Store1 &store1, const Store2 &store2) const |
|
CUDA local::B | deduce () |
|
CUDA int | solutions_count () const |
|
template<class ExtractionStrategy = NonAtomicExtraction> |
CUDA bool | is_extractable (const ExtractionStrategy &strategy=ExtractionStrategy()) const |
|
template<class AbstractBest > |
CUDA void | extract (AbstractBest &ua) const |
|
CUDA const best_type & | optimum () const |
|
CUDA best_ptr | optimum_ptr () const |
|
CUDA bool | is_satisfaction () const |
|
CUDA bool | is_optimization () const |
|
CUDA bool | is_minimization () const |
|
CUDA bool | is_maximization () const |
|
CUDA AVar | objective_var () const |
|
◆ allocator_type
◆ sub_type
◆ sub_ptr
◆ best_type
◆ best_ptr
◆ this_type
◆ ask_type
◆ BAB() [1/2]
◆ BAB() [2/2]
Construct BAB by copying other
. The best solution is copied using a fresh AbstractDeps, and thus is not intended to be shared with other abstract domains. For instance, if best
is a VStore, it shares the same AType than the VStore underlying sub
. Hence, if we copy it using deps
, both VStore will be shared which is not the intended behavior.
◆ aty()
◆ get_allocator()
template<class A , class B = A>
◆ is_bot()
◆ is_top()
◆ interpret_tell()
◆ interpret_ask()
◆ interpret()
◆ deduce() [1/3]
◆ deinterpret_best_bound() [1/2]
◆ deinterpret_best_bound() [2/2]
◆ deduce() [2/3]
◆ compare_bound()
Compare the best bound of two stores on the objective variable represented in this BAB abstract element.
- Precondition
is_optimization()
must be true
.
- Returns
true
if store1
is strictly better than store2
, false otherwise.
◆ deduce() [3/3]
This deduction operator performs "branch-and-bound" by adding a constraint to the root node of the search tree to ensure the next solution is better than the current one, and store the best solution found.
- Precondition
- The current subelement must be extractable, and if it is an optimization problem, have a better bound than
best
(this is not checked here). Beware this deduction operator is not idempotent (it must only be called once on each new solution).
◆ solutions_count()
◆ is_extractable()
Given an optimization problem, it is extractable only when we have explored the whole state space (indicated by the subdomain being equal to top), we have found one solution, and that solution is extractable.
◆ extract()
Extract the best solution found in ua
.
- Precondition
is_extractable()
must return true
.
◆ optimum()
If is_extractable()
is not true
, the returned element might not be an optimum, and should be seen as the best optimum found so far.
◆ optimum_ptr()
◆ is_satisfaction()
◆ is_optimization()
◆ is_minimization()
◆ is_maximization()
◆ objective_var()
◆ BAB
◆ is_abstract_universe
◆ sequential
◆ is_totally_ordered
◆ preserve_bot
◆ preserve_top
◆ preserve_join
◆ preserve_meet
◆ injective_concretization
◆ preserve_concrete_covers
◆ name
The documentation for this class was generated from the following file: