Title: Rendezvous: A Hopfield-Tank Neural Network Application
Author: David J. Stein, Esq.
Version: 1.0
Written: Fall, 2004


Abstract: This application, "Rendezvous," comprises a scheduler for arranging a set of meetings among a set of people in a set of limited-capacity rooms in a set of time slots over the course of a day. The user first creates a set of named individuals, a set of meeting rooms with specified capacities, and a number of time slots. Next, the user creates a set of meetings, each naming certain individuals who must attend. The goal of the application is to find a schedule such that: The algorithm used to solve this problem relies on a customized implementation of a Hopfield-Tank neural network. Once the user creates a set of "resources" (individuals, rooms, and meeting slots), the application constructs a visual two-dimensional grid of rooms and times, and attempts to arrange meetings within this grid. As the network iterates, the application shows the meetings gradually phasing in and out of different time slots, and stops once it reaches a viable solution. The network process may be replayed, or a new solution may be generated.

Installation Instructions: Nothing unusual - simply run the enclosed executable. The application depends on an XML schema definition file, called "Network.xsd", for reading files saved to disk; this file is stored in a Schema Files folder in the executable folder, so don't move or edit this file.

Operation Instructions: Using Rendezvous is essentially a two-step process: creating the resources (people, meetings, rooms, and time slots) to be used, and then running the neural network to find a solution.

Creating resources: You sould create "resources" in the following order:

An example resource set (and schedule) is included for a simple office scenario: simply click "Load" and select the "Office Schedule.net" file in the "Data Files" folder.

Finding a schedule: After you have defined the resources, you may click one of the "Solve Schedule" buttons to create a schedule. This is accomplished by creating a Hopfield-Tank neural network and repeatedly asking it to analyze the problem. Each step in the analysis moves a small amount toward a valid schedule, and it may take several hundred or thousand steps to solve the problem. The "Solve Schedule (Full)" button will continuously run the neural network until a solution is reached, whereas "Solve Schedule (Step)" moves one step forward and displays the results. Either way, you can watch the network gradually evolve a solution from a random set of conditions. During this process, the application displays a grid for the schedule, and the meetings gradually appear and disappear (displayed in green if they are appearing, red if they are disappearing, and blue if they are fixed.)

Since the network starts with a random set of variables every time, a different schedule might be produced if you solve the schedule again. You can generate a new schedule by clicking "Clear Schedule" and then solving it again. Or, you can watch the network generate this schedule again by clicking "Reset Schedule" and solving it again.

In some instances, the neural network might fail to find a solution. This could be because it's impossible to create a valid schedule for the resources you've defined (e.g., if one meeting requires 12 people to attend, but none of the meeting rooms can accommodate 12 people); or it could be because the network started with an unresolvable set of random variables. In this case, you can try again (by clicking "Clear Schedule" and then solving it again); if it repeatedly fails to produce a solution, you may want to adjust your resources to avoid a logical deadlock.

Finally, you may Save a resource set and schedule to disk.

Comments: A Hopfield-Tank neural network is a special kind of neural network, useful for finding a solution to a logical problem given a set of rules. The rules of the network must be defined for a particular problem, but the network evaluates the same way for any problem, by gradually adjusting the weights of the input neurons until a valid solution is produced. Before studying the code (included in this package), a detailed study of this neural network model will be helpful.

This application was written in two layers: the specialized Hopfield-Tank was designed as a distinct class (involving separate classes for Neuron, Synapse, etc.), and then a front end was written to use an embedded instance of the neural network. In other words, this application may also be a useful example of object-oriented program design.

Finally, the application makes some simple use of XML for the data files; an examination of the XML files, and the XSD (schema definition), may be of interest to novices in XML.

Application History: This application was written for an artificial intelligence class taught by Dr. Toshinori Munakata at Cleveland State University in Fall, 2004. I had previously designed a few Hopfield-Tank networks to resolve some other problems, and simply reused my implementation of the Hopfield-Tank class with some specialized rules for this problem.

Questions/Comments: Please contact David J. Stein, Esq. via email at djs10@po.cwru.edu.

Terms and Conditions of Use: Please see the enclosed "License.html" file for terms and conditions of use of this software package.