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

The High-Hope Technique

The High-Hope technique is used to find solutions to problems in which a number of decisions have to be made and each decision affects subsequent decisions.

The technique can be useful for many types of problems, including arbitrarily constrained problems that have an enormous number of possible solutions.

The technique is easy to implement in software, and easy to specialize to solve a particular type of problem. Software size and complexity grow very slowly with an increase in the number of problem constraints.

You may be interested in the history of the High-Home technique.

The Technique

The High-Hope Technique...

Given a problem, try to solve it repeatedly (physically or by consideration) and remember the best solution(s).

In a try, where there is a choice of which decision to address next, choose the one that is most urgent - either because it is particularly important or it is particularly safe.

At each decision, pick the option with the most hope for success. The hope of an option is the sum of problem-domain-specific aspects plus strategic aspects.

After each try, change the relevant strategic aspects to reflect the result of the try.

The High-Hope technique is a type of machine learning. Options have strategic aspects. The software learns about the solution space as tries affect these aspects which affect subsequent tries. This chaotic interaction controls the balance between exploring the unknown and taking advantage of what has been learned.

The technique is chaotically sensitive to initial conditions, parameters and the sequence of random numbers used for choosing equal options. A tiny change can result in a different choice in a try, which may affect subsequent choices and tries.

Big Problems

The High-Hope technique is a way of finding solutions to problems that have so many possible solutions that all of them cannot be considered. People routinely solve these types of problems. The number of ways to drive across a city is enormous, but a driver would only consider a tiny fraction of these ways.

The chess master does not consider all the possibilities, just the good ones.

The High-Hope technique is as an approach to exploring a very small proportion of a solution-space.

The Most Hope

When trying to put together a good staff schedule, at each decision, a person chooses the option that appears to offer the most hope for success. This is true even if the person tries to complete the schedule multiple times.

Tries affect hopes which affect tries. One try differs from the next because the hopes of options are different. What appears best changes with experience with the problem.

Hope Combines Aspects

Hope is the result of evaluating many aspects. Option-hope is a single quantity that can be used to compare options.

The option-hope combines the results of evaluating...

  • static aspects ("It's good for Bill to work evenings.)"
  • dynamic aspects based on decisions made up to this point ("It would be bad for Sally to work today; she has already worked five days in a row.")
  • strategic aspects based on what has been learned in previous tries ("This option worked really well last time.")
Static and dynamic aspects are particular to the problem domain. For each aspect, you write a bit of code that evaluates the aspect and assigns a goodness value.

The strategic aspects are handled by the High-Hope classes. You create subclasses for the objects in your problem. An application assembles a problem using these subclasses.

Fear, Greed and Curiosity

In the High-Hope technique, the strategic aspects are emotions. The use of the word "emotion" and the names of the emotions are misleading because the words have multiple subtle meanings.

The strategic aspects that contribute to hope are fear, greed and curiosity:

Fear is the feeling that something bad may happen. Fear causes you to avoid an option that has been a problem in the past. Fear starts at Neutral and becomes more negative as an option is involved in unsuccessful tries.

Greed is the feeling that you know how to make something good happen. Greed attracts you to options that have worked well in the past. Greed starts at Neutral and becomes more positive as an option is involved in successful tries.

Curiosity is the feeling that an untried option might be good. Curiosity attracts you to options that might turn out even better than any you have already tried. Curiosity about an apparently acceptable option starts fairly high and decreases as the option is tried.

Hope = Fear + Greed + Curiosity

Hope is a Sum

A hope resolves to a goodness. Aspects that contribute to a hope resolve to a goodnesses. Aspects can be combined by adding, if goodnesses are implemented like...

            VeryVeryBad       =   -1024
            VeryBad           =    -512
            QuiteBad          =    -256
            Bad               =     -64
            FairlyBad         =     -32
            SomewhatBad       =      -8
            SlightlyBad       =      -2
            VerySlightlyBad   =      -1
            Neutral           =       0
            VerySlightlyGood  =       1
            SlightlyGood      =       2
            SomewhatGood      =       3
            FairlyGood        =       4
            Good              =       5
            QuiteGood         =       6
            VeryGood          =       7
            VeryVeryGood      =       8
The lack of symmetry around Neutral is a reflection of the fact that the worse an aspect is, the more important it is. There may be, for example, a variety of good aspects to setting the alarm clock an hour later, but if one of them is probably getting fired, it's probably a bad option.


The author would like to humbly propose the hypothesis that people and other animals evolved the use of this technique, and evolved emotions as a way of making decisions, because it is so easy to implement.

It is simpler to hard-wire reasons for a deer to become more afraid than it is to hard-wire the decision to run away. The technique can be implemented simply in neurons or electronics or a programming language.