Distributed Computing Systems

Home     Products     Research     Book     Contact Details      
 
Research Projects
 
 
 
This page describes some of the research projects that I have worked on. Links are provided to any of the related software packages.
 
 
 

Licas

 

Licas stands for lightweight (Internet-based) communication for autonomic services. It is a software package written in the Java programming language which allows a user to build distributed service-based networks that can also self-organise/self-optimise. Functionality is provided to allow for XML-RPC based message passing and dynamic linking between services. The framework is very lightweight and so may also be used in a mobile environment. The architecture and adaptive capabilities through dynamic linking add something new to what other similar systems provide. The key features are as follows:

 

  1. The capability to build distributed networks of autonomic service-based components.
  2. Permanent and dynamic linking mechanisms to construct the network architecture.
  3. Autonomic self-organisation through a dynamic linking mechanism.
  4. Password protection of the services, providing some level of security.
  5. Remote communication capabilities through an XML-RPC message passing mechanism.
  6. Remote object loading through a Java UrlClassLoader.
  7. Service wrapper classes allowing legacy code to be loaded.
  8. Framework for adding metadata and negotiation through Service Level Agreements.
  9. Dynamic Web Service invocation through WSDL document parsing.
  10.  Compatability with the Java mobile (J2ME) environment.

 

Licas has a home page on sourcefoge.net, from where you can download an open source version of the code, or access a number of papers related to the system. You can also read a white paper about the system here.

 

 


 

 

JLog2 

 

The jlog2 software package is a logging application that allows you to log information relating to the operation of your software program. The package is written in Java under the J2SE platform, but is also compatible with the mobile J2ME platform. The package provides functionality for logging general information or debugging information, to different sets of streams. It is based on creating channels to write to, and then allocating these to each logger that is used. A channel could be anything and so could include something like a text area GUI component, which would be written to instead of one of the standard outputs. The package is provided as a jar file that you include in your library and then use as needed.

 

JLog2 has a home page on sourcefoge.net, from where you can download an open source version of the code.

 

 


 

 

 

PEGS

 

PEGS stands for Production and Environmental Generic Scheduler. PEGS is a Production Scheduling system for manufacturing. The system was written using the C# .Net programming language. It is generic, covering different objectives and search strategies and will accommodate setup times and a wide variety of constraints. The system will also allow environmental factors to be considered and has been commercialised, targeting small to medium sized companies. The system is available from the Queens University web page, from where a demo version can also be downloaded. There are two versions of the system. The first uses the centralized shifting bottleneck algorithm and the second uses a distributed agent-based architecture. The different features, including a wide variety of constraints, and environmental and economic factors, produced a unique product that also offered possibilities for research. The agent-based version also uses some new sorting algorithms to produce faster schedules.

 

 


 

 

 

Game Playing

 

My interest in Artifical Inelligence started with the game playing programs. I am more interested in the traditional ones, such as the board games, than the modern video games.

 

 

 

ChessMaps Chess Game-Playing Program

 

This is a chess game-playing program that uses a neural network as part of its move-ordering algorithm. The neural network is able to realise the relation between the squares on a chessboard that we control and the squares that the moves we play influence. For example, we tend to attack where we are strong and defend where we are weak. The neural network was trained on data generated from Master and Grandmaster games and the results indicated that quite a strong relation does in fact exist.

 

A new search heuristic has been created using the neural network, which has formed the basis for an overall move ordering algorithm. This algorithm is also able to extract safe/unsafe, capture, forcing and forced moves, and order appropriately to provide an even more accurate ordering. This algorithm has now been turned into a chess game-playing program and ported to C#. A version of this can be downloaded from the download page.

 

 

 

Chess with Mined Squares

 

In my spare time I have also come up with some new variations of the traditional board games. This variation of chess is now part of the program that I wrote. The squares can be mined, so that you will be 'blown up' if you move onto them, which adds a memory test to the game. The format is a formal (patent-like) specification.