2009-05-19 15 views
1

Nächstes Jahr werde ich mein Diplom-Jahr zu einem Informatik-Ingenieur sein und ich versuche, Ideen über das Junior-Projekt zu finden. Eigentlich habe ich eine Idee, eine Experten System Engine zu machen. Ich habe mit Clips und Prolog gearbeitet und Clips gefallen mir sehr, aber es scheint eine alte Engine zu sein. Kann mir irgendjemand etwas über diese Idee sagen oder mir Quellen für Papiere oder irgendwelche Themen geben, die mir helfen können? Ich denke, die Sprache C zu verwenden, um die hohe Leistung zu erhalten und eine robuste Datenstruktur aufzubauen. Außerdem denke ich über eine Idee (ich weiß nicht, ob es möglich wäre), Fakten und Regeln (wie Clips) zu schreiben und dann einen C++ optimalen Code aus diesen Regeln zu generieren, so dass ich die Geschwindigkeit der Maschine und exe nutzen kann Datei.Expert System Engine

Ich brauche Hilfe, um diese Idee klarer zu machen und wie es gemacht werden kann. Vor allem, weil ich über Fuzzy Logic und Netzwerk gelesen habe und von der neuen Generation von Expertensystemen gehört habe, weiß ich nicht, wie das mit einem solchen Thema zusammenhängen könnte.

+0

Wie wichtig ist die Geschwindigkeit für Ihr Projekt? Soll Ihr Projekt in Echtzeit ausgeführt werden oder muss es nur in großen Datenmengen in angemessener Zeit ausgeführt werden? –

Antwort

1

Für Ihr Junior-Projekt würde ich empfehlen, es in C zu schreiben. Ihr Problem hört sich an, als ob es mehr Korrektheit braucht, als es Geschwindigkeit braucht. Das Schreiben in C dauert länger, weil Sie viele Primitive implementieren müssen, die nicht in der Sprache oder einer Standardbibliothek enthalten sind. Da C relativ niedrig ist, gibt es viele Möglichkeiten, Fehler auf niedriger Ebene zu machen. Schreiben Sie es in eine höhere Sprache, die näher an der Problemdomäne liegt. Sie werden mehr Zeit haben, sich auf Ihr tatsächliches Problem zu konzentrieren, da Sie weniger Zeit damit verbringen, das Framework einzurichten. Wenn Sie Prolog schon kennen, wäre es gut, dabei zu bleiben. Vielleicht können Sie Mercury betrachten. Es ist ähnlich wie Prolog, aber auch designed for speed.

+0

Eigentlich bin ich ein guter C# -Programmierer, aber ich bin dagegen, es wegen der Zwischensprache MSIL zu verwenden, die Leistungseinbußen macht, und Leistung ist eine der wichtigen Ideen, die Leute Hochsprachen wie C++ anstelle von Clips verwenden lassen. Danke .. – Hani

+0

@Hani - Clips verwendet ein RETE-Netzwerk, um das viele-viele Muster-Matching-Problem zu lösen. Wenn Sie C# oder C++ (oder eine andere nicht-logische oder nicht-logische Sprache) verwenden, liegt dieses Problem vor. Das Problem tritt möglicherweise nicht bei wenigen Datenelementen und nur bei ein paar hundert Regeln auf, aber die rechnerische Komplexität wird Sie ab einem gewissen Punkt beeinträchtigen. –

0

JBoss-Regeln (auch bekannt als Drools) bieten den besten Ansatz für die Regelverarbeitung. Es ist in Java geschrieben. Es ermöglicht Ihnen, Programmkomponenten in die Regeln und Regelbasen in Ihre Programmkomponenten zu integrieren. Sie können Regelbasen auch im laufenden Betrieb erstellen oder ändern.

Ich habe gehört, dass Java in seiner Fähigkeit, Mathe zu tun, holt, aber außerhalb davon haben Sie nichts von Leistung zu fürchten.