import random
# Верхние и нижние пределы для положительных и отрицательных критериев
positive_lower = 0
positive_upper = 10
negative_lower = -10
negative_upper = -1
# Основные влияющие критерии (4 фактора)
strong_criteria = {
"overload": False, # True если перегрузка
"doors_closed": True, # True если двери закрыты
"maintenance_ok": True, # True если техническое состояние норм
"call_button_pressed": True # True если нажата кнопка вызова
}
# Дополнительные, слабые критерии (не влияют на движение)
weak_criteria = {
"light_on": True, # Пример: свет в лифте
"music_playing": False # Пример: музыка играет
}
# Матрица принятия решений (только для сильных критериев)
# True = лифт может ехать, False = нет
decision_matrix = {
(False, True, True, True): True, # Нет перегрузки, двери закрыты, тех. состояние ок, кнопка нажата
(True, True, True, True): False, # Перегрузка — нельзя ехать
(False, False, True, True): False, # Двери не закрыты — нельзя ехать
(False, True, False, True): False, # Кнопка не нажата — нельзя ехать
# Можно добавить больше комбинаций по желанию
}
def lift_move(strong, weak):
"""Функция движения лифта"""
# Преобразуем сильные критерии в кортеж для матрицы решений
key = tuple(strong[c] for c in ["overload", "doors_closed", "maintenance_ok", "call_button_pressed"])
# Проверка по матрице
if key in decision_matrix:
can_move = decision_matrix[key]
if can_move:
print("Лифт успешно доехал!")
else:
print("Проблема: Лифт не может ехать по текущей матрице решения.")
else:
print("Комбинация сильных критериев не найдена в матрице! Проблема с принятием решения.")
# Вывод состояния слабых критериев (информационно)
print("Слабые критерии:", weak)
def random_test():
# Случайное изменение сильных критериев
for c in strong_criteria:
strong_criteria[c] = random.choice([True, False])
# Случайное изменение слабых критериев
for c in weak_criteria:
weak_criteria[c] = random.choice([True, False])
print("Текущие сильные критерии:", strong_criteria)
lift_move(strong_criteria, weak_criteria)
print("-" * 40)
# Запуск теста несколько раз
for _ in range(5):
random_test()