Linux and AI Issue 19

#### "Linux Gazette...making Linux just a little more fun!"

## Linux and Artificial Intelligence

#### By John Eikenberry, jae@ai.uga.edu

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