Загрузка данных


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()