"Linux Gazette...making Linux just a little more fun!"
Linux and Artificial Intelligence
Three years ago when I was starting my last year of my masters of
philosophy degree. I found myself asking that eternal question,
"Ok, now what in the hell am I going to do?" Not wanting to
continue on in philosophy, what could a philosopher (and computer
enthusiast) do that would be both fun and profitable. Artificial
Intelligence of course (but you saw that coming didn't you?)
I had fallen in love with Linux in late 1993 and after seeing all
the Suns scattered about the AI Dept, it seemed like the perfect
OS for AI research. Guess what, I was right. I have found so many
resources available for doing AI research on Linux that I had to
write them all down (warning: blatant plug follows), thus my Linux AI/Alife
mini-HOWTO came into being.
Ok, enough of this drivel, now on to the meat of the article.
Modern AI is a many faceted field of research, dealing with
everything from 'traditional' logic based systems, to
connectionism, evolutionary computing, artificial life, and
autonomous agents. With Unix being the main platform for AI, there
are many excellent resources available for Linux in each of these
areas. The rest of this article I'll give a brief description
of each of these areas along with one of the more interesting
resources available to the Linux user.
- PROGRAMMING LANGUAGES
-
I know I didn't mention this above, but there are many
programming languages that have been specifically designed
with AI applications in mind.
- DFKI OZ
Web page: www.ps.uni-sb.de/oz/
FTP site: ps-ftp.dfki.uni-sb.de/pub/oz2/
-
Oz is a high-level programming language designed for
concurrent symbolic computation. It is based on a new
computation model providing a uniform and simple foundation
for several programming paradigms, including higher-order
functional, constraint logic, and concurrent object-oriented
programming. Oz is designed as a successor to languages such
as Lisp, Prolog and Smalltalk, which fail to support
applications that require concurrency, reactivity, and
real-time control.
DFKI Oz is an interactive implementation of Oz featuring a
programming interface based on GNU Emacs, a concurrent
browser, an object-oriented interface to Tcl/Tk, powerful
interoperability features (sockets, C, C++), an incremental
compiler, a garbage collector, and support for stand-alone
applications. Performance is competitive with commercial
Prolog and Lisp systems.
- TRADITIONAL ARTIFICIAL INTELLIGENCE
-
Traditional AI is based around the ideas of logic, rule
systems, linguistics, and the concept of rationality. At its
roots are programming languages such as Lisp and Prolog.
Expert systems are the largest successful example of this
paradigm. An expert system consists of a detailed knowledge
base and a complex rule system to utilize it. Such systems
have been used for such things as medical diagnosis support
and credit checking systems.
- SNePS
Web site: www.cs.buffalo.edu/pub/sneps/WWW/
FTP site: ftp.cs.buffalo.edu/pub/sneps/
-
The long-term goal of The SNePS Research Group is the design
and construction of a natural-language-using computerized
cognitive agent, and carrying out the research in artificial
intelligence, computational linguistics, and cognitive science
necessary for that endeavor. The three-part focus of the group
is on knowledge representation, reasoning, and natural-language
understanding and generation. The group is widely known for its
development of the SNePS knowledge representation/reasoning
system, and Cassie, its computerized cognitive agent.
- CONNECTIONISM
-
Connectionism is a technical term for a group of related
techniques. These techniques include areas such as Artificial
Neural Networks, Semantic Networks and a few other similar
ideas. My present focus is on neural networks (though I am
looking for resources on the other techniques). Neural
networks are programs designed to simulate the workings of the
brain. They consist of a network of small mathematical-based
nodes, which work together to form patterns of information.
They have tremendous potential and currently seem to be having
a great deal of success with image processing and robot
control.
- PDP++
Web site: www.cnbc.cmu.edu/PDP++/
FTP site (US): cnbc.cmu.edu/pub/pdp++/
FTP site (Europe):
unix.hensa.ac.uk/mirrors/pdp++/
-
As the field of connectionist modeling has grown, so has the
need for a comprehensive simulation environment for the
development and testing of connectionist models. Our goal in
developing PDP++ has been to integrate several powerful
software development and user interface tools into a general
purpose simulation environment that is both user friendly and
user extensible. The simulator is built in the C++ programming
language, and incorporates a state of the art script
interpreter with the full expressive power of C++. The
graphical user interface is built with the Interviews toolkit,
and allows full access to the data structures and processing
modules out of which the simulator is built. We have
constructed several useful graphical modules for easy
interaction with the structure and the contents of neural
networks, and we've made it possible to change and adapt many
things. At the programming level, we have set things up in
such a way as to make user extensions as painless as
possible. The programmer creates new C++ objects, which might
be new kinds of units or new kinds of processes; once compiled
and linked into the simulator, these new objects can then be
accessed and used like any other.
- EVOLUTIONARY COMPUTING [EC]
-
Evolutionary computing is actually a broad term for a vast
array of programming techniques, including genetic algorithms,
complex adaptive systems, evolutionary programming, etc.
The main thrust of all these techniques is the idea of
evolution. The idea that a program can be written that will
evolve toward a certain goal. This goal can be
anything from solving some engineering problem to winning a
game.
- GAGS
Web site: kal-el.ugr.es/gags.html
FTP site: kal-el.ugr.es/GAGS/
-
Genetic Algorithm application generator and class library
written mainly in C++.
As a class library, and among other thing, GAGS includes:
- A chromosome hierarchy with variable length
chromosomes. Genetic operators: 2-point crossover,
uniform crossover, bit-flip mutation, transposition (gene
interchange between 2 parts of the chromosome), and
variable-length operators: duplication, elimination, and
random addition.
- Population level operators include steady
state, roulette wheel and tournament selection.
- Gnuplot wrapper: turns gnuplot into a
iostreams
-like class.
- Easy sample file loading and configuration file parsing.
As an application generator (written in PERL
),
you only need to supply it with an ANSI-C or C++ fitness
function, and it creates a C++ program that uses the above
library to 90% capacity, compiles it, and runs it, saving
results and presenting fitness thru gnuplot
.
- ALIFE
-
Alife takes yet another approach to exploring the mysteries of
intelligence. It has many aspects similar to EC and
connectionism, but takes these ideas and gives them a
meta-level twist. Alife emphasizes the development of
intelligence through emergent behavior of complex
adaptive systems. Alife stresses the social or group
based aspects of intelligence. It seeks to understand life and
survival. By studying the behaviors of groups of 'beings' Alife
seeks to discover the way intelligence or higher order
activity emerges from seemingly simple individuals. Cellular
Automata and Conway's Game of Life are probably the most
commonly known applications of this field.
- Tierra
Web site: www.hip.atr.co.jp/~ray/tierra/tierra.html
FTP site: alife.santafe.edu/pub/SOFTWARE/Tierra/
Alternate FTP site: ftp.cc.gatech.edu/ac121/linux/science/biology/
-
Tierra's written in the C programming language. This source
code creates a virtual computer and its operating system,
whose architecture has been designed in such a way that the
executable machine codes are evolvable. This means that the
machine code can be mutated (by flipping bits at random) or
recombined (by swapping segments of code between algorithms),
and the resulting code remains functional enough of the time
for natural (or presumably artificial) selection to be able to
improve the code over time.
- AUTONOMOUS AGENTS
-
Also known as intelligent software agents or just agents, this
area of AI research deals with simple applications of small
programs that aid the user in his/her work. They can be mobile
(able to stop their execution on one machine and resume it on
another) or static (live in one machine). They are usually
specific to the task (and therefore fairly simple) and meant
to help the user much as an assistant would. The most popular
(ie. widely known) use of this type of application to date are
the web robots that many of the indexing engines
(eg. webcrawler) use.
- Ara
Web site: www.uni-kl.de/AG-Nehmer/Ara/
-
Ara is a platform for the portable and secure execution of
mobile agents in heterogeneous networks. Mobile agents in this
sense are programs with the ability to change their host
machine during execution while preserving their internal
state. This enables them to handle interactions locally which
otherwise had to be performed remotely. Ara's specific aim in
comparison to similar platforms is to provide full mobile
agent functionality while retaining as much as possible of
established programming models and languages.
Copyright © 1997, John Eikenberry
Published in Issue 19 of the Linux Gazette, July 1997