main page
modules
namespaces
classes
files
Gecode home
Generated on Mon Feb 8 2021 00:00:00 for Gecode by
doxygen
1.8.20
gecode
set
branch
val-sel-commit.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
* 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/set/branch.hh
>
35
36
namespace
Gecode
{
namespace
Set {
namespace
Branch {
37
38
ValSelCommitBase<SetView,int>*
39
valselcommit
(
Space
& home,
const
SetValBranch
& svb) {
40
switch
(svb.
select
()) {
41
case
SetValBranch::SEL_MIN_INC
:
42
return
new
(home)
ValSelCommit<ValSelMin,ValCommitInc>
(home,svb);
43
case
SetValBranch::SEL_MIN_EXC
:
44
return
new
(home)
ValSelCommit<ValSelMin,ValCommitExc>
(home,svb);
45
case
SetValBranch::SEL_MED_INC
:
46
return
new
(home)
ValSelCommit<ValSelMed,ValCommitInc>
(home,svb);
47
case
SetValBranch::SEL_MED_EXC
:
48
return
new
(home)
ValSelCommit<ValSelMed,ValCommitExc>
(home,svb);
49
case
SetValBranch::SEL_MAX_INC
:
50
return
new
(home)
ValSelCommit<ValSelMax,ValCommitInc>
(home,svb);
51
case
SetValBranch::SEL_MAX_EXC
:
52
return
new
(home)
ValSelCommit<ValSelMax,ValCommitExc>
(home,svb);
53
case
SetValBranch::SEL_RND_INC
:
54
return
new
(home)
ValSelCommit<ValSelRnd,ValCommitInc>
(home,svb);
55
case
SetValBranch::SEL_RND_EXC
:
56
return
new
(home)
ValSelCommit<ValSelRnd,ValCommitExc>
(home,svb);
57
case
SetValBranch::SEL_VAL_COMMIT
:
58
if
(!svb.
commit
()) {
59
return
new
(home)
60
ValSelCommit
<
ValSelFunction<SetView>
,
ValCommitInc
>(home,svb);
61
}
else
{
62
return
new
(home)
63
ValSelCommit
<
ValSelFunction<SetView>
,
ValCommitFunction<SetView>
>(home,svb);
64
}
65
default
:
66
throw
UnknownBranching
(
"Set::branch"
);
67
}
68
}
69
70
ValSelCommitBase<SetView,int>
*
71
valselcommit
(
Space
& home,
const
SetAssign
& sa) {
72
switch
(sa.
select
()) {
73
case
SetAssign::SEL_MIN_INC
:
74
return
new
(home)
ValSelCommit<ValSelMin,ValCommitInc>
(home,sa);
75
case
SetAssign::SEL_MIN_EXC
:
76
return
new
(home)
ValSelCommit<ValSelMin,ValCommitExc>
(home,sa);
77
case
SetAssign::SEL_MED_INC
:
78
return
new
(home)
ValSelCommit<ValSelMed,ValCommitInc>
(home,sa);
79
case
SetAssign::SEL_MED_EXC
:
80
return
new
(home)
ValSelCommit<ValSelMed,ValCommitExc>
(home,sa);
81
case
SetAssign::SEL_MAX_INC
:
82
return
new
(home)
ValSelCommit<ValSelMax,ValCommitInc>
(home,sa);
83
case
SetAssign::SEL_MAX_EXC
:
84
return
new
(home)
ValSelCommit<ValSelMax,ValCommitExc>
(home,sa);
85
case
SetAssign::SEL_RND_INC
:
86
return
new
(home)
ValSelCommit<ValSelRnd,ValCommitInc>
(home,sa);
87
case
SetAssign::SEL_RND_EXC
:
88
return
new
(home)
ValSelCommit<ValSelRnd,ValCommitExc>
(home,sa);
89
case
SetAssign::SEL_VAL_COMMIT
:
90
if
(!sa.
commit
()) {
91
return
new
(home)
92
ValSelCommit
<
ValSelFunction<SetView>
,
ValCommitInc
>(home,sa);
93
}
else
{
94
return
new
(home)
95
ValSelCommit
<
ValSelFunction<SetView>
,
ValCommitFunction<SetView>
>(home,sa);
96
}
97
default
:
98
throw
UnknownBranching
(
"Set::assign"
);
99
}
100
}
101
102
}}}
103
104
// STATISTICS: set-branch
105
Gecode::SetAssign::SEL_MED_INC
@ SEL_MED_INC
Include median element (rounding downwards)
Definition:
set.hh:1523
Gecode::Set::Branch::valselcommit
ValSelCommitBase< SetView, int > * valselcommit(Space &home, const SetValBranch &svb)
Return value and commit for set views.
Definition:
val-sel-commit.cpp:39
Gecode::SetValBranch::select
Return selection strategy Select select(void) const
Definition:
val.hpp:49
Gecode::SetValBranch
Which values to select for branching first.
Definition:
set.hh:1447
Gecode::SetAssign::SEL_MED_EXC
@ SEL_MED_EXC
Exclude median element (rounding downwards)
Definition:
set.hh:1524
Gecode::SetValBranch::SEL_MED_INC
@ SEL_MED_INC
Include median element (rounding downwards)
Definition:
set.hh:1453
Gecode::Space
Computation spaces.
Definition:
core.hpp:1742
Gecode::SetAssign::SEL_RND_EXC
@ SEL_RND_EXC
Exclude random element.
Definition:
set.hh:1528
Gecode::SetAssign
Which value to select for assignment.
Definition:
set.hh:1517
Gecode::ValBranch::commit
BranchCommit commit(void) const
Return commit function.
Definition:
val.hpp:102
Gecode::SetValBranch::SEL_MAX_INC
@ SEL_MAX_INC
Include largest element.
Definition:
set.hh:1455
Gecode::Int::UnknownBranching
Exception: Unknown value or variable selection passed as argument
Definition:
exception.hpp:108
Gecode::SetAssign::select
Return selection strategy Select select(void) const
Definition:
assign.hpp:49
Gecode::SetAssign::SEL_MIN_INC
@ SEL_MIN_INC
Include smallest element.
Definition:
set.hh:1521
Gecode
Gecode toplevel namespace
Gecode::ValSelFunction
User-defined value selection.
Definition:
val-sel.hpp:67
Gecode::SetAssign::SEL_MAX_EXC
@ SEL_MAX_EXC
Exclude largest element.
Definition:
set.hh:1526
Gecode::ValSelCommit
Class for value selection and commit.
Definition:
val-sel-commit.hpp:91
Gecode::SetValBranch::SEL_MAX_EXC
@ SEL_MAX_EXC
Exclude largest element.
Definition:
set.hh:1456
Gecode::SetAssign::SEL_VAL_COMMIT
@ SEL_VAL_COMMIT
Select value according to user-defined functions.
Definition:
set.hh:1529
Gecode::SetAssign::SEL_MIN_EXC
@ SEL_MIN_EXC
Exclude smallest element.
Definition:
set.hh:1522
Gecode::SetValBranch::SEL_MED_EXC
@ SEL_MED_EXC
Exclude median element (rounding downwards)
Definition:
set.hh:1454
Gecode::SetValBranch::SEL_RND_INC
@ SEL_RND_INC
Include random element.
Definition:
set.hh:1457
Gecode::SetValBranch::SEL_MIN_INC
@ SEL_MIN_INC
Include smallest element.
Definition:
set.hh:1451
Gecode::ValSelCommitBase
Base class for value selection and commit.
Definition:
val-sel-commit.hpp:44
Gecode::Set::Branch::ValCommitInc
Value commit class for inclusion.
Definition:
branch.hh:360
Gecode::SetAssign::SEL_MAX_INC
@ SEL_MAX_INC
Include largest element.
Definition:
set.hh:1525
branch.hh
Gecode::SetValBranch::SEL_VAL_COMMIT
@ SEL_VAL_COMMIT
Select value according to user-defined functions.
Definition:
set.hh:1459
Gecode::ValCommitFunction
Class for user-defined value commit.
Definition:
val-commit.hpp:67
Gecode::SetValBranch::SEL_MIN_EXC
@ SEL_MIN_EXC
Exclude smallest element.
Definition:
set.hh:1452
Gecode::SetValBranch::SEL_RND_EXC
@ SEL_RND_EXC
Exclude random element.
Definition:
set.hh:1458
Gecode::SetAssign::SEL_RND_INC
@ SEL_RND_INC
Include random element.
Definition:
set.hh:1527