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