From 31e84e0977823222b675db6d5a1945e16db73f30 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: Fri, 26 Apr 2019 14:53:04 +0300 Subject: [PATCH] Fixed bug with optimization. --- src/constraints/conversion_2.mzn | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/constraints/conversion_2.mzn b/src/constraints/conversion_2.mzn index adf4e50..1142afc 100644 --- a/src/constraints/conversion_2.mzn +++ b/src/constraints/conversion_2.mzn @@ -342,13 +342,11 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац ); % Участвует ли данный объект в операции грузообработки в качестве главного. - array [1..n_moving_obj, 1..n_intervals] of var bool : is_obj_involved_in_cargo_op; + array [1..n_moving_obj, 1..n_intervals] of var bool : is_obj_involved_in_cargo_op_as_main_obj; constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) ( - is_obj_involved_in_cargo_op[obj, t] = ( - ((participation_as_resource[obj, t] != 0) /\ (current_moving_operation[obj, t] = 0)) % В качестве ресурса. - \/ - exists (op in 1..n_operations where main_obj_of_operation[op] = obj) ( % В качестве главного объекта. + is_obj_involved_in_cargo_op_as_main_obj[obj, t] = ( + exists (op in 1..n_operations where (main_obj_of_operation[op] = obj) /\ (not is_moving_operation[op])) ( op_status[op, t] ) ) @@ -371,7 +369,7 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац (is_enough_free_resources[op, t] = true) /\ % Достаточно свободных ресурсов на нужном месте. (forall (conf_op in conflicting_operations[op]) (op_status[op, t] = false)) /\ % Не выполняется ни одной конфликтующей операции. - (is_moving_operation[op] -> not is_obj_involved_in_cargo_op[main_obj_of_operation[op], t]) + (is_moving_operation[op] -> not is_obj_involved_in_cargo_op_as_main_obj[main_obj_of_operation[op], t]) /\ % Если это операция перемещения, то главный объект % не участвует в операциях погрузки. ((is_mooring_op[op] /\ (operations_destination[op] mod 2 = 0)) -> ( -- GitLab