Обдумал немного, получилось:
В самом простом варианте "все по очереди приоритетов":
1. Надо создавать список целей из которых в каждый момент времени выбирается наиболее приоритетная;
2. Надо отдельно создавать список правил и проверять все правила, имеющие больший или равный приоритет с текущей главной целью;
Робот тупой до невозможности
===============================================
Чуть сложнее:
Введем еще понятие стоимости достижения цели (в простейшем варианте - время, которое нужно затратить на выполнение задачи);
Стоимость достижения цели бывает для одной цели из некоторого положения, либо для набора целей, если целей несколько (но тогда учитывается что следующая цель будет достигаться из предыдущего положения).
В более сложном варианте "пытаемся успеть несколько главных целей":
1. В списке целей у каждой кроме приоритета есть крайний срок;
2. Правила просто имеют некоторый приоритет;
Выбор варианта выполнения задач происходит следующим образом:
1. Среди всех целей выбираем N самых важных (если для не достаточно приоритетов и крайнего времени выполнения, учитываем стоимость из текущего положения);
2. Перебираем все перестановки из этих N задач и определяем оптимальную из них по совокупности вовремя выполненных задач (учитывая приоритет, т.е. если первые несколько приоритетов имеют одинаковое количество решенных задач в каждой совокупности, то выбираем тот вариант, где какой-то приоритет имеет больше решенных задач, если все одинаковые, то выбираем более дешевый по выполнению вариант);
Как только выполнена какая-то задача, полностью пересматриваем порядок выполнения;
Еще можно дополнить алгоритм "памятью выбранных целей" - т.е. если на предыдущем рассмотрении решили что сейчас нужно делать какие-то операции, то при следующем рассмотрении лучше бы эти операции доделать, а то зря планировали этот вариант.
==============================================
Интересный пример для второго варианта - задача роботу побывать в 50 случайно расставленных по помещению точках, в этом случае при одинаковых приоритетах и крайнем времени выполнения робот будет действовать по "жадному алгоритму", но оптимизируя путь между ближайшими к себе N точками