
Parallel portfolio engine implementation. More...
#include <pbs.hh>
Public Member Functions | |
| PBS (Engine **s, Stop **so, unsigned int n, const Statistics &stat) | |
| Initialize. | |
| virtual Space * | next (void) |
| Return next solution (NULL, if none exists or search has been stopped) | |
| virtual Statistics | statistics (void) const |
| Return statistics. | |
| virtual bool | stopped (void) const |
| Check whether engine has been stopped. | |
| virtual void | constrain (const Space &b) |
| Constrain future solutions to be better than b. | |
| virtual | ~PBS (void) |
| Destructor. | |
| Public Member Functions inherited from Gecode::Search::Par::Engine< Tracer > | |
| const Options & | opt (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. | |
| Public Member Functions inherited from Gecode::Search::Engine | |
| virtual void | reset (Space *s) |
| Reset engine to restart at space s (does nothing) | |
| virtual NoGoods & | nogoods (void) |
| Return no-goods (the no-goods are empty) | |
| virtual | ~Engine (void) |
| Destructor. | |
| Public Member Functions inherited from Gecode::Support::Terminator | |
| virtual | ~Terminator () |
| Destructor. | |
Protected Member Functions | |
| bool | report (Slave< Collect > *slave, Space *s) |
| Process report from slave, return false if solution was ignored. | |
| bool | signal (void) const |
| Whether search state changed such that signal is needed. | |
Protected Attributes | |
| Statistics | stat |
| Master statistics. | |
| Slave< Collect > ** | slaves |
| Slave engines. | |
| unsigned int | n_slaves |
| Number of slave engines. | |
| unsigned int | n_active |
| Number of active slave engines. | |
| bool | slave_stop |
| Whether a slave has been stopped. | |
| volatile bool | tostop |
| Shared stop flag. | |
| Collect | solutions |
| Collect solutions in this. | |
| Support::Mutex | m |
| Mutex for synchronization. | |
| unsigned int | n_busy |
| Number of busy slaves. | |
| Support::Event | idle |
| Signal that number of busy slaves becomes zero. | |
| 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 *, Heap > | solutions |
| Queue of solutions. | |
| volatile unsigned int | n_busy |
| Number of busy workers. | |
| volatile bool | has_stopped |
| Whether a worker had been stopped. | |
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. | |
Parallel portfolio engine implementation.
|
inline |
Initialize.
The key invariant of the engine is as follows:
|
virtual |
|
inlineprotected |
|
virtual |
Return next solution (NULL, if none exists or search has been stopped)
Reimplemented from Gecode::Search::Par::Engine< Tracer >.
|
virtual |
|
virtual |
Check whether engine has been stopped.
Reimplemented from Gecode::Search::Par::Engine< Tracer >.
|
virtual |
Constrain future solutions to be better than b.
Reimplemented from Gecode::Search::Engine.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |