diff --git a/src/constraints/conversion_2.mzn b/src/constraints/conversion_2.mzn index fcaf9eedfdd03238d56c39aaee639f228cc4f116..ba628db8e718829b8b72fe91a6d7309b438267c2 100644 --- a/src/constraints/conversion_2.mzn +++ b/src/constraints/conversion_2.mzn @@ -287,17 +287,15 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац array [1..n_loading_op] of int : loading_op_delta; array [1..n_loading_op] of 1..n_operations : loading_op_n; % Номера среди общего списка операций. - int : involved_operations_max_size; - array [1..n_obj_with_storage, 1..n_cargo_types] of 0..involved_operations_max_size : involved_operations_sizes; - array [1..n_obj_with_storage, 1..n_cargo_types, 1..involved_operations_max_size] of 1..n_loading_op : involved_operations; + array [1..n_obj_with_storage, 1..n_cargo_types] of set of 1..n_loading_op : involved_operations; constraint forall (storage in 1..n_obj_with_storage, cargo in 1..n_cargo_types, t in 1..(n_intervals + 1)) ( - storage_used_volume[storage, t, cargo] == ( + storage_used_volume[storage, t, cargo] = ( storage_used_volume[storage, t - 1, cargo] + cargo_flows[storage, t, cargo] + - sum (inv_op_no in 1..involved_operations_sizes[storage, cargo]) ( - loading_op_delta[involved_operations[storage, cargo, inv_op_no]] * - op_status[loading_op_n[involved_operations[storage, cargo, inv_op_no]], t] + sum (inv_op in involved_operations[storage, cargo]) ( + loading_op_delta[inv_op] * + op_status[loading_op_n[inv_op], t] ) ) ); diff --git a/src/inport/ConversionUtil.java b/src/inport/ConversionUtil.java index a05fb092fcfabe7778cbd4b4e95dafe6a6e12349..0be5821cd8ad1c2c8fd391f1f022e1a5993d12b3 100644 --- a/src/inport/ConversionUtil.java +++ b/src/inport/ConversionUtil.java @@ -768,8 +768,11 @@ public class ConversionUtil { } } writer.write("n_loading_op = " + loadingOpDelta.size() + ";\n"); -// write2DArrayOfSet(writer, "involved_operations", involvedOperations); - write2DArrayOfSetAs3DArray(writer, "involved_operations", involvedOperations); + if (task.isTypified()) { + write2DArrayOfSet(writer, "involved_operations", involvedOperations); + } else { + write2DArrayOfSetAs3DArray(writer, "involved_operations", involvedOperations); + } writeArray(writer, "loading_op_delta", loadingOpDelta); writeArray(writer, "loading_op_n", loadingOpN, (Integer i) -> i + 1); writer.write("\n");