Algorithmus um Regeln abzuarbeiten
-
Hallo,
es geht um eine Art regelbasiertes Expertensystem. Es gibt eine Regelbasis und ich suche nach einem geeigneten Algorithmus, diese Regeln abzuarbeiten.
Soweit ich weiß, basiert z.B. das XPS Jess auf dem Rete Algorithmus. Viel konnte ich zu dem aber nicht finden, vorallem nicht, wie man ihn in Java implementieren könnte.
Wisst ihr einen weiteren Algorithmus für sowas?
-
Muss es Java sein? Sonst könnte man vielleicht Prolog nehmen. Da ist das Abarbeiten von Regeln Kernbestandteil.
-
deetee schrieb:
Wisst ihr einen weiteren Algorithmus für sowas?
Naja die meisten Forwardchainer benutzen irgendeine Variante des Rete, z.B. Treat, Rete II, Rete/UL. Falls du dich nur auf Aussagenlogik beschränken kannst könnten auch noch DPLL und WalkSat in Frage kommen. Wenn du bei Google mal nach "Rete algorithm" oder ähnliches suchst bekommst du einige brauchbare Treffer.
Ich würde mir überlegen ob du den Inferenzmechanismus wirklich selbst implementieren möchtest. Es gibt ja schon Alternativen wie z.B. Jess für Java oder CLIPS mit einer C Schnittstelle.
Auf die Schnelle hab ich hier eine brauchbare Erläuterung zum Rete aufgetan. http://reports-archive.adm.cs.cmu.edu/anon/1995/CMU-CS-95-113.pdf
-
@Tachyon
Ja, das muss in Java implementiert sein. Für Implementierungen mittels JNI ist ebenfalls kein Spielraum.@TheTester
Das PDF ist wirklich gut auf den ersten Blick. Scheint genau das zu sein, was ich suchte - eine Pseudocode Anleitung d. Rete Algos.
Ich werde mich auch nochmal mit Jess näher beschäftigen, aber ich glaube nicht, dass es in Frage kommt. Gründe werden wohl sein:- kostenpflichtig, soweit ich mich erinnere, ist Jess nur für Lehrzwecke kostenlos.
- das ganze muss plattformunabhängig und ohne weiteren Installationen (außer Java) lauffähig sein. (diese Punkte habe ich bzgl. Jess noch nicht eruiert, kann sein, dass Jess diese sogar erfüllt.)
-
@detee
Im Zweifelsfall kannst du ja Prolog in Java einbinden, mittelst zB http://gnuprologjava.sourceforge.net/
-
@rüdiger
Ansich ne nette Sache so ein package als API um andere Sprachen in Java zu nutzen. Ich habe speziell mit diesem package aber das Problem, dass es quasi ungetestet als 0.1.0 Version EVTL nicht zuverlässig genug ist, um produktiv eingesetzt zu werden.Hinzukommt, dass ich noch nie Prolog programmiert habe und überhaupt keine Ahnung habe, wie ich die API nutzen soll, weil mir der Hintergrund zu Prolog fehlt - ich also erstmal mich in Prolog einarbeiten müsste.
Trotzdem danke für den Link. Schadet ja nie.