Programming artificial
intelligence into a piece of code is NOT about anticipating every single
thing that can possibly happen. A heuristic approach is more practical
to implement. Implementing a heuristic model has an added advantage that
the system improves every time it is run.
Heuristics (meaning "to find" or "discover") refers to techniques for learning, discovery and problem solving. Heuristic methods are used to speed up the process of finding a satisfactory solution. When an exhaustive search is impractical.
Implementing a heuristic model:
1. Setup a generic system that runs by a "rulebook".
- The "rulebook" contains set of very simple rules to start with.
2. Design a "playbook" which is easily extensible.
- Use arrays, linked-lists, b-trees, tables, a relational-database,... Anything. Just remember that the "playbook" is going to grow very fast. Eventually it will contain ALL the rules & tactics that exist.
3. Let the system run-wild.
- At each turn, the system follows the existing rules in the "rulebook". It picks the best move applicable in the current context from the "playbook" At the end of each run, save the moves & the outcome to the "playbook" for reference in the next runs.
Additional points of interest:
- Pruning : Removing obsolete/duplicate entries from the rulebook.
- Reduces the "rulebook" size. Leads to faster decision making. - Character traits : Aggressive, defensive, favorite moves etc.
- Useful in games. To provide multiple opponents. - Realistic AI : Possible to trick AI into making occasional mistakes.
- Again useful in games. Makes gameplay more realistic & fun.
No comments :
Post a Comment