converge-optimization 0.1.1

Optimization algorithms for converge.zone - Rust reimplementation of OR-Tools subset
Documentation
predicate fzn_all_different_int(array [int] of var int: x);
predicate count(array [int] of var int: x, var int: y, var int: c);
predicate fixed_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, int: b);
predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
predicate maximum_int(var int: m, array [int] of var int: x);
predicate minimum_int(var int: m, array [int] of var int: x);
predicate sliding_sum(int: low, int: up, int: seq, array [int] of var int: vs);
predicate sort(array [int] of var int: x, array [int] of var int: y);
predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);
predicate table_int(array [int] of var int: x, array [int, int] of int: t);
predicate var_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b);
var bool: BOOL____00057 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00058 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00059 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00060 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00061 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00062 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00063 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00064 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00065 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00067 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00068 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00069 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00070 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00071 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00072 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00073 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00074 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00075 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00077 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00078 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00079 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00080 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00081 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00082 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00083 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00084 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00085 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00087 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00088 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00089 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00090 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00091 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00092 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00093 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00094 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00095 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00097 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00098 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00099 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00100 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00101 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00102 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00103 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00104 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00105 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00107 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00108 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00109 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00110 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00111 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00112 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00113 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00114 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00115 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00117 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00118 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00119 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00120 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00121 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00122 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00123 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00124 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00125 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00127 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00128 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00129 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00130 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00131 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00132 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00133 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00134 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00135 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00066 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00076 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00086 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00096 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00106 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00116 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00126 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00136 :: is_defined_var :: var_is_introduced;
var 1..8: INT____00137 :: is_defined_var :: var_is_introduced;
var 1..8: num_trees :: output_var = INT____00137;
array [1..64] of var 1..8: parents :: output_array([1..8, 1..8]);
array [1..8] of var 1..8: tree :: output_array([1..8]);
constraint array_bool_or([BOOL____00064, BOOL____00063, BOOL____00062, BOOL____00061, BOOL____00060, BOOL____00059, BOOL____00058, BOOL____00057], BOOL____00065) :: defines_var(BOOL____00065);
constraint array_bool_or([BOOL____00074, BOOL____00073, BOOL____00072, BOOL____00071, BOOL____00070, BOOL____00069, BOOL____00068, BOOL____00067], BOOL____00075) :: defines_var(BOOL____00075);
constraint array_bool_or([BOOL____00084, BOOL____00083, BOOL____00082, BOOL____00081, BOOL____00080, BOOL____00079, BOOL____00078, BOOL____00077], BOOL____00085) :: defines_var(BOOL____00085);
constraint array_bool_or([BOOL____00094, BOOL____00093, BOOL____00092, BOOL____00091, BOOL____00090, BOOL____00089, BOOL____00088, BOOL____00087], BOOL____00095) :: defines_var(BOOL____00095);
constraint array_bool_or([BOOL____00104, BOOL____00103, BOOL____00102, BOOL____00101, BOOL____00100, BOOL____00099, BOOL____00098, BOOL____00097], BOOL____00105) :: defines_var(BOOL____00105);
constraint array_bool_or([BOOL____00114, BOOL____00113, BOOL____00112, BOOL____00111, BOOL____00110, BOOL____00109, BOOL____00108, BOOL____00107], BOOL____00115) :: defines_var(BOOL____00115);
constraint array_bool_or([BOOL____00124, BOOL____00123, BOOL____00122, BOOL____00121, BOOL____00120, BOOL____00119, BOOL____00118, BOOL____00117], BOOL____00125) :: defines_var(BOOL____00125);
constraint array_bool_or([BOOL____00134, BOOL____00133, BOOL____00132, BOOL____00131, BOOL____00130, BOOL____00129, BOOL____00128, BOOL____00127], BOOL____00135) :: defines_var(BOOL____00135);
constraint array_var_int_element(parents[1], tree, parents[9]);
constraint array_var_int_element(parents[2], tree, parents[10]);
constraint array_var_int_element(parents[3], tree, parents[11]);
constraint array_var_int_element(parents[4], tree, parents[12]);
constraint array_var_int_element(parents[5], tree, parents[13]);
constraint array_var_int_element(parents[6], tree, parents[14]);
constraint array_var_int_element(parents[7], tree, parents[15]);
constraint array_var_int_element(parents[8], tree, parents[16]);
constraint array_var_int_element(parents[9], tree, parents[17]);
constraint array_var_int_element(parents[10], tree, parents[18]);
constraint array_var_int_element(parents[11], tree, parents[19]);
constraint array_var_int_element(parents[12], tree, parents[20]);
constraint array_var_int_element(parents[13], tree, parents[21]);
constraint array_var_int_element(parents[14], tree, parents[22]);
constraint array_var_int_element(parents[15], tree, parents[23]);
constraint array_var_int_element(parents[16], tree, parents[24]);
constraint array_var_int_element(parents[17], tree, parents[25]);
constraint array_var_int_element(parents[18], tree, parents[26]);
constraint array_var_int_element(parents[19], tree, parents[27]);
constraint array_var_int_element(parents[20], tree, parents[28]);
constraint array_var_int_element(parents[21], tree, parents[29]);
constraint array_var_int_element(parents[22], tree, parents[30]);
constraint array_var_int_element(parents[23], tree, parents[31]);
constraint array_var_int_element(parents[24], tree, parents[32]);
constraint array_var_int_element(parents[25], tree, parents[33]);
constraint array_var_int_element(parents[26], tree, parents[34]);
constraint array_var_int_element(parents[27], tree, parents[35]);
constraint array_var_int_element(parents[28], tree, parents[36]);
constraint array_var_int_element(parents[29], tree, parents[37]);
constraint array_var_int_element(parents[30], tree, parents[38]);
constraint array_var_int_element(parents[31], tree, parents[39]);
constraint array_var_int_element(parents[32], tree, parents[40]);
constraint array_var_int_element(parents[33], tree, parents[41]);
constraint array_var_int_element(parents[34], tree, parents[42]);
constraint array_var_int_element(parents[35], tree, parents[43]);
constraint array_var_int_element(parents[36], tree, parents[44]);
constraint array_var_int_element(parents[37], tree, parents[45]);
constraint array_var_int_element(parents[38], tree, parents[46]);
constraint array_var_int_element(parents[39], tree, parents[47]);
constraint array_var_int_element(parents[40], tree, parents[48]);
constraint array_var_int_element(parents[41], tree, parents[49]);
constraint array_var_int_element(parents[42], tree, parents[50]);
constraint array_var_int_element(parents[43], tree, parents[51]);
constraint array_var_int_element(parents[44], tree, parents[52]);
constraint array_var_int_element(parents[45], tree, parents[53]);
constraint array_var_int_element(parents[46], tree, parents[54]);
constraint array_var_int_element(parents[47], tree, parents[55]);
constraint array_var_int_element(parents[48], tree, parents[56]);
constraint array_var_int_element(parents[49], tree, parents[57]);
constraint array_var_int_element(parents[50], tree, parents[58]);
constraint array_var_int_element(parents[51], tree, parents[59]);
constraint array_var_int_element(parents[52], tree, parents[60]);
constraint array_var_int_element(parents[53], tree, parents[61]);
constraint array_var_int_element(parents[54], tree, parents[62]);
constraint array_var_int_element(parents[55], tree, parents[63]);
constraint array_var_int_element(parents[56], tree, parents[64]);
constraint bool2int(BOOL____00065, INT____00066) :: defines_var(INT____00066);
constraint bool2int(BOOL____00075, INT____00076) :: defines_var(INT____00076);
constraint bool2int(BOOL____00085, INT____00086) :: defines_var(INT____00086);
constraint bool2int(BOOL____00095, INT____00096) :: defines_var(INT____00096);
constraint bool2int(BOOL____00105, INT____00106) :: defines_var(INT____00106);
constraint bool2int(BOOL____00115, INT____00116) :: defines_var(INT____00116);
constraint bool2int(BOOL____00125, INT____00126) :: defines_var(INT____00126);
constraint bool2int(BOOL____00135, INT____00136) :: defines_var(INT____00136);
constraint int_eq(1, tree[1]);
constraint int_eq(1, tree[5]);
constraint int_eq(3, tree[2]);
constraint int_eq(3, tree[6]);
constraint int_eq(5, tree[3]);
constraint int_eq(5, tree[8]);
constraint int_eq(7, tree[4]);
constraint int_eq(7, tree[7]);
constraint int_eq(parents[1], tree[1]);
constraint int_eq(parents[2], tree[2]);
constraint int_eq(parents[3], tree[3]);
constraint int_eq(parents[4], tree[4]);
constraint int_eq(parents[5], tree[5]);
constraint int_eq(parents[6], tree[6]);
constraint int_eq(parents[7], tree[7]);
constraint int_eq(parents[8], tree[8]);
constraint int_eq_reif(parents[57], 1, BOOL____00057) :: defines_var(BOOL____00057);
constraint int_eq_reif(parents[57], 2, BOOL____00067) :: defines_var(BOOL____00067);
constraint int_eq_reif(parents[57], 3, BOOL____00077) :: defines_var(BOOL____00077);
constraint int_eq_reif(parents[57], 4, BOOL____00087) :: defines_var(BOOL____00087);
constraint int_eq_reif(parents[57], 5, BOOL____00097) :: defines_var(BOOL____00097);
constraint int_eq_reif(parents[57], 6, BOOL____00107) :: defines_var(BOOL____00107);
constraint int_eq_reif(parents[57], 7, BOOL____00117) :: defines_var(BOOL____00117);
constraint int_eq_reif(parents[57], 8, BOOL____00127) :: defines_var(BOOL____00127);
constraint int_eq_reif(parents[58], 1, BOOL____00058) :: defines_var(BOOL____00058);
constraint int_eq_reif(parents[58], 2, BOOL____00068) :: defines_var(BOOL____00068);
constraint int_eq_reif(parents[58], 3, BOOL____00078) :: defines_var(BOOL____00078);
constraint int_eq_reif(parents[58], 4, BOOL____00088) :: defines_var(BOOL____00088);
constraint int_eq_reif(parents[58], 5, BOOL____00098) :: defines_var(BOOL____00098);
constraint int_eq_reif(parents[58], 6, BOOL____00108) :: defines_var(BOOL____00108);
constraint int_eq_reif(parents[58], 7, BOOL____00118) :: defines_var(BOOL____00118);
constraint int_eq_reif(parents[58], 8, BOOL____00128) :: defines_var(BOOL____00128);
constraint int_eq_reif(parents[59], 1, BOOL____00059) :: defines_var(BOOL____00059);
constraint int_eq_reif(parents[59], 2, BOOL____00069) :: defines_var(BOOL____00069);
constraint int_eq_reif(parents[59], 3, BOOL____00079) :: defines_var(BOOL____00079);
constraint int_eq_reif(parents[59], 4, BOOL____00089) :: defines_var(BOOL____00089);
constraint int_eq_reif(parents[59], 5, BOOL____00099) :: defines_var(BOOL____00099);
constraint int_eq_reif(parents[59], 6, BOOL____00109) :: defines_var(BOOL____00109);
constraint int_eq_reif(parents[59], 7, BOOL____00119) :: defines_var(BOOL____00119);
constraint int_eq_reif(parents[59], 8, BOOL____00129) :: defines_var(BOOL____00129);
constraint int_eq_reif(parents[60], 1, BOOL____00060) :: defines_var(BOOL____00060);
constraint int_eq_reif(parents[60], 2, BOOL____00070) :: defines_var(BOOL____00070);
constraint int_eq_reif(parents[60], 3, BOOL____00080) :: defines_var(BOOL____00080);
constraint int_eq_reif(parents[60], 4, BOOL____00090) :: defines_var(BOOL____00090);
constraint int_eq_reif(parents[60], 5, BOOL____00100) :: defines_var(BOOL____00100);
constraint int_eq_reif(parents[60], 6, BOOL____00110) :: defines_var(BOOL____00110);
constraint int_eq_reif(parents[60], 7, BOOL____00120) :: defines_var(BOOL____00120);
constraint int_eq_reif(parents[60], 8, BOOL____00130) :: defines_var(BOOL____00130);
constraint int_eq_reif(parents[61], 1, BOOL____00061) :: defines_var(BOOL____00061);
constraint int_eq_reif(parents[61], 2, BOOL____00071) :: defines_var(BOOL____00071);
constraint int_eq_reif(parents[61], 3, BOOL____00081) :: defines_var(BOOL____00081);
constraint int_eq_reif(parents[61], 4, BOOL____00091) :: defines_var(BOOL____00091);
constraint int_eq_reif(parents[61], 5, BOOL____00101) :: defines_var(BOOL____00101);
constraint int_eq_reif(parents[61], 6, BOOL____00111) :: defines_var(BOOL____00111);
constraint int_eq_reif(parents[61], 7, BOOL____00121) :: defines_var(BOOL____00121);
constraint int_eq_reif(parents[61], 8, BOOL____00131) :: defines_var(BOOL____00131);
constraint int_eq_reif(parents[62], 1, BOOL____00062) :: defines_var(BOOL____00062);
constraint int_eq_reif(parents[62], 2, BOOL____00072) :: defines_var(BOOL____00072);
constraint int_eq_reif(parents[62], 3, BOOL____00082) :: defines_var(BOOL____00082);
constraint int_eq_reif(parents[62], 4, BOOL____00092) :: defines_var(BOOL____00092);
constraint int_eq_reif(parents[62], 5, BOOL____00102) :: defines_var(BOOL____00102);
constraint int_eq_reif(parents[62], 6, BOOL____00112) :: defines_var(BOOL____00112);
constraint int_eq_reif(parents[62], 7, BOOL____00122) :: defines_var(BOOL____00122);
constraint int_eq_reif(parents[62], 8, BOOL____00132) :: defines_var(BOOL____00132);
constraint int_eq_reif(parents[63], 1, BOOL____00063) :: defines_var(BOOL____00063);
constraint int_eq_reif(parents[63], 2, BOOL____00073) :: defines_var(BOOL____00073);
constraint int_eq_reif(parents[63], 3, BOOL____00083) :: defines_var(BOOL____00083);
constraint int_eq_reif(parents[63], 4, BOOL____00093) :: defines_var(BOOL____00093);
constraint int_eq_reif(parents[63], 5, BOOL____00103) :: defines_var(BOOL____00103);
constraint int_eq_reif(parents[63], 6, BOOL____00113) :: defines_var(BOOL____00113);
constraint int_eq_reif(parents[63], 7, BOOL____00123) :: defines_var(BOOL____00123);
constraint int_eq_reif(parents[63], 8, BOOL____00133) :: defines_var(BOOL____00133);
constraint int_eq_reif(parents[64], 1, BOOL____00064) :: defines_var(BOOL____00064);
constraint int_eq_reif(parents[64], 2, BOOL____00074) :: defines_var(BOOL____00074);
constraint int_eq_reif(parents[64], 3, BOOL____00084) :: defines_var(BOOL____00084);
constraint int_eq_reif(parents[64], 4, BOOL____00094) :: defines_var(BOOL____00094);
constraint int_eq_reif(parents[64], 5, BOOL____00104) :: defines_var(BOOL____00104);
constraint int_eq_reif(parents[64], 6, BOOL____00114) :: defines_var(BOOL____00114);
constraint int_eq_reif(parents[64], 7, BOOL____00124) :: defines_var(BOOL____00124);
constraint int_eq_reif(parents[64], 8, BOOL____00134) :: defines_var(BOOL____00134);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00137, INT____00066, INT____00076, INT____00086, INT____00096, INT____00106, INT____00116, INT____00126, INT____00136], 0) :: defines_var(INT____00137);
solve  :: int_search([parents[1], parents[2], parents[3], parents[4], parents[5], parents[6], parents[7], parents[8], parents[9], parents[10], parents[11], parents[12], parents[13], parents[14], parents[15], parents[16], parents[17], parents[18], parents[19], parents[20], parents[21], parents[22], parents[23], parents[24], parents[25], parents[26], parents[27], parents[28], parents[29], parents[30], parents[31], parents[32], parents[33], parents[34], parents[35], parents[36], parents[37], parents[38], parents[39], parents[40], parents[41], parents[42], parents[43], parents[44], parents[45], parents[46], parents[47], parents[48], parents[49], parents[50], parents[51], parents[52], parents[53], parents[54], parents[55], parents[56], parents[57], parents[58], parents[59], parents[60], parents[61], parents[62], parents[63], parents[64], tree[1], tree[2], tree[3], tree[4], tree[5], tree[6], tree[7], tree[8], INT____00137], first_fail, indomain_min, complete) satisfy;