Главная arrow книги arrow Копия Глава 11. Основы планирования arrow Пример: мир блоков
Пример: мир блоков

Одна из наиболее широко известных проблемных областей планирования известна под названием мира блоков. Эта проблемная область состоит из множества блоков кубической формы, находящихся на столе. Блоки можно укладывать в столбик, но на верхней поверхности одного блока может быть непосредственно размещен только еще один блок. Робот может брать манипулятором блок и перемещать его в другую позицию — либо на стол, либо на верхнюю поверхность другого блока. С помощью манипулятора может быть взят одновременно только один блок, поэтому невозможно взять блок, на котором стоит еще один блок. Цель всегда заключается в том, что должны быть построены один или несколько столбиков из блоков, а сами задачи формулируются в терминах того, какие блоки находятся над указанными другими блоками. Например, задача может состоять в том, чтобы поставить блок А на Б и блок С на D.

Для указания на то, что блок b находится на блоке х, где х — либо другой блок, либо стол, используется предикат On (b, х). Для перемещения блока b с верхней поверхности блока x на верхнюю поверхность блока у применяется действие Move(b,x,y). Итак, одним из предусловий перемещения bявляется то, что на нем не стоит какой-то другой блок. В логике первого порядка оно может быть представлено с помощью выражения или альтернативного выражения . Эти выражения могут быть сформулированы как предусловия на языке ADL. Но мы могли бы оставаться в рамках языка Strips, введя новый предикат, Clear (x), который является истинным, если на блоке χ ничего нет (верхняя поверхность блока χ свободна).

Действие Move позволяет переместить блок bb с блока x на блок у, если свободны верхние поверхности и блока b, и блока у. После выполнения этого действия верхняя поверхность блока x свободна, а блока у— нет. Формальное описание действия Move в языке Strips состоит в следующем: