00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "test/flatzinc.hh"
00039
00040 namespace Test { namespace FlatZinc {
00041
00042 namespace {
00044 class Create {
00045 public:
00046
00048 Create(void) {
00049 (void) new FlatZincTest("template_design",
00050 "predicate all_different_int(array [int] of var int: x);\n\
00051 predicate all_equal_int(array [int] of var int: x);\n\
00052 predicate among(var int: n, array [int] of var int: x, set of int: v);\n\
00053 predicate array_bool_lq(array [int] of var bool: x, array [int] of var bool: y);\n\
00054 predicate array_bool_lt(array [int] of var bool: x, array [int] of var bool: y);\n\
00055 predicate array_int_lq(array [int] of var int: x, array [int] of var int: y);\n\
00056 predicate array_int_lt(array [int] of var int: x, array [int] of var int: y);\n\
00057 predicate array_set_partition(array [int] of var set of int: S, set of int: universe);\n\
00058 predicate at_least_int(int: n, array [int] of var int: x, int: v);\n\
00059 predicate at_most_int(int: n, array [int] of var int: x, int: v);\n\
00060 predicate bool_lin_ge(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00061 predicate bool_lin_gt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00062 predicate bool_lin_lt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00063 predicate bool_lin_ne(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00064 predicate count(array [int] of var int: x, var int: y, var int: c);\n\
00065 predicate count_reif(array [int] of var int: x, var int: y, var int: c, var bool: b);\n\
00066 predicate cumulatives(array [int] of var int: s, array [int] of var int: d, array [int] of var int: r, var int: b);\n\
00067 predicate decreasing_bool(array [int] of var bool: x);\n\
00068 predicate decreasing_int(array [int] of var int: x);\n\
00069 predicate disjoint(var set of int: s1, var set of int: s2);\n\
00070 predicate gecode_array_set_element_union(var set of int: x, array [int] of var set of int: y, var set of int: z);\n\
00071 predicate gecode_bin_packing_load(array [int] of var int: l, array [int] of var int: bin, array [int] of int: w, int: minIndex);\n\
00072 predicate gecode_circuit(int: offset, array [int] of var int: x);\n\
00073 predicate gecode_int_set_channel(array [int] of var int: x, int: xoff, array [int] of var set of int: y, int: yoff);\n\
00074 predicate gecode_inverse_set(array [int] of var set of int: f, array [int] of var set of int: invf, int: xoff, int: yoff);\n\
00075 predicate gecode_link_set_to_booleans(var set of int: s, array [int] of var bool: b, int: idx);\n\
00076 predicate gecode_member_bool_reif(array [int] of var bool: x, var bool: y, var bool: b);\n\
00077 predicate gecode_member_int_reif(array [int] of var int: x, var int: y, var bool: b);\n\
00078 predicate gecode_nooverlap(array [int] of var int: x, array [int] of var int: w, array [int] of var int: y, array [int] of var int: h);\n\
00079 predicate gecode_precede(array [int] of var int: x, int: s, int: t);\n\
00080 predicate gecode_precede_set(array [int] of var set of int: x, int: s, int: t);\n\
00081 predicate gecode_range(array [int] of var int: x, int: xoff, var set of int: s, var set of int: t);\n\
00082 predicate gecode_set_weights(array [int] of int: csi, array [int] of int: cs, var set of int: x, var int: y);\n\
00083 predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);\n\
00084 predicate global_cardinality_closed(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);\n\
00085 predicate global_cardinality_low_up(array [int] of var int: x, array [int] of int: cover, array [int] of int: lbound, array [int] of int: ubound);\n\
00086 predicate global_cardinality_low_up_closed(array [int] of var int: x, array [int] of int: cover, array [int] of int: lbound, array [int] of int: ubound);\n\
00087 predicate increasing_bool(array [int] of var bool: x);\n\
00088 predicate increasing_int(array [int] of var int: x);\n\
00089 predicate inverse_offsets(array [int] of var int: f, int: foff, array [int] of var int: invf, int: invfoff);\n\
00090 predicate maximum_int(var int: m, array [int] of var int: x);\n\
00091 predicate member_bool(array [int] of var bool: x, var bool: y);\n\
00092 predicate member_int(array [int] of var int: x, var int: y);\n\
00093 predicate minimum_int(var int: m, array [int] of var int: x);\n\
00094 predicate nvalue(var int: n, array [int] of var int: x);\n\
00095 predicate regular(array [int] of var int: x, int: Q, int: S, array [int, int] of int: d, int: q0, set of int: F);\n\
00096 predicate sort(array [int] of var int: x, array [int] of var int: y);\n\
00097 predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);\n\
00098 predicate table_int(array [int] of var int: x, array [int, int] of int: t);\n\
00099 array [1..7] of int: d = [250, 255, 260, 500, 500, 800, 1100];\n\
00100 var 204..408: INT____00002 :: is_defined_var :: var_is_introduced;\n\
00101 var 0..7344: INT____00003 :: is_defined_var :: var_is_introduced;\n\
00102 var 0..7344: INT____00004 :: is_defined_var :: var_is_introduced;\n\
00103 var 0..7344: INT____00005 :: is_defined_var :: var_is_introduced;\n\
00104 var 0..7344: INT____00006 :: is_defined_var :: var_is_introduced;\n\
00105 var 0..7344: INT____00007 :: is_defined_var :: var_is_introduced;\n\
00106 var 0..7344: INT____00008 :: is_defined_var :: var_is_introduced;\n\
00107 var 0..7344: INT____00009 :: is_defined_var :: var_is_introduced;\n\
00108 var 0..7344: INT____00010 :: is_defined_var :: var_is_introduced;\n\
00109 var 0..7344: INT____00011 :: is_defined_var :: var_is_introduced;\n\
00110 var 0..7344: INT____00012 :: is_defined_var :: var_is_introduced;\n\
00111 var 0..7344: INT____00013 :: is_defined_var :: var_is_introduced;\n\
00112 var 0..7344: INT____00014 :: is_defined_var :: var_is_introduced;\n\
00113 var 0..7344: INT____00015 :: is_defined_var :: var_is_introduced;\n\
00114 var 0..7344: INT____00016 :: is_defined_var :: var_is_introduced;\n\
00115 var 408..816: INT____00017 :: is_defined_var :: var_is_introduced;\n\
00116 var 408..816: Production :: output_var = INT____00017;\n\
00117 array [1..2] of var 1..816: R :: output_array([1..2]);\n\
00118 var 7..408: Surplus;\n\
00119 array [1..14] of var 0..9: p :: output_array([1..7, 1..2]);\n\
00120 constraint array_int_lq([p[7], p[8]], [p[9], p[10]]);\n\
00121 constraint int_div(Production, 2, INT____00002) :: defines_var(INT____00002);\n\
00122 constraint int_le(INT____00002, R[2]);\n\
00123 constraint int_le(R[1], INT____00002);\n\
00124 constraint int_lin_eq([-1, 9], [Surplus, Production], 3665);\n\
00125 constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [p[1], p[3], p[5], p[7], p[9], p[11], p[13]], 9);\n\
00126 constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [p[2], p[4], p[6], p[8], p[10], p[12], p[14]], 9);\n\
00127 constraint int_lin_le([-1, -1], [INT____00003, INT____00005], -250);\n\
00128 constraint int_lin_le([-1, -1], [INT____00004, INT____00006], -255);\n\
00129 constraint int_lin_le([-1, -1], [INT____00007, INT____00008], -260);\n\
00130 constraint int_lin_le([-1, -1], [INT____00009, INT____00010], -500);\n\
00131 constraint int_lin_le([-1, -1], [INT____00011, INT____00012], -500);\n\
00132 constraint int_lin_le([-1, -1], [INT____00013, INT____00014], -800);\n\
00133 constraint int_lin_le([-1, -1], [INT____00015, INT____00016], -1100);\n\
00134 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00003, INT____00005], 500);\n\
00135 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00004, INT____00006], 510);\n\
00136 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00007, INT____00008], 520);\n\
00137 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00009, INT____00010], 1000);\n\
00138 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00011, INT____00012], 1000);\n\
00139 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00013, INT____00014], 1600);\n\
00140 constraint int_lin_le([-1, 1, 1], [Surplus, INT____00015, INT____00016], 2200);\n\
00141 constraint int_lin_le([1, -1, 1, -1], [INT____00003, INT____00004, INT____00005, INT____00006], -1);\n\
00142 constraint int_lin_le([1, 1, -1, -1], [INT____00004, INT____00006, INT____00007, INT____00008], -1);\n\
00143 constraint int_lin_le([1, 1, -1, -1], [INT____00007, INT____00008, INT____00009, INT____00010], -1);\n\
00144 constraint int_lin_le([1, 1, -1, -1], [INT____00011, INT____00012, INT____00013, INT____00014], -1);\n\
00145 constraint int_lin_le([1, 1, -1, -1], [INT____00013, INT____00014, INT____00015, INT____00016], -1);\n\
00146 constraint int_lin_le([-1, 1, 1, 1, 1], [Surplus, INT____00003, INT____00004, INT____00005, INT____00006], 1010);\n\
00147 constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007, INT____00008], 1530);\n\
00148 constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007, INT____00008, INT____00009, INT____00010], 2530);\n\
00149 constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007, INT____00008, INT____00009, INT____00010, INT____00011, INT____00012], 3530);\n\
00150 constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007, INT____00008, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014], 5130);\n\
00151 constraint int_plus(R[1], R[2], INT____00017) :: defines_var(INT____00017);\n\
00152 constraint int_times(p[1], R[1], INT____00003) :: defines_var(INT____00003);\n\
00153 constraint int_times(p[2], R[2], INT____00005) :: defines_var(INT____00005);\n\
00154 constraint int_times(p[3], R[1], INT____00004) :: defines_var(INT____00004);\n\
00155 constraint int_times(p[4], R[2], INT____00006) :: defines_var(INT____00006);\n\
00156 constraint int_times(p[5], R[1], INT____00007) :: defines_var(INT____00007);\n\
00157 constraint int_times(p[6], R[2], INT____00008) :: defines_var(INT____00008);\n\
00158 constraint int_times(p[7], R[1], INT____00009) :: defines_var(INT____00009);\n\
00159 constraint int_times(p[8], R[2], INT____00010) :: defines_var(INT____00010);\n\
00160 constraint int_times(p[9], R[1], INT____00011) :: defines_var(INT____00011);\n\
00161 constraint int_times(p[10], R[2], INT____00012) :: defines_var(INT____00012);\n\
00162 constraint int_times(p[11], R[1], INT____00013) :: defines_var(INT____00013);\n\
00163 constraint int_times(p[12], R[2], INT____00014) :: defines_var(INT____00014);\n\
00164 constraint int_times(p[13], R[1], INT____00015) :: defines_var(INT____00015);\n\
00165 constraint int_times(p[14], R[2], INT____00016) :: defines_var(INT____00016);\n\
00166 solve :: int_search([p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[14], R[1], R[2]], input_order, indomain_min, complete) minimize INT____00017;\n\
00167 ", "Production = 442;\n\
00168 R = array1d(1..2, [167, 275]);\n\
00169 p = array2d(1..7, 1..2, [0, 1, 2, 0, 1, 1, 3, 0, 3, 0, 0, 3, 0, 4]);\n\
00170 ----------\n\
00171 ==========\n\
00172 ");
00173 }
00174 };
00175
00176 Create c;
00177 }
00178
00179 }}
00180
00181