Система CLIPS остановлена ​​и не продолжает выполнение

Я интегрирую экспертную систему CLIPS в соответствии с документами APG, спасибо за отличные документы, мне удалось интегрировать CLIPS в мой проект C ++, мое приложение работает постоянно и передает факты в систему CLIPS с помощью метода EnvAssert и вызывает EnvRun, все работает нормально, пока я не получите эту ошибку.

[PRNTUTIL7] Attempt to divide by zero in / function.

[DRIVE1] This error occurred in the join network
   Problem resides in associated join
      Of pattern #1 in rule RULE-1

[PRCCODE4] Execution halted during the actions of defrule RULE-2.

Как только я получаю эту ошибку, дальнейший Assert работает, но Run, похоже, не работает, но я уверен, что есть определенные правила сопоставления, но все еще правила не запускаются при следующем запуске.

Я понял ошибку и могу ее исправить, но не понимаю поведения. Итак, я протестировал его в консоли CLIPS, там, когда сообщалось об ошибке, последовательный запуск работает, как я ожидал, но не в случае моего приложения, я хочу знать основную разницу.

Ссылочный псевдокод приложения:

<code to create and initialize CLIPS environment>
EnvReset()
While(true)
{
   <my code to get facts>
   EnvAsset(Fact)
   EnvRun(-1)
   <my code to receive the generated result facts>
}

Примечание: я не вызываю СБРОС перед каждым ЗАПУСКОМ.


person Vishal Santharam    schedule 22.10.2020    source источник
comment
Попробуйте загрузить самую последнюю версию исходного кода: sourceforge.net/ p / clipsrules / code / HEAD / tree / branch / 63x. При встроенном использовании возникла ошибка, из-за которой не сбрасывался флаг ошибки.   -  person Gary Riley    schedule 22.10.2020
comment
Спасибо, @GaryRiley сейчас попробует и обновит.   -  person Vishal Santharam    schedule 23.10.2020
comment
@GaryRiley Я пробовал тестировать с 63x, но результат тот же, прилагаю тестовый код, который я использовал. К вашему сведению, я загрузил снимок по ссылке, которой вы поделились, и скопировал файлы C из папки CORE в windows \ Source \ CLIPS, скомпилировал CLIPS_MVS_2019 и использовал эту библиотеку для тестирования.   -  person Vishal Santharam    schedule 23.10.2020
comment
Код для сброса флагов ошибок находился в месте выполнения функции EnvRun. Вы можете скачать исправление здесь: sourceforge .net / p / clipsrules / code / HEAD / tree / branch / 63x / core /   -  person Gary Riley    schedule 24.10.2020
comment
@GaryRiley исправление сработало, но небольшая проблема заключается в том, что повестка дня не обновлялась должным образом для последовательных запусков после ошибки. Я попытался распечатать повестку дня с помощью EnvAgenda (ClipsEnv, STDOUT, NULL). При первом запуске он правильно печатает повестку дня, но не для последовательных запусков.   -  person Vishal Santharam    schedule 24.10.2020
comment
Я обновлю другие вызовы API, которым необходимо сбросить флаги ошибок.   -  person Gary Riley    schedule 28.10.2020
comment
Спасибо @GaryRiley, поместите этот комментарий как ответ, я отмечу его как правильный ответ и закрою.   -  person Vishal Santharam    schedule 28.10.2020


Ответы (1)


Исправления для сброса флагов ошибок для вызовов API были проверены в репозитории Subversion на sourceforge: https://sourceforge.net/p/clipsrules/code/HEAD/tree/branches/

person Gary Riley    schedule 29.10.2020