Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Problem modeling is the process of understanding the customer’s domain and requirements, and turning them into a problem description that is fed to the Multi-Agent Optimization Engine. For each new customer, we instantiate our generic meta-model into a specific problem description expressed in YAML or JSON. Then the problem description is automatically translated into an actual multi-agent system.

As soon as possible, graphical models produced with this tool are refined to instantiate an actual multi-agent system. This is done through high-level descriptions that are basically textual translations of the graphical models, except that they allow for more details. This problem description is to be used as an input by the Optimization Engine.

The simple case example shown earlier with the graphical norm could be translated to a problem description as follows (with an added special case where some of the list prices are excluded from the optimization). This example is only meant to illustrate the main concepts:

  • A space defines the dimensions in which the following variables and criteria exist (i.e. a plate in the graphical norm, aka a rectangle or the crossing of rectangles).

  • A scope is within a space and defines the perimeter in which the following variables and criteria exist (i.e. the scope of customers with turnover higher than N in the space product x customer).

  • Spaces and scopes can be referred to from other spaces and scopes in order to connect computed variables to their "inputs".

 Sample of Problem Description File
hierarchies:
  - [product]
  - [customer]
  
spaces:
  - name: ByProduct
    dimensions: [product]
    scopes:
      - name: All
        variables:
          - name: ListPrice
            type: value_finder
            init:
              type: data
              field: historical_list_price
            min:
              type: data
              field: list_price_lower_bound
            max:
              type: data
              field: list_price_upper_bound
            parameters:
              type: explicit
              initial_amplitude:
                 type: inline
                value: 1
              minimum_amplitude:
                type: inline
                value: 0.00001
              maximum_amplitude:
                type: inline
                value: 100
              increase_coefficient:
                type: inline
                value: 1.2
              decrease_coefficient:
                type: inline
                value: 2
  - name: ByProductAndCustomer
    dimensions: [product, customer]
    scopes:
      - name: All
        variables:
          - name: Volume
            type: static
            init:
              type: data
              field: historical_volume
          - name: Turnover
            type: computed
            inputs:
              type: fixed
              variables:
                - variable: ListPrice
                  space: ProductSpace
                - variable: Volume
            computation: multiplication
        criteria:
          - name: TargetTurnover
            type: target
            on: Turnover
            target:
              type: data
              field: historical_turnover
            precision:
              type: inline
              value: 0.0
            acceptable_delta:
              type: data
              field: target_delta
            priority:
              type: data
              field: target_priority

  • No labels