在我的应用程序中,我有许多代理,每个代理都有自己的知识库。
我最初的想法是拥有多个引擎实例,但 swi prolog 最多允许一个实例。
另一种方法是在每个事实和规则中添加一个表示代理 id 的附加术语,但这似乎很麻烦。
例如,而不是:
position(10, 20).
do(action(X)):-...
我不得不到处写:
position(agent0, 10, 20).
do(Agent, action(X)):-...
因为我会一次更新一个代理,即使每次都保存和恢复所有内容也可能没问题,即使我不知道该怎么做。还是使用模块?
分离不同知识库的好方法是什么?