Generated on Sat Jan 12 2019 20:58:51 for Gecode by doxygen 1.8.13
pbs.cpp
Go to the documentation of this file.
1 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2 /*
3  * Main authors:
4  * Christian Schulte <schulte@gecode.org>
5  *
6  * Copyright:
7  * Christian Schulte, 2015
8  *
9  * This file is part of Gecode, the generic constraint
10  * development environment:
11  * http://www.gecode.org
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining
14  * a copy of this software and associated documentation files (the
15  * "Software"), to deal in the Software without restriction, including
16  * without limitation the rights to use, copy, modify, merge, publish,
17  * distribute, sublicense, and/or sell copies of the Software, and to
18  * permit persons to whom the Software is furnished to do so, subject to
19  * the following conditions:
20  *
21  * The above copyright notice and this permission notice shall be
22  * included in all copies or substantial portions of the Software.
23  *
24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31  *
32  */
33 
34 #include <gecode/search/seq/pbs.hh>
35 
36 namespace Gecode { namespace Search { namespace Seq {
37 
38  Stop*
39  pbsstop(Stop* so) {
40  return new PortfolioStop(so);
41  }
42 
43  Engine*
44  pbsengine(Engine** slaves, Stop** stops, unsigned int n_slaves,
45  const Statistics& stat, const Search::Options& opt, bool best) {
46  if (best)
47  return new PBS<true>(slaves,stops,n_slaves,stat,opt);
48  else
49  return new PBS<false>(slaves,stops,n_slaves,stat,opt);
50  }
51 
52 }}}
53 
54 #ifdef GECODE_HAS_THREADS
55 
56 #include <gecode/search/par/pbs.hh>
57 
58 namespace Gecode { namespace Search { namespace Par {
59 
60  Stop*
61  pbsstop(Stop* so) {
62  return new PortfolioStop(so);
63  }
64 
65  Engine*
66  pbsengine(Engine** slaves, Stop** stops, unsigned int n_slaves,
67  const Statistics& stat, bool best) {
68  if (best)
69  return new PBS<CollectBest>(slaves,stops,n_slaves,stat);
70  else
71  return new PBS<CollectAll>(slaves,stops,n_slaves,stat);
72  }
73 
74 }}}
75 
76 #endif
77 
78 // STATISTICS: search-other
Engine * pbsengine(Engine **slaves, Stop **stops, unsigned int n_slaves, const Statistics &stat, const Search::Options &opt, bool best)
Create sequential portfolio engine.
Definition: pbs.cpp:44
Search engine implementation interface
Definition: search.hh:899
Search engine statistics
Definition: search.hh:147
Search engine options
Definition: search.hh:746
Parallel depth-first search engine
Definition: engine.hh:46
Stop object used for controling slaves in a portfolio.
Definition: pbs.hh:51
Options opt
The options.
Definition: test.cpp:97
Stop * pbsstop(Stop *so)
Create stop object.
Definition: pbs.cpp:39
Stop object used for controling slaves in a portfolio.
Definition: pbs.hh:42
Parallel portfolio engine implementation.
Definition: pbs.hh:63
Gecode toplevel namespace
Base-class for Stop-object.
Definition: search.hh:799
Sequential portfolio engine implementation.
Definition: pbs.hh:92