20190198 И.Е. Куриленко, И.Е. Никонов Реализация компьютерных средств обучения технологии построения рапределенных мультиагентных систем В: В заключении упоминается этап тестирования агента, но в презентации отсутствует информация о том как это реализовано в работе? Кроме того, представляет интерес как выполняется верификация и тестирование МАС в целом? О: Приведу пример для агента управления шлагбаумом: Для тестирования агента выделяются его главные цели, в данном случае: Закрытие (открытие) проезда и информирование о поломках. Затем цели делятся на подцели, например, для открытия проезда это - подать команду на открытие шлагбаума, получить с датчиков информацию, что шлагбаум открыт и выключить красный свет на светофоре. Для открытия барьера, например, агенту необходимо подать команду на изменение с параметрами Device="TrafficLight", State="off". Затем необходимо создать список тестов агента для позитивных и негативных сценариев. Для комплекта тестовых скриптов и созданного агента необходимо выполнить тестирование модуля готовыми скриптами. Для завершения цикла разработки модуля необходимо обеспечить, чтобы все тестовые скрипты проходили с ожидаемым результатом. В случае, если при тестировании обнаружены ошибки, информация из логов средства автоматического тестирования может помочь в отладке кода агента анализируя полученные события StateChanged можно легко обнаружить отклонение в поведении тестируемого агента от сценария. Сам агент компилируется в библиотеку (.dll) и тестируется в специальном модуле-тестере, где можно задать входные сообщения для модуля и верификацию его ответной реакции. Также при компиляции у агентов проверяются на корректность обязательные атрибуты (имя, версия, поколение, конечный автомат). При верификации МАС у агентов проверяется наличие связей с другим агентами. При формировании МАС создается ее схема - компонент, определяющий набор агентов и их взаимосвязей. Схема загружается с помощью специального модуля-загрузчика SchemeLoader. В случае если создание экземпляра невозможно, модуль-загрузчик прекращает загрузку схемы. Если все экземпляры успешно созданы, модуль-загрузчик начинает этап установки связей между загруженными экземплярами.Каждый агент из схемы для успешной работы должен получить набор связей с другими агентами(если они ему требуются) и необходимые свойства. Проверенные связи и свойства рассылаются модулем-загрузчиком в специальных сообщениях (Kernel.Activate). Если агент готов принять эти связи и свойства, он обязан выслать модулю-загрузчику ответное сообщение Kernel.ActivateAnswer с аргументом Result=True. В случае если хотя бы один агент отказался принять связи и свойства из схемы, модуль-загрузчик прекращает загрузку схемы. Когда все модули оказываются опрошенными, схема может считаться готовой к работе.