main page
modules
namespaces
classes
files
Gecode home
Generated on Tue Mar 24 2020 14:04:04 for Gecode by
doxygen
1.8.17
gecode
minimodel
channel.hpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main author:
4
* Christian Schulte <schulte@gecode.org>
5
* Guido Tack <tack@gecode.org>
6
*
7
* Copyright:
8
* Christian Schulte, 2018
9
* Guido Tack, 2018
10
*
11
* This file is part of Gecode, the generic constraint
12
* development environment:
13
* http://www.gecode.org
14
*
15
* Permission is hereby granted, free of charge, to any person obtaining
16
* a copy of this software and associated documentation files (the
17
* "Software"), to deal in the Software without restriction, including
18
* without limitation the rights to use, copy, modify, merge, publish,
19
* distribute, sublicense, and/or sell copies of the Software, and to
20
* permit persons to whom the Software is furnished to do so, subject to
21
* the following conditions:
22
*
23
* The above copyright notice and this permission notice shall be
24
* included in all copies or substantial portions of the Software.
25
*
26
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
*
34
*/
35
36
namespace
Gecode
{
37
38
inline
BoolVar
39
channel
(
Home
home,
IntVar
x
,
IntPropLevel
ipl) {
40
(void) ipl;
41
BoolVar
b
(home,0,1);
channel
(home,
b
,
x
);
42
return
b
;
43
}
44
45
inline
IntVar
46
channel
(
Home
home,
BoolVar
b
,
IntPropLevel
ipl) {
47
(void) ipl;
48
IntVar
x
(home,0,1);
channel
(home,
b
,
x
);
49
return
x
;
50
}
51
52
#ifdef GECODE_HAS_FLOAT_VARS
53
inline
IntVar
54
channel
(
Home
home,
FloatVar
f
) {
55
int
min
=
static_cast<
int
>
(
std::max
(
static_cast<
double
>
(
Int::Limits::min
),
56
std::ceil(
f
.min())));
57
int
max
=
static_cast<
int
>
(
std::min
(
static_cast<
double
>
(
Int::Limits::max
),
58
std::floor(
f
.max())));
59
IntVar
x
(home,
min
,
max
);
60
channel
(home,
f
,
x
);
61
return
x
;
62
}
63
#endif
64
65
#ifdef GECODE_HAS_SET_VARS
66
inline
SetVar
67
channel
(
Home
home,
const
IntVarArgs
&
x
,
IntPropLevel
ipl) {
68
(void) ipl;
69
SetVar
s(home,
IntSet::empty
,
Set::Limits::min
,
Set::Limits::max
);
70
rel
(home,
SOT_UNION
,
x
,s);
71
nvalues
(home,
x
,
IRT_EQ
,
expr
(home,
cardinality
(s)));
72
return
s;
73
}
74
#endif
75
76
}
77
78
// STATISTICS: minimodel-any
79
Gecode::x
Post propagator for SetVar x
Definition:
set.hh:767
Gecode::max
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Definition:
arithmetic.cpp:49
Gecode::IntVarArgs
Passing integer variables.
Definition:
int.hh:656
Gecode::IntSet::empty
static const IntSet empty
Empty set.
Definition:
int.hh:283
Gecode::Set::Limits::min
const int min
Smallest allowed integer in integer set.
Definition:
set.hh:99
Gecode::Float::Limits::min
const FloatNum min
Smallest allowed float value.
Definition:
float.hh:846
Gecode::IntPropLevel
IntPropLevel
Propagation levels for integer propagators.
Definition:
int.hh:974
Gecode::nvalues
void nvalues(Home home, const IntVarArgs &x, IntRelType irt, int y, IntPropLevel)
Post propagator for .
Definition:
nvalues.cpp:40
Gecode
Gecode toplevel namespace
Gecode::Set::Limits::max
const int max
Largest allowed integer in integer set.
Definition:
set.hh:97
Gecode::expr
BoolVar expr(Home home, const BoolExpr &e, const IntPropLevels &ipls)
Post Boolean expression and return its value.
Definition:
bool-expr.cpp:629
Gecode::Home
Home class for posting propagators
Definition:
core.hpp:856
Gecode::SOT_UNION
@ SOT_UNION
Union.
Definition:
set.hh:661
Gecode::BoolVar
Boolean integer variables.
Definition:
int.hh:512
Gecode::SetVar
Set variables
Definition:
set.hh:127
Gecode::cardinality
LinIntExpr cardinality(const SetExpr &e)
Cardinality of set expression.
Definition:
set-expr.cpp:817
b
struct Gecode::@602::NNF::@65::@66 b
For binary nodes (and, or, eqv)
Gecode::Int::Limits::max
const int max
Largest allowed integer value.
Definition:
int.hh:116
Gecode::IntVar
Integer variables.
Definition:
int.hh:371
Gecode::rel
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Definition:
rel.cpp:43
Gecode::FloatVar
Float variables.
Definition:
float.hh:870
Gecode::channel
void channel(Home home, FloatVar x0, IntVar x1)
Post propagator for channeling a float and an integer variable .
Definition:
channel.cpp:41
Gecode::Int::Limits::min
const int min
Smallest allowed integer value.
Definition:
int.hh:118
Gecode::IRT_EQ
@ IRT_EQ
Equality ( )
Definition:
int.hh:926
Gecode::min
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Definition:
arithmetic.cpp:67
Gecode::f
Post propagator for f(x \diamond_{\mathit{op}} y) \sim_r z \f$ void rel(Home home
Gecode::Float::Limits::max
const FloatNum max
Largest allowed float value.
Definition:
float.hh:844