Files
paper-racing-gpi/TEST-RESULTS.md

153 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Результаты тестирования A* алгоритма
## Правила
1. **Обычная дорога (0)**: Ускорение от -2 до +2
2. **Препятствия (1)**: Можно проезжать через камни, но нельзя на них останавливаться
3. **Снег (2)**: Ускорение ограничено диапазоном от -1 до +1
4. **Лёд (3)**: Ускорение нельзя менять (только сохранение текущей скорости)
5. **Чекпоинт (4)**: Ускорение от -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
### Рекомендации для дальнейшего использования
1. Карты с большим количеством льда могут требовать более сложного планирования
2. Снег эффективно замедляет движение, но не блокирует пути
3. Препятствия теперь не являются критичным блокировщиком - можно прыгать через них
4. Комбинированные карты решаются эффективно благодаря адаптивному подходу A*
## Визуализация карт
### Легенда
- `S` - старт
- `1-9` - чекпоинты (номера)
- `●` - чекпоинты с номерами >= 10
- `#` - препятствия (можно проезжать)
- `~` - снег (ускорение ±1)
- `=` - лёд (инерция)
- `.` - путь решения
- ` ` - обычная дорога
## Запуск тестов
```bash
# Компиляция
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