2016-07-25 4 views
0

J'ai une confusion après discussion avec un de mes collègues sur le système de base de règles. J'ai développé un dans Android qui a un ensemble de règles. Ce que je dis est que les faits initiaux doivent correspondre à n'importe quelle règle afin de démarrer le moteur, de sorte que nous pouvons directement commencer à faire correspondre les faits initiaux sans les envoyer à la mémoire de travail. Le camarade dit que NON, les faits initiaux doivent entrer dans la mémoire de travail, puis la correspondance devrait commencer et je suis d'accord jusqu'à ici, mais il ajoute aussi que vous avez seulement besoin d'obtenir les variables des faits initiaux et ensuite correspondre aux règles par exemple io une règleTraitement des faits initiaux du système basé sur les règles

a(variable),b(constant) 
Initial facts in Working memory is a(VAR_VALUE) 

donc faut-il invoquer la règle

a(variable),b(constant) 

si la réponse est oui, alors nous pouvons avoir beaucoup de ces règles, des valeurs constantes qui peut être invoquée même si le la mémoire de travail est vide.

J'ai besoin d'un avis d'expert sur la question ci-dessus, donc je peux faire les changements de développement au besoin.

Répondre

0

Vérifiez d'abord la correspondance des prédicats, puis vérifiez si le sujet est variable ou non. Si ce n'est pas le cas, faites correspondre avec la règle correapong si les deux sujets sont identiques. Les règles avec comstants doivent correspondre à elementa de wm. Sinon, il sera b boucle infinie. Comme une seule variable peut venir avec n'importe quel nombre de constantes. Utilisez également une meilleure stratégie de résolution des conflits.