main page
modules
namespaces
classes
files
Gecode home
Generated on Tue Jan 28 2020 00:00:00 for Gecode by
doxygen
1.8.17
gecode
float
branch
view-sel.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, 2012
8
*
9
* Last modified:
10
* $Date: 2017-02-28 08:29:39 +0100 (Tue, 28 Feb 2017) $ by $Author: schulte $
11
* $Revision: 15527 $
12
*
13
* This file is part of Gecode, the generic constraint
14
* development environment:
15
* http://www.gecode.org
16
*
17
* Permission is hereby granted, free of charge, to any person obtaining
18
* a copy of this software and associated documentation files (the
19
* "Software"), to deal in the Software without restriction, including
20
* without limitation the rights to use, copy, modify, merge, publish,
21
* distribute, sublicense, and/or sell copies of the Software, and to
22
* permit persons to whom the Software is furnished to do so, subject to
23
* the following conditions:
24
*
25
* The above copyright notice and this permission notice shall be
26
* included in all copies or substantial portions of the Software.
27
*
28
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
*
36
*/
37
38
#include <
gecode/float/branch.hh
>
39
40
namespace
Gecode
{
namespace
Float {
namespace
Branch {
41
42
ViewSel<FloatView>*
43
viewsel
(
Space
& home,
const
FloatVarBranch
& fvb) {
44
switch
(fvb.
select
()) {
45
case
FloatVarBranch::SEL_NONE
:
46
return
new
(home)
ViewSelNone<FloatView>
(home,fvb);
47
case
FloatVarBranch::SEL_RND
:
48
return
new
(home)
ViewSelRnd<FloatView>
(home,fvb);
49
default
:
break
;
50
}
51
if
(fvb.
tbl
() != NULL) {
52
switch
(fvb.
select
()) {
53
case
FloatVarBranch::SEL_MERIT_MIN
:
54
return
new
(home)
ViewSelMinTbl
<
MeritFunction<FloatView>
>(home,fvb);
55
case
FloatVarBranch::SEL_MERIT_MAX
:
56
return
new
(home)
ViewSelMaxTbl
<
MeritFunction<FloatView>
>(home,fvb);
57
case
FloatVarBranch::SEL_MIN_MIN
:
58
return
new
(home)
ViewSelMinTbl<MeritMin>
(home,fvb);
59
case
FloatVarBranch::SEL_MIN_MAX
:
60
return
new
(home)
ViewSelMaxTbl<MeritMin>
(home,fvb);
61
case
FloatVarBranch::SEL_MAX_MIN
:
62
return
new
(home)
ViewSelMinTbl<MeritMax>
(home,fvb);
63
case
FloatVarBranch::SEL_MAX_MAX
:
64
return
new
(home)
ViewSelMaxTbl<MeritMax>
(home,fvb);
65
case
FloatVarBranch::SEL_SIZE_MIN
:
66
return
new
(home)
ViewSelMinTbl<MeritSize>
(home,fvb);
67
case
FloatVarBranch::SEL_SIZE_MAX
:
68
return
new
(home)
ViewSelMaxTbl<MeritSize>
(home,fvb);
69
case
FloatVarBranch::SEL_DEGREE_MIN
:
70
return
new
(home)
ViewSelMinTbl
<
MeritDegree<FloatView>
>(home,fvb);
71
case
FloatVarBranch::SEL_DEGREE_MAX
:
72
return
new
(home)
ViewSelMaxTbl
<
MeritDegree<FloatView>
>(home,fvb);
73
case
FloatVarBranch::SEL_AFC_MIN
:
74
return
new
(home)
ViewSelMinTbl
<
MeritAFC<FloatView>
>(home,fvb);
75
case
FloatVarBranch::SEL_AFC_MAX
:
76
return
new
(home)
ViewSelMaxTbl
<
MeritAFC<FloatView>
>(home,fvb);
77
case
FloatVarBranch::SEL_ACTION_MIN
:
78
return
new
(home)
ViewSelMinTbl
<
MeritAction<FloatView>
>(home,fvb);
79
case
FloatVarBranch::SEL_ACTION_MAX
:
80
return
new
(home)
ViewSelMaxTbl
<
MeritAction<FloatView>
>(home,fvb);
81
case
FloatVarBranch::SEL_CHB_MIN
:
82
return
new
(home)
ViewSelMinTbl
<
MeritCHB<FloatView>
>(home,fvb);
83
case
FloatVarBranch::SEL_CHB_MAX
:
84
return
new
(home)
ViewSelMaxTbl
<
MeritCHB<FloatView>
>(home,fvb);
85
case
FloatVarBranch::SEL_DEGREE_SIZE_MIN
:
86
return
new
(home)
ViewSelMinTbl<MeritDegreeSize>
(home,fvb);
87
case
FloatVarBranch::SEL_DEGREE_SIZE_MAX
:
88
return
new
(home)
ViewSelMaxTbl<MeritDegreeSize>
(home,fvb);
89
case
FloatVarBranch::SEL_AFC_SIZE_MIN
:
90
return
new
(home)
ViewSelMinTbl<MeritAFCSize>
(home,fvb);
91
case
FloatVarBranch::SEL_AFC_SIZE_MAX
:
92
return
new
(home)
ViewSelMaxTbl<MeritAFCSize>
(home,fvb);
93
case
FloatVarBranch::SEL_ACTION_SIZE_MIN
:
94
return
new
(home)
ViewSelMinTbl<MeritActionSize>
(home,fvb);
95
case
FloatVarBranch::SEL_ACTION_SIZE_MAX
:
96
return
new
(home)
ViewSelMaxTbl<MeritActionSize>
(home,fvb);
97
case
FloatVarBranch::SEL_CHB_SIZE_MIN
:
98
return
new
(home)
ViewSelMinTbl<MeritCHBSize>
(home,fvb);
99
case
FloatVarBranch::SEL_CHB_SIZE_MAX
:
100
return
new
(home)
ViewSelMaxTbl<MeritCHBSize>
(home,fvb);
101
default
:
102
throw
UnknownBranching
(
"Float::branch"
);
103
}
104
}
else
{
105
switch
(fvb.
select
()) {
106
case
FloatVarBranch::SEL_MERIT_MIN
:
107
return
new
(home)
ViewSelMin
<
MeritFunction<FloatView>
>(home,fvb);
108
case
FloatVarBranch::SEL_MERIT_MAX
:
109
return
new
(home)
ViewSelMax
<
MeritFunction<FloatView>
>(home,fvb);
110
case
FloatVarBranch::SEL_MIN_MIN
:
111
return
new
(home)
ViewSelMin<MeritMin>
(home,fvb);
112
case
FloatVarBranch::SEL_MIN_MAX
:
113
return
new
(home)
ViewSelMax<MeritMin>
(home,fvb);
114
case
FloatVarBranch::SEL_MAX_MIN
:
115
return
new
(home)
ViewSelMin<MeritMax>
(home,fvb);
116
case
FloatVarBranch::SEL_MAX_MAX
:
117
return
new
(home)
ViewSelMax<MeritMax>
(home,fvb);
118
case
FloatVarBranch::SEL_SIZE_MIN
:
119
return
new
(home)
ViewSelMin<MeritSize>
(home,fvb);
120
case
FloatVarBranch::SEL_SIZE_MAX
:
121
return
new
(home)
ViewSelMax<MeritSize>
(home,fvb);
122
case
FloatVarBranch::SEL_DEGREE_MIN
:
123
return
new
(home)
ViewSelMin
<
MeritDegree<FloatView>
>(home,fvb);
124
case
FloatVarBranch::SEL_DEGREE_MAX
:
125
return
new
(home)
ViewSelMax
<
MeritDegree<FloatView>
>(home,fvb);
126
case
FloatVarBranch::SEL_AFC_MIN
:
127
return
new
(home)
ViewSelMin
<
MeritAFC<FloatView>
>(home,fvb);
128
case
FloatVarBranch::SEL_AFC_MAX
:
129
return
new
(home)
ViewSelMax
<
MeritAFC<FloatView>
>(home,fvb);
130
case
FloatVarBranch::SEL_ACTION_MIN
:
131
return
new
(home)
ViewSelMin
<
MeritAction<FloatView>
>(home,fvb);
132
case
FloatVarBranch::SEL_ACTION_MAX
:
133
return
new
(home)
ViewSelMax
<
MeritAction<FloatView>
>(home,fvb);
134
case
FloatVarBranch::SEL_CHB_MIN
:
135
return
new
(home)
ViewSelMin
<
MeritCHB<FloatView>
>(home,fvb);
136
case
FloatVarBranch::SEL_CHB_MAX
:
137
return
new
(home)
ViewSelMax
<
MeritCHB<FloatView>
>(home,fvb);
138
case
FloatVarBranch::SEL_DEGREE_SIZE_MIN
:
139
return
new
(home)
ViewSelMin<MeritDegreeSize>
(home,fvb);
140
case
FloatVarBranch::SEL_DEGREE_SIZE_MAX
:
141
return
new
(home)
ViewSelMax<MeritDegreeSize>
(home,fvb);
142
case
FloatVarBranch::SEL_AFC_SIZE_MIN
:
143
return
new
(home)
ViewSelMin<MeritAFCSize>
(home,fvb);
144
case
FloatVarBranch::SEL_AFC_SIZE_MAX
:
145
return
new
(home)
ViewSelMax<MeritAFCSize>
(home,fvb);
146
case
FloatVarBranch::SEL_ACTION_SIZE_MIN
:
147
return
new
(home)
ViewSelMin<MeritActionSize>
(home,fvb);
148
case
FloatVarBranch::SEL_ACTION_SIZE_MAX
:
149
return
new
(home)
ViewSelMax<MeritActionSize>
(home,fvb);
150
case
FloatVarBranch::SEL_CHB_SIZE_MIN
:
151
return
new
(home)
ViewSelMin<MeritCHBSize>
(home,fvb);
152
case
FloatVarBranch::SEL_CHB_SIZE_MAX
:
153
return
new
(home)
ViewSelMax<MeritCHBSize>
(home,fvb);
154
default
:
155
throw
UnknownBranching
(
"Float::branch"
);
156
}
157
}
158
GECODE_NEVER
;
159
return
NULL;
160
}
161
162
}}}
163
164
165
// STATISTICS: float-branch
166
Gecode::FloatVarBranch::SEL_ACTION_SIZE_MIN
@ SEL_ACTION_SIZE_MIN
With smallest action divided by domain size.
Definition:
float.hh:1631
Gecode::ViewSelMinTbl
Select view with least merit taking tie-break limit into account.
Definition:
brancher-view-sel.hpp:320
Gecode::ViewSelRnd
Select a view randomly.
Definition:
brancher-view-sel.hpp:153
Gecode::ViewSelNone
Select the first unassigned view.
Definition:
brancher-view-sel.hpp:113
Gecode::FloatVarBranch::SEL_DEGREE_MAX
@ SEL_DEGREE_MAX
With largest degree.
Definition:
float.hh:1614
Gecode::FloatVarBranch::SEL_AFC_MAX
@ SEL_AFC_MAX
With largest accumulated failure count.
Definition:
float.hh:1616
Gecode::MeritDegree
Merit class for degree.
Definition:
brancher-merit.hpp:97
Gecode::FloatVarBranch::SEL_ACTION_MIN
@ SEL_ACTION_MIN
With lowest action.
Definition:
float.hh:1617
Gecode::MeritFunction
Merit class for user-defined merit function.
Definition:
brancher-merit.hpp:72
Gecode::FloatVarBranch::SEL_NONE
@ SEL_NONE
First unassigned.
Definition:
float.hh:1609
Gecode::FloatVarBranch
Which variable to select for branching.
Definition:
float.hh:1605
Gecode::FloatVarBranch::SEL_CHB_MIN
@ SEL_CHB_MIN
With lowest CHB Q-score.
Definition:
float.hh:1619
Gecode::Space
Computation spaces.
Definition:
core.hpp:1748
Gecode::FloatVarBranch::SEL_DEGREE_MIN
@ SEL_DEGREE_MIN
With smallest degree.
Definition:
float.hh:1613
Gecode::Float::UnknownBranching
Exception: Unknown value or variable selection passed as argument
Definition:
exception.hpp:106
Gecode
Gecode toplevel namespace
Gecode::FloatVarBranch::SEL_SIZE_MIN
@ SEL_SIZE_MIN
With smallest domain size.
Definition:
float.hh:1625
Gecode::FloatVarBranch::SEL_SIZE_MAX
@ SEL_SIZE_MAX
With largest domain size.
Definition:
float.hh:1626
Gecode::MeritAFC
Merit class for AFC.
Definition:
brancher-merit.hpp:112
Gecode::FloatVarBranch::SEL_CHB_MAX
@ SEL_CHB_MAX
With highest CHB Q-score.
Definition:
float.hh:1620
Gecode::FloatVarBranch::SEL_CHB_SIZE_MAX
@ SEL_CHB_SIZE_MAX
With largest CHB Q-score divided by domain size.
Definition:
float.hh:1634
Gecode::ViewSelMax
Select view with largest merit.
Definition:
brancher-view-sel.hpp:340
Gecode::FloatVarBranch::select
Select select(void) const
Return selection strategy.
Definition:
var.hpp:73
Gecode::FloatVarBranch::SEL_CHB_SIZE_MIN
@ SEL_CHB_SIZE_MIN
With smallest CHB Q-score divided by domain size.
Definition:
float.hh:1633
Gecode::VarBranch::tbl
BranchTbl tbl(void) const
Return tie-break limit function.
Definition:
branch-var.hpp:172
Gecode::FloatVarBranch::SEL_MERIT_MIN
@ SEL_MERIT_MIN
With least merit.
Definition:
float.hh:1611
Gecode::FloatVarBranch::SEL_MIN_MIN
@ SEL_MIN_MIN
With smallest min.
Definition:
float.hh:1621
GECODE_NEVER
#define GECODE_NEVER
Assert that this command is never executed.
Definition:
macros.hpp:60
Gecode::FloatVarBranch::SEL_DEGREE_SIZE_MAX
@ SEL_DEGREE_SIZE_MAX
With largest degree divided by domain size.
Definition:
float.hh:1628
branch.hh
Gecode::FloatVarBranch::SEL_AFC_SIZE_MAX
@ SEL_AFC_SIZE_MAX
With largest accumulated failure count divided by domain size.
Definition:
float.hh:1630
Gecode::Float::Branch::viewsel
ViewSel< FloatView > * viewsel(Space &home, const FloatVarBranch &fvb)
Return view selectors for float views.
Definition:
view-sel.cpp:43
Gecode::FloatVarBranch::SEL_MAX_MAX
@ SEL_MAX_MAX
With largest max.
Definition:
float.hh:1624
Gecode::FloatVarBranch::SEL_DEGREE_SIZE_MIN
@ SEL_DEGREE_SIZE_MIN
With smallest degree divided by domain size.
Definition:
float.hh:1627
Gecode::ViewSelMaxTbl
Select view with largest merit taking tie-break limit into account.
Definition:
brancher-view-sel.hpp:360
Gecode::FloatVarBranch::SEL_AFC_MIN
@ SEL_AFC_MIN
With smallest accumulated failure count.
Definition:
float.hh:1615
Gecode::FloatVarBranch::SEL_MIN_MAX
@ SEL_MIN_MAX
With largest min.
Definition:
float.hh:1622
Gecode::FloatVarBranch::SEL_MERIT_MAX
@ SEL_MERIT_MAX
With highest merit.
Definition:
float.hh:1612
Gecode::ViewSelMin
Select view with least merit.
Definition:
brancher-view-sel.hpp:300
Gecode::MeritCHB
Merit class for CHB.
Definition:
brancher-merit.hpp:157
Gecode::FloatVarBranch::SEL_RND
@ SEL_RND
Random (uniform, for tie breaking)
Definition:
float.hh:1610
Gecode::MeritAction
Merit class for action.
Definition:
brancher-merit.hpp:134
Gecode::FloatVarBranch::SEL_MAX_MIN
@ SEL_MAX_MIN
With smallest max.
Definition:
float.hh:1623
Gecode::FloatVarBranch::SEL_ACTION_SIZE_MAX
@ SEL_ACTION_SIZE_MAX
With largest action divided by domain size.
Definition:
float.hh:1632
Gecode::FloatVarBranch::SEL_ACTION_MAX
@ SEL_ACTION_MAX
With highest action.
Definition:
float.hh:1618
Gecode::FloatVarBranch::SEL_AFC_SIZE_MIN
@ SEL_AFC_SIZE_MIN
With smallest accumulated failure count divided by domain size.
Definition:
float.hh:1629