diff --git a/src/constraints/conversion_2.mzn b/src/constraints/conversion_2.mzn index adf4e503e220fca26102fe7efe1200845e6ac6f9..1142afceb576c513b7f7cade14251c7876c1b053 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)) -> (