// constraint forall (obj in 1..n_moving_obj, t in 1..(n_intervals + 1)) (
||
// is_attended_useful_op_in_cur_loc[obj, t] = (
(is_obj_involved_in_useful_operation[obj, t - 1] == 1) // Учитывает случай когда операция перемещения, из-за которой объект попал в локацию была нужна.
// (is_attended_useful_op_in_cur_loc[obj, t - 1] /\ (m_obj_loc[obj, t - 1] == m_obj_loc[obj, t])) // Предыдущее значение в текущей локации.
)
// \/
);
// is_obj_involved_in_useful_operation[obj, t]
// \/
// Сама оптимизация - если объект
// is_obj_involved_in_useful_operation[obj, t - 1] // Учитывает случай когда операция перемещения, из-за которой объект попал в локацию была нужна.
forall (obj in 1..n_moving_obj, t in 2..(n_intervals + 1)) (
// )
((m_obj_loc[obj, t - 1] != m_obj_loc[obj, t]) && (prev_m_obj_loc[obj, t - 1] == m_obj_loc[obj, t])
// );
) => (is_attended_useful_op_in_cur_loc[obj, t - 1] == 1)
//
);
// // Сама оптимизация - если объект
// constraint forall (obj in 1..n_moving_obj, t in 2..(n_intervals + 1)) (
// Оптимизация - если объект не может совершить в данной локации операции без выхода за границы хранилища, а так же если он
// ((m_obj_loc[obj, t - 1] != m_obj_loc[obj, t]) /\ (prev_m_obj_loc[obj, t - 1] == m_obj_loc[obj, t])
// может уйти только своим ходом, то он либо уходит немедленно, либо остаётся на месте навсегда.
// ) -> is_attended_useful_op_in_cur_loc[obj, t - 1]
// );
// Определение can_obj_theoretically_use_cargo_op.
forall (obj in 1..n_moving_obj, t in 1..(n_intervals + 1)) (
// // Оптимизация - если объект не может совершить в данной локации операции без выхода за границы хранилища, а так же если он
can_obj_theoretically_use_cargo_op[obj, t] == (
// // может уйти только своим ходом, то он либо уходит немедленно, либо остаётся на месте навсегда.
(is_sections_of_moving_obj_empty[obj] == 1)
//
||
// array [0..n_moving_obj, 0..(n_intervals + 1)] of var bool : can_obj_theoretically_use_cargo_op;
or (section in sections_of_moving_obj[obj]) (
// // Определение can_obj_theoretically_use_cargo_op.
(storage_used_volume[section, t - 1] + min_positive_cargo_val[section, main_location[m_obj_loc[obj, t]]] <= max_storage_vol[section])
// constraint forall (obj in 1..n_moving_obj, t in 1..(n_intervals + 1)) (