From b69854c2fe7b37e6105a08e088a5eacfbabad245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=81=D0=B5=D0=BB=D1=91=D0=B2=20=D0=92=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Mon, 13 May 2019 23:41:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=20=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constraints/conversion_2.mzn | 1 + ...nversion_2_with_partial_cargo_operations.mzn | 17 ++++------------- src/inport/ConversionUtil.java | 3 +++ 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/constraints/conversion_2.mzn b/src/constraints/conversion_2.mzn index 5a93443..0d63975 100644 --- a/src/constraints/conversion_2.mzn +++ b/src/constraints/conversion_2.mzn @@ -366,6 +366,7 @@ array [0..n_operations] of 0..n_locations : operations_destination; % Локац array [1..n_fixed_op] of set of 1..n_moving_obj : fixed_op_resources; array [1..n_fixed_op] of 1..n_intervals : fixed_op_start; array [1..n_fixed_op] of 1..n_intervals : fixed_op_end; % Включительно. + array [1..n_fixed_op] of int : fixed_op_intensity; array [0..n_operations, 0..n_intervals] of bool : is_fixed; diff --git a/src/constraints/conversion_2_with_partial_cargo_operations.mzn b/src/constraints/conversion_2_with_partial_cargo_operations.mzn index 97a1888..4947639 100644 --- a/src/constraints/conversion_2_with_partial_cargo_operations.mzn +++ b/src/constraints/conversion_2_with_partial_cargo_operations.mzn @@ -367,18 +367,7 @@ array [0..n_operations] of 0..n_locations : operations_destination; % Локац constraint forall (op in 1..n_operations, t in 0..(n_intervals + 1) where not is_moving_operation[op]) ( op_status[op, t] -> (cargo_op_intensity[op, t] > 0) ); -/* - 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 - 1, cargo] + - cargo_flows[storage, t, cargo] + - sum (inv_op in involved_operations[storage, cargo]) ( - loading_op_delta[inv_op] * - op_status[loading_op_n[inv_op], t] - ) - ) - ); -*/ + 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 - 1, cargo] + @@ -397,6 +386,7 @@ array [0..n_operations] of 0..n_locations : operations_destination; % Локац array [1..n_fixed_op] of set of 1..n_moving_obj : fixed_op_resources; array [1..n_fixed_op] of 1..n_intervals : fixed_op_start; array [1..n_fixed_op] of 1..n_intervals : fixed_op_end; % Включительно. + array [1..n_fixed_op] of int : fixed_op_intensity; array [0..n_operations, 0..n_intervals] of bool : is_fixed; @@ -405,7 +395,8 @@ array [0..n_operations] of 0..n_locations : operations_destination; % Локац (op_status[op, t]) /\ forall (obj in fixed_op_resources[no]) ( participation_as_resource[obj, t] = op - ) + ) /\ + (cargo_op_intensity[op, t] = fixed_op_intensity[no]) ) ); diff --git a/src/inport/ConversionUtil.java b/src/inport/ConversionUtil.java index 4f8ee98..6b9872a 100644 --- a/src/inport/ConversionUtil.java +++ b/src/inport/ConversionUtil.java @@ -1308,6 +1308,7 @@ public class ConversionUtil { ArrayList> fixedOpResources = new ArrayList<>(); ArrayList fixedOpStart = new ArrayList<>(); ArrayList fixedOpEnd = new ArrayList<>(); + ArrayList fixedOpIntensity = new ArrayList<>(); class OperationData implements Comparable { private int opId, executorId; @@ -1359,6 +1360,7 @@ public class ConversionUtil { fixedOpResources.add(resources); fixedOpStart.add((int)Math.floor(op.getStart()) + 1); fixedOpEnd.add((int)Math.ceil(op.getDuration() + op.getStart())); + fixedOpIntensity.add((int)Math.ceil(op.getIntensity().orElse(0))); } } @@ -1367,6 +1369,7 @@ public class ConversionUtil { writeArray(writer, "fixed_op_resources", fixedOpResources, ConversionUtil::setToString); writeArray(writer, "fixed_op_start", fixedOpStart); writeArray(writer, "fixed_op_end", fixedOpEnd); + writeArray(writer, "fixed_op_intensity", fixedOpIntensity); locWrite2DArray(writer, "is_fixed", getIsFixedArray(), Objects::toString, true); } -- GitLab