Эта проблема напоминает Shakey , хотя здесь и используется очистка (которая похожа на Roomba - устройство, которое также можно запрограммировать для выполнения этих самых задач).
Если «проблемное пространство» (или комната) достаточно мало, вы можете найти оптимальное решение с помощью простого поиска на основе A *, но, скорее всего, этого не произойдет, поскольку это не приведет к очень интересному проблемы.
Подход машинного обучения, предложенный здесь с использованием генетических алгоритмов, является интересным подходом. Учитывая проблемную область, у вас будет только одно «правило» (действие move-to
, поскольку clean
может быть устранено путем неявной очистки любого квадрата, на который вы двигаетесь, который является грязным), так что ваш ученик, по сути, научится перемещаться среда. Проблема заключалась бы в том, чтобы создать учащегося, который был бы адаптирован к любому заданному плану этажа, вместо того, чтобы просто научиться чистить очень специфическое пространство.
Какой бы подход вы ни использовали, я бы также подумал о том, чтобы сделать еще один шаг мета-рассуждения, если наборы задач достаточно велики, и использовать разделенный подход, чтобы разделить пол на отдельные области, а затем завоевывать их по одному за раз.
Можете ли вы использовать методы для создания данных для использования в автономном режиме? В этом случае я бы даже подумал о создании «базы данных» оптимальных маршрутов для очистки определенных площадей (от 1x1 до, скажем, 5x5), которые включают все возможные начальные и конечные квадраты. Это похоже на «базы данных эндшпиля», которые игровые ИИ используют для эффективного «решения» игр, когда они достигают определенной глубины (ср. Чинук ).