"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 inPERL),
	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 thrugnuplot.
    
      - 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
 
  
![[ TABLE OF CONTENTS ]](../gx/indexnew.gif) 
![[ FRONT PAGE ]](../gx/homenew.gif) 
 
