When using the Optimization Server, you will find the following concepts:

  • The Master is a Rest-API application that stands for the main entry point to the Optimization server.
  • The Workers are the nodes that execute CPU-intensive computations, like optimization. They consist in docker-based applications that can easily be scaled.
  • The Clients are built-in applications used to interact with the master. For example, the Web console is a web client that allows to create and monitor jobs.
  • Task: a task describes a kind of work that Optimization Server can execute on a worker. A task has an identifier, a description, inputs and outputs. See in Custom workers Section how to define tasks.
  • Job: a job is a task instance, that is executed by Optimization Server. Job creation is being given inputs, that should be a sub-set of the inputs declared in the related task. The job is ran on a worker and its output(s) should be a sub-set of the outputs declared in the related task. Several jobs can run in parallel, thus the execution order of jobs is not guarantee.
  • Bucket: a bucket represents a job input or output data.
  • Job Flow: a job flow is a graph of jobs, eg: a set of jobs and relations between these jobs. A typical use case is a “map-reduce” kind of optimization, with a root job that divides the model into sub-models and creates children jobs to solve these sub-models on other workers. In this example, the job flow would be a “star” with the root job being the parent of all the other jobs. Job flows can be visualized in the web console. See in Map-reduce kind of task Section how to create sub-jobs.