Я интегрирую экспертную систему 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>
}
Примечание: я не вызываю СБРОС перед каждым ЗАПУСКОМ.