Commit df783d94 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Упрощение.

parent c489eecc
......@@ -152,27 +152,19 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац
);
% Связь с текущими операциями перемещения.
% Если объект задействован в операции перемещения, то participation_as_resource и
% current_moving_operation должны указывать на одну и ту же операцию.
% { Если объект движется, и движется как ресурс, то participation_as_resource должен отображать этот факт. }
constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) (
(current_moving_operation[obj, t] != 0) -> (
(current_moving_operation[obj, t] in operations_that_used_obj_as_resource[obj])
% Если объект задействован в операции перемещения, которая использует его как ресурс,
% то participation_as_resource должен указывать на эту операцию.
constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) (
(current_moving_operation[obj, t] in operations_that_used_obj_as_resource[obj])
->
(participation_as_resource[obj, t] = current_moving_operation[obj, t])
)
);
% Если объект участвует как ресурс в операции перемещения, то это согласованно с current_moving_operation.
constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) (
(participation_as_resource[obj, t] != 0) -> (
(is_moving_operation[participation_as_resource[obj, t]]) -> (
(current_moving_operation[obj, t] != 0)
/\
(participation_as_resource[obj, t] = current_moving_operation[obj, t])
)
)
);
(participation_as_resource[obj, t] = current_moving_operation[obj, t])
);
% Если объект участвует как ресурс в операции перемещения, то это согласованно с current_moving_operation.
constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) (
((participation_as_resource[obj, t] != 0) /\
(is_moving_operation[participation_as_resource[obj, t]])
) -> (participation_as_resource[obj, t] = current_moving_operation[obj, t])
);
% { Объект участвует где-то в качестве ресурса - соответствующая операция обязана быть активной. }
constraint forall (obj in 1..n_moving_obj, t in 1..n_intervals) (
......@@ -181,10 +173,9 @@ array [1..n_operations] of 1..n_locations : operations_destination; % Локац
% От начала операции и до конца её ресурсы не могут измениться (в том числе и для погрузки).
constraint forall (obj in 1..n_moving_obj, t in 1..(n_intervals - 1)) (
(participation_as_resource[obj, t] != 0) ->
(op_status[participation_as_resource[obj, t], t + 1]
-> participation_as_resource[obj, t + 1] = participation_as_resource[obj, t]
)
((participation_as_resource[obj, t] != 0) /\
(op_status[participation_as_resource[obj, t], t + 1])
) -> (participation_as_resource[obj, t + 1] = participation_as_resource[obj, t])
);
int : n_resources_types; % Количество различных типов ресурсов.
......
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