Class AspirationAdaptation

java.lang.Object
org.simplesim.reasoning.AspirationAdaptation

public class AspirationAdaptation extends Object
This class implements a variation of the aspiration adaptation algorithm.

Aspiration adaptation is a heuristic algorithm for multi-goal optimization by Reinhard Selten.

The algorithm has the following propositions:

  • There is a given set of goal variables that have to be maximized.
  • There is a given set of actions that influence the goal variables.
  • Goal variables have certain limits, below its limit a goal becomes urgent.
  • An urgency order is formed for each combination of goal values to prioritize goals.
  • The algorithm evaluates how an action influences the goal variables by means of an influence scheme.
The algorithm returns the action supporting the most urgent goal with the most positive effects on all other goals. If there is no such action, it returns the action that has not been used for the longest period of time. Rational: When at an impasse, an action that has not been used for a long time, it may now have a positive effect. To set up an urgency order, there are several evaluation strategies.

  • SUM: select the action with the highest sum of influence over all goals
  • PRIO: select the action with highest influence on the prioritized goal
  • GEOMETRIC: select the action with best relative improvement overall (geometric mean)
  • RANDOM: select a random action
See Also:
  • Constructor Details

  • Method Details

    • addAction

      public AspirationAdaptation.Action addAction(AspirationAdaptation.Action action, double[] influence)
      Adds a new action with estimated influences to the list of actions.

      Use values -1, 0 and 1 to initialize the influence scheme with a best educated guess of an action's effect.

      Best educated guessing of the influence is okay, since the influence is adapted later on. Filling the influence scheme only with zeros may lead to a longer "warm-up" time of the algorithm.

      Parameters:
      action - the action
      influence - estimated influence of the action on the goal variables
      Returns:
      the action for further usage, null if an error occurred
    • addAction

      Adds a new action without any estimation of its influence.

      Note: This may lead to a longer "warm-up" time of the algorithm.

    • calcInfluence

      public static double calcInfluence(AspirationAdaptation.GoalVariable goal, double oldValue)
    • decideAction

      public AspirationAdaptation.Action decideAction()
      Finds the best action based on the given strategy.

      The algorithm uses the given evaluation strategy to determine the best action.

      If there is no action with a positive influence, the action which has not been used for the longest period of time is returned as a fallback. This way, a livelock may be prevented.

      Rational: The result of the "oldest" action (last item in history list) may be outdated and turn out as an action with positive outcome in the current situation. So, if there is no "good" action, the "oldest" action is chosen as a best educated guess.

    • getActions

    • getGoals