User Layer

The user layer represents the front-end layer which is run by a user of the system. This layer is responsible for running the optimization algorithm. The algorithm produces tasks to be evaluated. As can be seen in figure 1.1, each optimization, run at the user layer, is encapsulated in a Job process. The job drives the optimization, sends tasks to the server layer, and feeds retrieved results back into the optimizer.

The optimizer consists of a population (of tasks) that need to be executed, an optional function which combines a multi-objective fitness evaluation into a single fitness value, and a data storage to store the results of the optimization. The optimizer population is a set of tasks that can be executed independently. For example, in Genetic Algorithms this would be a single generation of individuals. These represent the set of tasks that can be distributed at the server layer. The fitness function represents a mathematical expression that can be used to transform multiple objectives into a single fitness value, used by the optimizer.

A description of the task that is sent to the server layer is given in table 1.1. Once a task is executed, a result message as described in table 1.2 is sent back to the user layer.




Table 1.1: Task Message
Name Description
Id A unique task identifier
Dispatcher The dispatcher with which to evaluate the ask
Parameters A {name $ \rightarrow$ value} dictionary of parameters to be evaluated
Settings A {name $ \rightarrow$ value} dictionary of settings to be passed to the dispatcher
   





Table 1.2: Result Message
Name Description
Id The unique task identifier
Status Whether the execution was successful or not
Fitness A {name $ \rightarrow$ value} dictionary of fitness values
Data A {name $ \rightarrow$ value} dictionary of additional, custom data to be stored with this task/solution
   


Jesse van den Kieboom 2014-02-26