October 2004

Procedural Languages and AI

In this newsletter we've looked at symbolic languages like Mozart, SML, Lisp and Prolog for developing AI applications. These languages are good for AI because they make it easier to model and manipulate the knowledge structures of a particular application domain. They allow the AI developer to more readily create working prototypes and evolve those prototypes as experience with an application grows.

If AI is the art and science of making computers do interesting things not in their nature, then these languages are good for AI because they all, to one degree or another, hide programming tasks related to a computer's nature such as data typing, memory managment and defining procedural code execution.

But they have the disadvantage of, well, not being standard procedural programming languages. There is a lot to be said for being able to develop AI applications in more main stream languages. The disadvantage is, those languages, while being well-suited to many conventional application areas, are not particularly well-suited to implementing knowledge modelling, reasoning algorithms, and other sorts of AI tools.

The answer is libraries written in the procedural language that encapsulate the tools used for AI, so they can be called from that language without the developer having to get into the details of the implementation of knowledge modeling or reasoning. Here are some tools used to develop AI applications in procedural languages:


Protoge is a tool originally developed for knowledge modelling in medical expert systems. It is designed to make it easier to model an application domain with appropriate classes and slots. The slots are not exactly like Java methods, but rather look more like the slots of an AI frame system, with default values, constraints and the like. It includes a full Java API that allows an application to easily communicate with the domain model.

Protoge supports ontologies and the Semantic Web, as one would expect from software developed at Stanford. See the links for details.

Army Medical Knowledge Engineering System (AMKES)

AMKES is a 100% pure Java system developed for the U.S. Army medical research community. It was the brainchild of the late Fred Hegge, who saw a need for an automated way to make use of medical knowledge derived from a wide variety of experimental programs.

Research results, rather than just being reported in textual reports, would also be recorded in generic knowledge objects (GEKOs). GEKOs are frame-like objects with slots for tables, formulae and rules derived from the research. The variables of this knowledge were constrained to common vocabulary thereby allowing reasoning over related bits of research.

The system uses a three-tiered architecture, with a back-end object store for the GEKOs, a central server, and clients that allow for the update and querying of the GEKO knowledge base.

Version I of AMKES was completed but a lack of follow-on funding meant it was never deployed in the field. However, the full source and documentation for the system is in the public domain and can be accessed at www.ainewsletter.com.

See the links for for an overview presentation of the system.

Search Techniques in Java

Mark Watson has written a mini tutorial on search algorithms and the role they play in AI. He provides the Java code for implementing both a depth first and breadth first search. See the links for details.


JOONE is an open source project that implements neural nets in Java. It can be easily adapted to meet application needs. The tutorial in the links shows how to implement a simple neural net, train it, and then use it and includes full source code. See the links for details.

AI Horizon

AI Horizon is a Web site full of articles and C++ source code for various AI tools, designed mostly for implementing chess and go playing software. See links.

Simulated Hikers in the Swiss Alps

The mainstream media was recently reporting on an application that used simulated hikers to model use of Swiss Alpine areas. The idea was to have the equivalent of marketing focus groups to decide what sorts of vistas, trails and transportation options visitors to the Swiss Alps might prefer. The only difference being, the focus groups were made up of computer simulated agents representing hikers, who wandered about simulated Alpine terrain.

The application allowed the users to change the scenario, for example by subsidizing cows that keep the forest back, or installing gondolas for easier access to high places, and thus decide what would be best for the Swiss tourist industry.

So how did they build it? Two papers in the links describe the application in some detail, one concentrating on the graphical processing used and the other on the agent modelling. The agents were implemented using the classic simulation tool of partial differential equations.


www.generation5.org - The home page for Generation5, an excellent AI site with a variety of articles and features on AI. It appears to be especially strong in the use of AI for game creation.

www.javaworld.com/javaworld/jw-06-2003/jw-0620-protege.html? - Introduction to Protoge, a knowledge modelling tool designed for real applications that is the derived from AI research in medical expert systems.

http://www.amzi.com/articles/amkes_pajava99.htm - An overview of the Army Medical Knowledge Engineering System (AMKES) presented at the 1999 Practical Applications of Java conference.

www.javacoffeebreak.com/tutorials/aisearch/index.html - Mark Watson's excellent tutorial on intelligent Java, starting with the the fundamental AI technology of search and insightful discussion of how search fits into AI software.

www.developer.com/java/other/article.php/1546201 - JOONE, open source Java code implementing neural nets.

http://www.aihorizon.com/ - A site dedicated to C++ tools for working on chess and go playing software.

http://www.cuj.com/link/subject3.htm?topic=link - The C++ User's Journal index of C++ programs and tools for AI.

http://www.sim.inf.ethz.ch/projects/alpsim/dessau03.pdf - An article describing the simulated Swiss tourists, concentrating on some of the graphical issues.

http://www.sim.inf.ethz.ch/papers/strc04-ped/strc04-ped.pdf - Details on the modelling of the simulated tourists.

Until next month.