私のアプリケーションでは、それぞれが独自の知識ベースを持つ多数のエージェントがいます。
私の当初のアイデアは複数のエンジンインスタンスを持つことでしたが、swiプロローグは最大で1つのインスタンスを許可します。
もう1つの方法は、エージェントIDを表す用語を各ファクトとルールに追加することですが、非常に面倒なようです。
たとえば、次の代わりに:
position(10, 20).
do(action(X)):-...
私はどこにでも書く必要があります:
position(agent0, 10, 20).
do(Agent, action(X)):-...
一度に1つのエージェントを更新するので、その方法がわからなくても、毎回すべてを保存して復元しても問題ない場合があります。またはモジュールを使用していますか?
異なる知識ベースを分離するための良い方法は何でしょうか?