views:

203

answers:

4

I need do write an expert systems that should aid user in picking up best mobile phone operator. It should be very simple and not based on languages/libaries such as CLISP or JESS. So I need to write it all from the ground up.

Do you know some books or online tutorials that explains how this can be done? What I really need to get to know is how to represent knowledge and facts.

Any help would be much appreciated.

A: 

Prolog is well suited to writing rule-based systems (a pretty standard approach to expert systems development). P# compiles to C#, which may meet your needs - and it's free.

More information on P#.

dommer
A: 

The basis rationale, and mathematical proof, for the PROLOG language, should help you understand most of the concepts you will need to address, if not provide the final language you need to use to implement it.

I couldn't find a link to the original implementation, but it would not help you much anyway. Alain Colmerauer's early work on logic programming should be helpfull.

[EDIT] Sorry, duplicate...

Varkhan
+2  A: 

If you get any of the good texts on AI, there will be a section on expert systems; you can, if forced, work it out from there and implement your own.

The basic idea is really fairly simple: you have a collection of rules in "if-then" form that represent inferences, or4 implications. Like, for example:

IF blood temperature > 41°C 
THEN patient.has-fever := TRUE

IF patient has wet-sounding breathing
THEN patient.has-pneumonia

IF patient.has-fever AND patient.has-pneumonia
THEN CONCLUDE bacterial pneumonia. ACTION prescribe Augmentin

In other words, you have a bunch of rules, and you evaluate the rules until you get to a conclusion. There's a lot more to is (forward or backward chaing and that kind of thing) which you can read about in thed pretty decent Wikipedia article.

I'm puzzled why you can't use an existing rule engine though -- there are a number of them, for most languages, usually under pretty liberal licenses. That's really an easier route unless this is a homework problem or something.

Charlie Martin
A: 

I would vote for some implementation of Prolog or CLIPS, depending if backward or forward chaining logic best suits the problem. Instead of re-implementing either of these, spend the time working out how to integrate them with your environment.

Joe