94b2b13d
Pedro Roque
PHACT source
|
1
2
3
4
|
/*
* cl_constraints.h
*
* Created on: 19/11/2014
|
4d26a735
Pedro Roque
Increased recogni...
|
5
|
* Author: pedro
|
94b2b13d
Pedro Roque
PHACT source
|
6
7
8
9
10
|
*/
#ifndef SRC_KERNELS_CL_CONSTRAINTS_H_
#define SRC_KERNELS_CL_CONSTRAINTS_H_
|
4d26a735
Pedro Roque
Increased recogni...
|
11
12
13
14
15
|
// Constraint types
typedef enum {
ALL_DIFFERENT,
AT_LEAST,
AT_MOST,
|
94b2b13d
Pedro Roque
PHACT source
|
16
17
18
|
AT_MOST_ONE,
BOOL2INT,
BOOL_AND,
|
4d26a735
Pedro Roque
Increased recogni...
|
19
20
21
22
23
24
|
BOOL_CLAUSE,
BOOL_OR,
ELEMENT,
ELEMENT_INT_VAR,
ELEMENT_VAR,
EQ,
|
94b2b13d
Pedro Roque
PHACT source
|
25
26
27
|
EQ_VAR,
EXACTLY,
EXACTLY_VAR,
|
94b2b13d
Pedro Roque
PHACT source
|
28
29
|
LE,
LINEAR,
|
4d26a735
Pedro Roque
Increased recogni...
|
30
31
32
33
34
35
|
LINEAR_LT,
LINEAR_NE,
LINEAR_VAR,
LT,
MAX,
MAXIMIZE,
|
94b2b13d
Pedro Roque
PHACT source
|
36
|
MIN,
|
4d26a735
Pedro Roque
Increased recogni...
|
37
38
|
MINIMIZE,
MINUS_EQ,
|
94b2b13d
Pedro Roque
PHACT source
|
39
|
MINUS_NE,
|
4d26a735
Pedro Roque
Increased recogni...
|
40
|
NE,
|
94b2b13d
Pedro Roque
PHACT source
|
41
42
|
SUM,
SUM_PROD,
|
4d26a735
Pedro Roque
Increased recogni...
|
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
SUM_VAR,
VAR_EQ_MINUS,
VAR_EQ_MINUS_ABS,
VAR_EQ_PLUS,
VAR_EQ_TIMES,
N_C_TYPES
} c_kind;
// constraint structure used in kernel
struct cl_constrs_ {
cl_uint v_idx; // index of the first variable constrained by this constraint in cs_vs_idx vector
cl_uint const_idx; // index of the first constant value (if more than one) constrained by this constraint in cs_const_idx vector
cl_uint reif_var_id; // ID of the disjunction variable
cl_uint kind; // constraint type
|
94b2b13d
Pedro Roque
PHACT source
|
57
|
cl_uint c_id; // ID of this constraint
|
94b2b13d
Pedro Roque
PHACT source
|
58
59
60
|
cl_int constant_val; // Constant value for multiple purposes, depending on the constraint type
cl_ushort n_c_vs; // number of constrained variables
cl_ushort n_c_consts; // number of constant values (if more than one) constrained by this constraint in cs_const_idx vector
|
94b2b13d
Pedro Roque
PHACT source
|
61
62
63
64
65
|
cl_char reified; // True if this constraint is reified
cl_char boolean; // True if all the variables constrained by this constraint are boolean
};
typedef struct cl_constrs_ cl_constr;
|
94b2b13d
Pedro Roque
PHACT source
|
66
67
68
69
70
|
// Host configuration
#ifndef __OPENCL_VERSION__
// only for syntax highlighting on cl_propagators
|
4d26a735
Pedro Roque
Increased recogni...
|
71
72
|
#ifndef CS_ALL_DIFFERENT
#define CS_ALL_DIFFERENT 1
|
94b2b13d
Pedro Roque
PHACT source
|
73
|
#define CS_AT_LEAST 1
|
4d26a735
Pedro Roque
Increased recogni...
|
74
75
|
#define CS_AT_MOST 1
#define CS_AT_MOST_ONE 1
|
94b2b13d
Pedro Roque
PHACT source
|
76
|
#define CS_BOOL2INT 1
|
4d26a735
Pedro Roque
Increased recogni...
|
77
|
#define CS_BOOL_AND 1
|
94b2b13d
Pedro Roque
PHACT source
|
78
79
80
81
82
83
84
85
86
87
88
|
#define CS_BOOL_CLAUSE 1
#define CS_BOOL_OR 1
#define CS_ELEMENT 1
#define CS_ELEMENT_INT_VAR 1
#define CS_ELEMENT_VAR 1
#define CS_EQ 1
#define CS_EQ_VAR 1
#define CS_EXACTLY 1
#define CS_EXACTLY_VAR 1
#define CS_LE 1
#define CS_LINEAR 1
|
94b2b13d
Pedro Roque
PHACT source
|
89
|
#define CS_LINEAR_LT 1
|
4d26a735
Pedro Roque
Increased recogni...
|
90
91
92
93
94
95
|
#define CS_LINEAR_NE 1
#define CS_LINEAR_VAR 1
#define CS_LT 1
#define CS_MAX 1
#define CS_MAXIMIZE 1
#define CS_MIN 1
|
94b2b13d
Pedro Roque
PHACT source
|
96
97
98
|
#define CS_MINIMIZE 1
#define CS_MINUS_EQ 1
#define CS_MINUS_NE 1
|
94b2b13d
Pedro Roque
PHACT source
|
99
100
|
#define CS_NE 1
#define CS_SUM 1
|
4d26a735
Pedro Roque
Increased recogni...
|
101
102
103
104
105
106
|
#define CS_SUM_PROD 1
#define CS_SUM_VAR 1
#define CS_VAR_EQ_MINUS 1
#define CS_VAR_EQ_MINUS_ABS 1
#define CS_VAR_EQ_PLUS 1
#define CS_VAR_EQ_TIMES 1
|
94b2b13d
Pedro Roque
PHACT source
|
107
|
|
4d26a735
Pedro Roque
Increased recogni...
|
108
109
|
#define CS_R_ALL_DIFFERENT 1
#define CS_R_AT_LEAST 1
|
94b2b13d
Pedro Roque
PHACT source
|
110
|
#define CS_R_AT_MOST 1
|
94b2b13d
Pedro Roque
PHACT source
|
111
112
|
#define CS_R_AT_MOST_ONE 1
#define CS_R_BOOL2INT 1
|
4d26a735
Pedro Roque
Increased recogni...
|
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#define CS_R_BOOL_AND 1
#define CS_R_BOOL_CLAUSE 1
#define CS_R_BOOL_OR 1
#define CS_R_ELEMENT 1
#define CS_R_ELEMENT_INT_VAR 1
#define CS_R_ELEMENT_VAR 1
#define CS_R_EQ 1
#define CS_R_EQ_VAR 1
#define CS_R_EXACTLY 1
#define CS_R_EXACTLY_VAR 1
#define CS_R_LE 1
#define CS_R_LINEAR 1
#define CS_R_LINEAR_LT 1
#define CS_R_LINEAR_NE 1
#define CS_R_LINEAR_VAR 1
|
94b2b13d
Pedro Roque
PHACT source
|
128
|
#define CS_R_LT 1
|
94b2b13d
Pedro Roque
PHACT source
|
129
130
131
|
#define CS_R_MAX 1
#define CS_R_MAXIMIZE 1
#define CS_R_MIN 1
|
94b2b13d
Pedro Roque
PHACT source
|
132
133
134
135
136
|
#define CS_R_MINIMIZE 1
#define CS_R_MINUS_EQ 1
#define CS_R_MINUS_NE 1
#define CS_R_NE 1
#define CS_R_SUM 1
|
94b2b13d
Pedro Roque
PHACT source
|
137
138
|
#define CS_R_SUM_PROD 1
#define CS_R_SUM_VAR 1
|
4d26a735
Pedro Roque
Increased recogni...
|
139
140
141
142
143
144
|
#define CS_R_VAR_EQ_MINUS 1
#define CS_R_VAR_EQ_MINUS_ABS 1
#define CS_R_VAR_EQ_PLUS 1
#define CS_R_VAR_EQ_TIMES 1
#endif
|
94b2b13d
Pedro Roque
PHACT source
|
145
146
147
|
#endif
#endif /* SRC_CL_CONSTRAINTS_H_ */
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
4d26a735
Pedro Roque
Increased recogni...
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
4d26a735
Pedro Roque
Increased recogni...
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
4d26a735
Pedro Roque
Increased recogni...
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|
94b2b13d
Pedro Roque
PHACT source
|
|
|