AI Expert Newsletter
October 2004
Dennis Merritt
AI - The art and science of making computers do interesting things that
are not in their nature.
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
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
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.
Links
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.
As always, feedback ideas and interesting links and other contributions
are welcome. Past issues are available at either www.ddj.com
or www.ainewsletter.com.
Until next month,
Dennis Merritt
|