Непротиворечивость и допустимость эвристик для часа пикPython

Программы на Python
Anonymous
Непротиворечивость и допустимость эвристик для часа пик

Сообщение Anonymous »

В настоящее время я реализую решатель для Часа пик (очень интересная скользящая головоломка), используя A*. Я тестирую все это с помощью базы данных, содержащей все конфигурации игры, и благодаря различным оптимизациям теперь я могу решить самую сложную конфигурацию менее чем за 3 секунды, и это очень здорово.
Однако ни одна из моих четырех эвристик не может найти минимальные решения во всех 225 интересующих меня конфигурациях (я игнорирую игровые поля с препятствиями), поэтому я предполагаю, что используемые мной эвристики недействительны и непротиворечивы, но, во-первых, я не не знаю почему, и, во-вторых, я не могу придумать более полезной эвристики.
Вот эвристики, которые я использую:
  • Подсчитайте количество полей между красной машиной и выездом
  • Производительность не слишком хорош по сравнению с другими подходами, производительность и результаты (= минимальное количество найденных решений) низкие
  • Последовательность: эвристика уменьшается или остается неизменным по мере продвижения к цели.
  • Приемлемость: Может быть, проблема именно в этом? Не следует переоценивать истинное количество необходимых ходов, но если я посчитаю поля, сумма может оказаться больше, чем ходов, необходимых для решения головоломки.
< ol start="2">
[*]Подсчитайте блокирующие машины между красной машиной и выездом и наказывайте машины, которые не могут двигаться
  • Отличная производительность
  • Согласованность/допустимость: Я предполагаю использование постоянного штрафа в размере 5 на машину могут ли здесь возникнуть проблемы?
  • Считать блокирующие машины, начиная с машин между красными машинами и выход рекурсивно
  • Лучшая производительность и лучшие результаты
  • Последовательность. Я считаю, что эта эвристика последовательна, поскольку количество блокирующих машин будет уменьшаться или оставаться прежним по мере продвижения состояния к цели.
  • Приемлемость : Он считает только машины, а не движения, так что, думаю, переоценка не проблема.
Основываясь на всех моих соображениях и попытках, Я несколько не понимаю, как создать разумную эвристику, которая, во-первых, всегда находит минимальные решения, а во-вторых, достаточно эффективна для поддержания времени выполнения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -rush-hour

Вернуться в «Python»