Generated on Thu Jan 16 2025 00:00:00 for Gecode by doxygen 1.14.0
Gecode::Search::Par::BAB< Tracer > Class Template Reference

Parallel branch-and-bound engine More...

#include <bab.hh>

Classes

class  Worker
 Parallel branch-and-bound search worker More...

Public Member Functions

Workerworker (unsigned int i) const
 Provide access to worker i.
Public Member Functions inherited from Gecode::Search::Par::Engine< Tracer >
const Optionsopt (void) const
 Provide access to search options.
unsigned int workers (void) const
 Return number of workers.
Cmd cmd (void) const
 Return current command.
void block (void)
 Block all workers.
void release (Cmd c)
 Release all workers.
void wait (void)
 Ensure that worker waits.
void ack_terminate (void)
 For worker to acknowledge termination command.
virtual void terminated (void)
 For worker to register termination.
void wait_terminate (void)
 For worker to wait until termination is legal.
void terminate (void)
 For engine to peform thread termination.
void ack_reset_start (void)
 For worker to acknowledge start of reset cycle.
void ack_reset_stop (void)
 For worker to acknowledge stop of reset cycle.
void wait_reset (void)
 For worker to wait for all workers to reset.
void idle (void)
 Report that worker is idle.
void busy (void)
 Report that worker is busy.
void stop (void)
 Report that worker has been stopped.
 Engine (const Options &o)
 Initialize with options o.
virtual Spacenext (void)
 Return next solution (NULL, if none exists or search has been stopped)
virtual bool stopped (void) const
 Check whether engine has been stopped.
Public Member Functions inherited from Gecode::Search::Engine
virtual ~Engine (void)
 Destructor.
Public Member Functions inherited from Gecode::Support::Terminator
virtual ~Terminator ()
 Destructor.

Protected Attributes

Worker ** _worker
 Array of worker references.
Spacebest
 Best solution so far.
Protected Attributes inherited from Gecode::Search::Par::Engine< Tracer >
Options _opt
 Search options.
volatile Cmd _cmd
 The current command.
Support::Mutex _m_wait
 Mutex for forcing workers to wait.
Support::Mutex _m_term
 Mutex for access to termination information.
volatile unsigned int _n_term_not_ack
 Number of workers that have not yet acknowledged termination.
Support::Event _e_term_ack
 Event for termination acknowledgment.
Support::Mutex _m_wait_terminate
 Mutex for waiting for termination.
volatile unsigned int _n_not_terminated
 Number of not yet terminated workers.
Support::Event _e_terminate
 Event for termination (all threads have terminated)
Support::Mutex _m_reset
 Mutex for access to reset information.
volatile unsigned int _n_reset_not_ack
 Number of workers that have not yet acknowledged reset.
Support::Event e_reset_ack_start
 Event for reset acknowledgment started.
Support::Event e_reset_ack_stop
 Event for reset acknowledgment stopped.
Support::Mutex m_wait_reset
 Mutex for waiting for reset.
Support::Mutex m_search
 Mutex for search.
Support::Event e_search
 Event for search (solution found, no more solutions, search stopped)
Support::DynamicQueue< Space *, Heapsolutions
 Queue of solutions.
volatile unsigned int n_busy
 Number of busy workers.
volatile bool has_stopped
 Whether a worker had been stopped.

Search control

void solution (Space *s)
 Report solution s.

Engine interface

 BAB (Space *s, const Options &o)
 Initialize for space s with options o.
virtual Statistics statistics (void) const
 Return statistics.
virtual void reset (Space *s)
 Reset engine to restart at space s.
virtual void constrain (const Space &b)
 Constrain future solutions to be better than b.
virtual NoGoodsnogoods (void)
 Constrain Return no-goods.
virtual ~BAB (void)
 Destructor.

Additional Inherited Members

Public Types inherited from Gecode::Search::Par::Engine< Tracer >
enum  Cmd { C_WORK , C_WAIT , C_RESET , C_TERMINATE }
 Commands from engine to workers. More...
Static Public Member Functions inherited from Gecode::HeapAllocated
static void * operator new (size_t s)
 Memory management.
static void operator delete (void *p)
 Free memory allocated from heap.
bool signal (void) const
 Whether search state changed such that signal is needed.

Detailed Description

template<class Tracer>
class Gecode::Search::Par::BAB< Tracer >

Parallel branch-and-bound engine

Definition at line 43 of file bab.hh.

Constructor & Destructor Documentation

◆ BAB()

template<class Tracer>
Gecode::Search::Par::BAB< Tracer >::BAB ( Space * s,
const Options & o )
inline

Initialize for space s with options o.

Definition at line 81 of file bab.hpp.

◆ ~BAB()

template<class Tracer>
Gecode::Search::Par::BAB< Tracer >::~BAB ( void )
virtual

Destructor.

Definition at line 416 of file bab.hpp.

Member Function Documentation

◆ worker()

template<class Tracer>
BAB< Tracer >::Worker * Gecode::Search::Par::BAB< Tracer >::worker ( unsigned int i) const
inline

Provide access to worker i.

Definition at line 46 of file bab.hpp.

◆ solution()

template<class Tracer>
void Gecode::Search::Par::BAB< Tracer >::solution ( Space * s)
inline

Report solution s.

Definition at line 117 of file bab.hpp.

◆ statistics()

template<class Tracer>
Statistics Gecode::Search::Par::BAB< Tracer >::statistics ( void ) const
virtual

Return statistics.

Implements Gecode::Search::Engine.

Definition at line 178 of file bab.hpp.

◆ reset()

template<class Tracer>
void Gecode::Search::Par::BAB< Tracer >::reset ( Space * s)
virtual

Reset engine to restart at space s.

Reimplemented from Gecode::Search::Engine.

Definition at line 360 of file bab.hpp.

◆ constrain()

template<class Tracer>
void Gecode::Search::Par::BAB< Tracer >::constrain ( const Space & b)
virtual

Constrain future solutions to be better than b.

Reimplemented from Gecode::Search::Engine.

Definition at line 187 of file bab.hpp.

◆ nogoods()

template<class Tracer>
NoGoods & Gecode::Search::Par::BAB< Tracer >::nogoods ( void )
virtual

Constrain Return no-goods.

Reimplemented from Gecode::Search::Engine.

Definition at line 389 of file bab.hpp.

Member Data Documentation

◆ _worker

template<class Tracer>
Worker** Gecode::Search::Par::BAB< Tracer >::_worker
protected

Array of worker references.

Definition at line 100 of file bab.hh.

◆ best

template<class Tracer>
Space* Gecode::Search::Par::BAB< Tracer >::best
protected

Best solution so far.

Definition at line 102 of file bab.hh.


The documentation for this class was generated from the following files: