Search code examples
computer-scienceexpert-systemrule-engine

Rules Engine vs Expert System


What is the difference between a rules engine and an expert system?

Example1: Let's say that I have a program that determines the expiration date of a new driver's license. It takes inputs like visa expiration date, passport number, birthday, etc. It determines the expiration date of the driver's license from this input. It can even give an error if the input did not have enough valid identifications to allow a new driver's license.

Example2: Let's say I am making an online version of the game Monopoly. I want the ability to change the rules of the game (say $400 for passing go or no one can buy properties until they land on the same property twice, etc). I have a module in the code to handle these rules.

Are these both rules engines or are they expert systems? They both seem so similar. Is it just a synonym?


Solution

  • The "inference engine" (what I believe you are calling the "rules engine") is part of an expert system. The other part is the "knowledge base" (your list of rules, the stuff it knows it true, that stuff it has so far figured out, etc.)

    The inference engine is the part that actually uses your rules and the known facts to infer things.

    In your two examples above, you are talking about expert systems. Sort of.

    I'll give you a third example. GNU make is an inference engine. If given a set of build rules and dated files, it can figure out what needs to be rebuilt, but it has to be told all that stuff. Your build system that includes the makefiles, associated scripts, and make itself is an expert system.

    I found a detailed explanation online here, but it is perhaps a bit too detailed for a neophyte.