This commit is contained in:
2025-10-20 19:35:38 +05:00
commit 023ccd03d8
42 changed files with 10007 additions and 0 deletions

151
TEST-RESULTS.md Normal file
View File

@@ -0,0 +1,151 @@
# Результаты тестирования A* алгоритма с новыми правилами
## Новые правила
1. **Препятствия**: Можно проезжать через камни, но нельзя на них останавливаться
2. **Снег (тип 2)**: Ускорение ограничено диапазоном от -1 до +1
3. **Лёд (тип 3)**: Ускорение нельзя менять (только сохранение текущей скорости)
4. **Обычная дорога (тип 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
### Рекомендации для дальнейшего использования
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