Остановить повторную активацию

У меня есть правило, которое отменяет тысячи фактов при выполнении определенного условия. Это правило находится в модуле, содержащем два других правила, использующих операторы «не». Мои вопросы:

  1. Пересчитывается ли сеть rete каждый раз, когда первое правило отменяет факт?
  2. Это из-за утверждений «не» в двух других правилах или это все равно произойдет?
  3. Есть ли способ остановить пересчет активаций до тех пор, пока в первом правиле не останется фактов для отзыва?

Спасибо!


person user3870353    schedule 01.09.2014    source источник


Ответы (2)


Точные ответы невозможны без знания закономерностей в правилах, использующих тип изъятых фактов.

Ясно, что если Fact относится к этому типу, а правила №2 и №3 содержат только

not Fact(...constraints...)

ничего грандиозного не должно происходить до тех пор, пока последний из этих Фактов (который соответствует ограничениям, если таковые имеются) не будет удален из рабочей памяти: тогда, возможно, придется создать дополнительный узел, в зависимости от того, что еще не является CE); это может продолжаться в зависимости от того, что следует за не CE, и привести к терминальным узлам, т. Е. Активациям.

Если шаблон, как

Fact(...constraints...)

находится в любом из этих правил, отзыв факта (который соответствует этим ограничениям, если таковые имеются) вызывает немедленные действия в отношении любых ожидающих активаций и удалений узлов в сети, при условии, что он был включен ранее.

Вы мало что можете сделать, чтобы избежать событий в сети Rete.

Тем не менее, необходимость опровергать тысячи фактов довольно пугает. Сколько осталось? Возможно, будет дешевле выбрать несколько избранных и начать все сначала в совершенно новом Rete. Или используйте шаблон проектирования, который не предоставляет движку все эти тысячи одновременно. Или что-то другое.

person laune    schedule 01.09.2014

Мы написали ленивый алгоритм, который позволяет избежать повторного создания частичных совпадений и активаций до тех пор, пока правило не будет потенциально готово к срабатыванию. Будучи ленивым, вы можете использовать заметность, чтобы отсрочить оценку правила. http://blog.athico.com/2013/11/rip-rete-time-to-get-phreaky.html

person Mark Proctor    schedule 15.09.2014