Skip to content

Autotest Docs

Денис Люлин edited this page Mar 31, 2023 · 4 revisions

Iteration 1

Rating system

В "grader_config.py" задаются входные параметры для системы оценивания.

  • dist_grade - словарь, определяющий балл, выставляемый за точность позиционирования дрона. Ключ - максимальное значение расстояния, за которое можно получить балл - элемент, соответствующий ключу.
  • metric - способ подсчета расстояния. Реализовано 3 метрики: манхэттенская, метрика Чебышёва, евклидова.
  • pos_coeff и photo_coeff - пропорция, в которой учитываются расположение дронов и успешные фотографии для выставления оценки. Предполагается, что они неотрицательны и хотя бы один из коэффициентов не равен 0.

Класс Grader в конструкторе принимает список дронов, который выполнял задачу, номер задачи и названия коэффициентов для оценивания. Коэффициенты могут быть переданы списком, кортежем, а также одной строкой. Наличие хотя бы одного коэффициента ("position" или "photo") необходимо для корректной работы.

Методы:

  • __get_distance - определение расстояния между двумя точками по заданной метрике.
  • __get_pos - определение положения дрона в конце выполнения задачи. Пока использована заглушка.
  • __get_expected_pos - определение ожидаемого положения дрона в конце выполнения задачи. Используется для оценки точности расположения дронов.
  • __grade_position - оценка положения дрона. Использует словарь dist_grade и функции, перечисленные выше.
  • __get_photos_count - определение количества фотографий, сделанных дроном в процессе выполнения задачи.
  • __get_expected_photos_count - определение ожидаемого количества фотографий, сделанных дроном в процессе выполнения задачи. Используется для оценки фотографий, сделанных дронами.
  • __grade_photo - оценка дрона за фотографирование. Каждая неуспешная фотография линейно уменьшает оценку.
  • grade - суммарная оценка дронов с учетом используемых коэффициентов оценивания.

Примитивная проверка решений

В "grader/primitive_check.py" определена функция

def primitive_check(code : str) -> bool

Она проверяет код пользователя code на наличие решения (решение не пусто), а также на наличие только правильных команд, интерпретируемых контроллером, с правильными аргументами.

code - строка с командами, разделёнными переносом строки.

Функция возвращает True в случае успешного прохождения проверки, иначе - False.

Для функции примитивной проверки написаны юнит-тесты в запускаемом скрипте "grader/test/primitive_check_test.py". Информация об успешности прохождения тестов выводится в терминал (при добавлении проверки юнит-тестов в CI нужно внедрить это).

Clone this wiki locally