6.7 KiB
Результаты тестирования A* алгоритма с новыми правилами
Новые правила
- Препятствия: Можно проезжать через камни, но нельзя на них останавливаться
- Снег (тип 2): Ускорение ограничено диапазоном от -1 до +1
- Лёд (тип 3): Ускорение нельзя менять (только сохранение текущей скорости)
- Обычная дорога (тип 0): Ускорение от -2 до +2
Тестовые карты
Тест 1: test-obstacles.json
Цель: Проверить проезд через препятствия
Описание: Карта 15x11 с большой зоной препятствий (56 клеток) между стартом и чекпоинтом
Результаты:
- ✅ Решение найдено за 4 хода
- ✅ Машина успешно проехала через зону препятствий
- ✅ Траектория: (0,10) → (2,10) → (6,9) → (11,6) → (14,1)
- Максимальная скорость: 8
- Время работы: 0.04 сек
- Итераций: 24
Вывод: Алгоритм корректно проезжает через препятствия, не останавливаясь на них.
Тест 2: test-snow.json
Цель: Проверить ограничение ускорения на снегу
Описание: Карта 15x9 с большой зоной снега (49 клеток) между стартом и чекпоинтом
Результаты:
- ✅ Решение найдено за 3 хода
- ✅ На снегу использовалось ограниченное ускорение: (1,1) и (-1,0)
- ✅ Траектория: (0,8) → (2,6) → (5,5) → (7,4)
- Максимальная скорость: 4
- Время работы: 0.04 сек
- Итераций: 42
Вывод: На снегу ускорение корректно ограничено диапазоном ±1.
Тест 3: test-ice.json
Цель: Проверить инерцию на льду
Описание: Карта 18x9 с большой зоной льда (54 клетки) между стартом и чекпоинтом
Результаты:
- ✅ Решение найдено за 3 хода
- ✅ Машина не останавливалась на льду
- ✅ Траектория: (0,8) → (2,8) → (6,7) → (9,4)
- Максимальная скорость: 6
- Время работы: 0.04 сек
- Итераций: 34
Вывод: Алгоритм успешно обходит или проходит через лёд без остановки.
Тест 4: test-combined.json
Цель: Проверить комбинацию всех типов поверхностей
Описание: Карта 20x15 с 4 чекпоинтами и всеми типами поверхностей:
- 16 препятствий
- 24 клетки снега
- 15 клеток льда
Результаты:
- ✅ Решение найдено за 9 ходов
- ✅ Собраны все 4 чекпоинта
- ✅ Проезд через препятствия: шаги 3-4
- ✅ Движение по снегу с ограниченным ускорением: шаги 6-7
- ✅ Проход через/около льда без остановки: шаги 8-9
- Максимальная скорость: 6
- Время работы: 0.04 сек
- Итераций: 21
Детальный путь:
Шаг 0: (0,14) Скор=(0,0) Ускор=(0,0)
Шаг 1: (1,12) Скор=(1,-2) Ускор=(1,-2)
Шаг 2: (3,12) Скор=(2,0) Ускор=(1,2) ✓ Чекпоинт #1
Шаг 3: (7,12) Скор=(4,0) Ускор=(2,0)
Шаг 4: (9,10) Скор=(2,-2) Ускор=(-2,-2)
Шаг 5: (9,9) Скор=(0,-1) Ускор=(-2,1) ✓ Чекпоинт #2
Шаг 6: (11,7) Скор=(2,-2) Ускор=(2,-1)
Шаг 7: (12,6) Скор=(1,-1) Ускор=(-1,1) ✓ Чекпоинт #3 (на снегу)
Шаг 8: (15,3) Скор=(3,-3) Ускор=(2,-2)
Шаг 9: (17,2) Скор=(2,-1) Ускор=(-1,2) ✓ Чекпоинт #4
Вывод: Алгоритм корректно работает со всеми типами поверхностей одновременно.
Общие выводы
Успешные проверки
✅ Препятствия можно проезжать, нельзя останавливаться
✅ На снегу ускорение ограничено ±1
✅ На льду ускорение нельзя менять
✅ Все типы поверхностей работают в комбинации
✅ Алгоритм быстро находит оптимальные решения
Производительность
- Все тесты выполнились за 0.04 секунды
- Количество итераций: от 21 до 42
- Максимальный размер открытого множества: от 101 до 256
Рекомендации для дальнейшего использования
- Карты с большим количеством льда могут требовать более сложного планирования
- Снег эффективно замедляет движение, но не блокирует пути
- Препятствия теперь не являются критичным блокировщиком - можно прыгать через них
- Комбинированные карты решаются эффективно благодаря адаптивному подходу A*
Визуализация карт
Легенда
S- старт1-9- чекпоинты (номера)●- чекпоинты с номерами >= 10#- препятствия (можно проезжать)~- снег (ускорение ±1)=- лёд (инерция).- путь решения- обычная дорога
Запуск тестов
# Компиляция
dotnet build racing-astar.csproj
# Тест 1: Препятствия
./bin/Debug/net8.0/racing-astar maps/test-obstacles.json
# Тест 2: Снег
./bin/Debug/net8.0/racing-astar maps/test-snow.json
# Тест 3: Лёд
./bin/Debug/net8.0/racing-astar maps/test-ice.json
# Тест 4: Комбинированная карта
./bin/Debug/net8.0/racing-astar maps/test-combined.json
Дата тестирования
19 октября 2025