Saturday, May 27, 2006

PLT Scheme Projects

This blog is about my various open source PLT Scheme projects. There are three major Scheme projects I am currently working on. Two of these - PLT Scheme Science Collection and PLT Scheme Simulation Collection - have already been released. The third - PLT Scheme Inference Collection - is currently under development.
I had developed a knowledge-based simulation capability in Symbolics Common Lisp back in the late 1980s. I moved on to more traditional simulation technologies in my professional career and the work was largely forgotten. In the 1990s as PCs made their way into the classroom, I began using Scheme for teaching AI. However, at the time I didn't consider Scheme to be suitable for production quality software.
A few years ago, I came across PLT Scheme that seemed to meet my needs: it had an integrated development environment, it supported modern programming paradigms (e.g. object oriented programming, graphical user interfaces, exception handling, and modules), it was reasonably efficient, and it was portable across Windows and Linux, which are my two main platforms. Eventually I decided to resurrect my knowledge-based simulation work in PLT Scheme.
It was obvious that a simple port of the original Common Lisp code was not the best approach to the problem. I decomposed the problem into three basic components: the underlying mathematical and analysis capability, the simulation engine, and the inference engine. These became the science collection, simulation collection, and inference collection.
As I began developing the science collection, I noticed that much of what I needed was in the GNU Scientific Library (GSL). So, I decided that I would use the structure, and algorithms to the extent practical, of the GSL for the science collection. Version 1.0 of the PLT Scheme Science Collection was released via PLaneT in October 2004.
The simulation collection is a complete rewrite from the Common Lisp code. One of the advantages of Scheme is the availability of continuations, which are ideally suited for the implementation of a process-based simulation engine. I also decided to add a continuous simulation capability to the simulation engine. Version 1.0 of the PLT Scheme Simulation Collection was released in August 2005.
With my background in Artificial Intelligence, I was somewhat surprised at myself for leaving the inference collection as the last of the three to be implemented; particularly since I already have a Scheme version of a naive inference engine written. But, it made sense that way. It also turns out that the inference collection is a complete rewrite of the Common Lisp (and earlier Scheme) code. I plan on releasing Version 1.0 of the PLT Scheme Inference Collection during the summer of 2006.
I also have some Scheme programs that I have used in teaching AI classes over the years. Over time, I will convert these to PLT Scheme and make them available. The only one I have converted so far is a collection for defining state space problems and solving them using a graph search algorithm.

Labels: , , ,


Post a Comment

<< Home