Home Page Downloads Contact Us

Free Open Source Artificial Intelligence C++ Parts

aiParts Open Source Project  

Home Page
Open Source
Free Downloads
Releases and Credits
Software Status
v0.9.3 README File
About rrproj
assigning people and/or equipment to projects
High-Hope Technique
History of the AI
View Source Files
and how they are organized
Making Programs
Development Notes
Using aiParts
Your Application
Support and Services

History of the AI

Development of the High-Hope AI Technique

The High-Hope artificial intelligence technique was developed by Brian Marshall in a series of part-time projects, off and on, since 1991.

The Challenge of Staff Scheduling

In 1991, Brian became interested in staff scheduling.

His brother, Scott Marshall, had written a program to create a staff schedule as a programming course project. It chose the best option at each decision.

It was a good project, but in practice, it was not a good technique. In a real-life staff scheduling problem, an acceptable solution may require decisions that some people do not like. Software that chooses the best option for each decision will often find that a solution can not be completed.

Trying the best two or three options at each decision is not much of an improvement. It increases the odds, but there is still the possibility of not being able to find an acceptable solution that a person could find. Furthermore, an impossibly large amount of computing could be required.

In 1991, Brian started a project to write staff scheduling software. He quickly decided that the best approach would be to consider how people do it.

Staff Scheduling, Navigating a Car, Chess

From late in 1991 through 1993, Brian considered how people solve hard problems where a series of interacting decisions must be made. He focused on how people create staff schedules, navigate a car in a city, and play chess.

Brian realized some fundamental principles:

  • Try to find a solution many times, remembering the best solution found.
  • At each decision, choose the option that seems best.
  • A try affects what seems best in subsequent tries.

This makes for a chaotic system - tries affect aspects which affect subsequent tries.

WorkForce - Staff Scheduling Software

In 1994 and 1995, Brian developed WorkForce - a staff scheduling solver and a crude user interface. It used these strategic factors when choosing options:
  • This has been a problem - maybe it should be avoided
  • This has worked (well) - it is worth trying again
  • The grass is greener on the other side of the fence

Brian briefly tested WorkForce at a Hotel in Calgary - it seemed that it would probably work for them, given a bit more work. The person in the hotel lost interest. Brian lost interest in trying to start a software company part-time.

Emotions and Decision-Making

In 1995, Brian realized that the strategic aspects in WorkForce seemed to correspond to emotions:
  • Fear - the desire to avoid known bad things
  • Greed - the desire for known good things
  • Curiosity - the desire to try new things

Using emotions when choosing options seemed reasonable. It is easier to define reasons for a deer to have fear than it is to define when a deer should run away.

For staff scheduling and many other problems, options are chosen because they have the most "Hope" - the sum of static, dynamic and emotional aspects. Emotionally...

Hope = fear + greed + curiosity

This approach was not implemented in code until 2005.

The Beginning of aiParts

In 1996 and 1999, Brian worked on projects to develop classes to match object to subjects. This work was an attempt to implement the artificial intelligence technique in WorkForce in C++ classes.

A preliminary version of aiParts was developed. The High-Hope technique was planned but not implemented.

A fundamental approach was established. Classes would implement problems, decisions and options. Messages could be passed between these components. A particular problem-domain would require a set of subclasses of the component classes.

AI Patterns - Pandemonium and Emotion

In 2002 and 2003, Brian started the aiPatterns project.

AIPatterns.org. is a collection of information about artificial intelligence patterns.

The general AI patterns of Pandemonium and Emotions are examined.

Modern aiParts - version 0.8.x

In 2005, Brian rewrote the aiParts software. The High-Hope AI technique was implemented. Sample programs were written to test and demonstrate:
  • Manipulating Goodnesses
  • Using Pandemoniums
  • Making decisions using Fear
  • Solving problems with the High-Hope technique

The list of source files and their organization is on the aiParts Source Files page.

aiParts version 0.9.x

In 2008, Brian made significant enhancements to aiParts, including:
  • date/time and time-of-day classes (and a sample program)
  • pandemoniums can be ordered and optionally distinct by keys
  • decisions can be decided multiple times
The detailed list of changes is in RELEASE.txt.

Some of the historical software developed along the way is described on the Old Software page.

In the past, the aiParts home-page was here.