Class AspirationAdaptation
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.
- 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
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
abstraction layer, has to be implemented by the callers actionsstatic interface
abstraction layer for the goal variables / objectivesstatic enum
-
Constructor Summary
ConstructorDescriptionConstructor of aspiration adaptation strategy -
Method Summary
Modifier and TypeMethodDescriptionaddAction
(AspirationAdaptation.Action action) Adds a new action without any estimation of its influence.addAction
(AspirationAdaptation.Action action, double[] influence) Adds a new action with estimated influences to the list of actions.static double
calcInfluence
(AspirationAdaptation.GoalVariable goal, double oldValue) Finds the best action based on the given strategy.getGoals()
-
Constructor Details
-
AspirationAdaptation
public AspirationAdaptation(AspirationAdaptation.GoalVariable[] goals, AspirationAdaptation.STRATEGY s) Constructor of aspiration adaptation strategyNote: Goal variables have to be ordered with descending priority. The priority cannot be changed later on.
- Parameters:
goals
- array of goal variables
-
AspirationAdaptation
-
-
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 actioninfluence
- 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
-
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
-