First, learn about Spaces and Scopes in the Optimization Engine at Main Concepts for Optimization Problems.
After describing the hierarchies, the next step is to describe the model spaces.
Spaces
A Space is composed of a name, a set of dimensions, and a set of Scopes where variables and criteria are described. Dimensions are based on the categories defined in the hierarchies. In the following example, we define a Product x Customer space. Each variable and each criterion inside this space will be associated with a product and a customer (and thus also to their parent categories as per the hierarchies previously defined).
In case several dimensions are relying on the same category, the user has to explicitly name the dimensions in order to disambiguate.
Scopes
A Scope is a perimeter defined inside of a Space in which we declare variables and criteria. A Scope is composed of a name (mandatory), a list of variables (optional), and a list of criteria (optional). In the following example, we define a scope named ”All”.
For every scope defined in the problem description, there must be a corresponding Model Table. These tables follow a strict naming convention. For example, the model table corresponding to the scope All
in the space ProductCustomerSpace
has to be named Problem_ProductCustomerSpace_All
. The rule is that the table name is Problem_<name of the space>_<name of the scope>
.
Model tables have to be configured once the model description is done. For details see Problem Tables.
By default, it is recommended to create one scope named “All” in each space. Creating other scopes can be useful for better maintainability. It is needed if some variables or criteria apply only to a part of a space. For instance, the above space ProductCustomerSpace
may have some specific criteria for each pair of (product x customer) that generates more than 1000€ in revenue. Then, in the problem description, a scope named MoreThan1KRevenue
is created. Its perimeter will be restricted to the data existing in the Problem_ProductCustomerSpace_MoreThan1KRevenue
table.