...
If you make a Brand dimension, you will end up with a "holey cheese" space that is difficult to navigate and the system will be way larger than needed. Instead, the Brand feature should be used to define a scope within the Category x Assortment x Packaging space.
A ground-rule could be: dimensions are non-contingent features to the space required to situate a variable or a criterion in the problem.
...
The best way to achieve this is to situate levers and criteria in the same space, in other words, place them at the same level of granularity. For instance, one of our typical cases is turnover stability when a customer wants to streamline its pricing: the customer wants to change list prices (situated in a product space) and discounts (situated in a product family x customer group space) but wants its global turnover to stay the same. Where should we situate the constraint of equality between current and historical turnovers?
...
Once levers and criteria are situated, we often realize that there is a computed variable that aggregates a large amount of lower granularity values. Large aggregating computations with lots of inputs and parameters should be avoided. Decomposing these computations into intermediate variables at intermediate granularity levels should be preferred to gain clarity, flexibility, and maintainability. If the system runs on multiple threads, this also improves performance as agents run in parallel while a Computation Agent has lots of processing to do on its inputs which do not scale well. The trade-off is that the resulting multi-agent system will be larger, which could cause some memory issues.
...
In this sense, the simple case shown as an example in the Graphical Norm and Description File sectionsfor Optimization Problems is bad practice, sorry about that.