Commit 31e84e09 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Fixed bug with optimization.

parent 659aa53d
...@@ -342,13 +342,11 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац ...@@ -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) ( constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) (
is_obj_involved_in_cargo_op[obj, t] = ( is_obj_involved_in_cargo_op_as_main_obj[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) /\ (not is_moving_operation[op])) (
\/
exists (op in 1..n_operations where main_obj_of_operation[op] = obj) ( % В качестве главного объекта.
op_status[op, t] op_status[op, t]
) )
) )
...@@ -371,7 +369,7 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац ...@@ -371,7 +369,7 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац
(is_enough_free_resources[op, t] = true) /\ % Достаточно свободных ресурсов на нужном месте. (is_enough_free_resources[op, t] = true) /\ % Достаточно свободных ресурсов на нужном месте.
(forall (conf_op in conflicting_operations[op]) (op_status[op, t] = false)) (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)) -> ( ((is_mooring_op[op] /\ (operations_destination[op] mod 2 = 0)) -> (
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment