Existing Optimization Models

Minimize an unweighted value

{  
         "minimize":{  
            "attribute":  
               {  
                  "distance_between":[  
                     "customer_loc",
                     "vG"
                  ]
               }
         }
 }


Minimize a weighted value


{
    "minimize": {
        "attribute": {
            "product": [
                200,
                {
                    "distance_between": [
                        "customer_loc",
                        "vG"
                    ]
                }
            ]
        }
    }
}



Maximize an unweighted value

{
    "maximize": {
        "attribute": {
            "reliability": [
                "URLLC"
            ]
        }
    }
}



Maximize a weighted value


{
    "maximize": {
        "attribute": {
            "product": [
                200,
                {
                    "reliability": [
                        "URLLC"
                    ]
                }
            ]
        }
    }
}


Minimize the sum of unweighted values

{
    "minimize": {
        "sum": [
            {
                "distance_between": [
                    "customer_loc",
                    "vG"
                ]
            },
            {
                "distance_between": [
                    "customer_loc",
                    "vG"
                ]
            }
        ]
    }
}


Minimize the sum of weighted values

{
    "minimize": {
        "sum": [
            {
                "product": [
                    100,
                    {
                        "distance_between": [
                            "customer_loc",
                            "vG"
                        ]
                    }
                ]
            },
            {
                "product": [
                    200,
                    {
                        "hpa_score": [
                            "vG"
                        ]
                    }
                ]
            }
        ]
    }
}

New Optimization Model

Objective Function Object

AttributeRequiredContentValuesDescription
goalYStringminimize, maximizeThe goal of the optimization
operation_functionYOperation function Object
The operation function that has to be optimized


Operation function object

AttributeRequiredContentValuesDescription
operatorYString

sum, min, max

The operation which will be a part of the objective function
operandsY

List of operand object

EIther an operation-function or a function

The operand on which the operation is to be performed.

The operand can be an attribute or result of a function 

operation-function operand object

AttributeRequiredContentValuesDescription
normalizationNnormalization object
Set of values used to normalize the operand
weightNDecimalDefault: 1.0Weight of the function
operation_functionNoperation function object

function operand object

AttributeRequiredContentValuesDescription
normalizationNnormalization object
Set of values used to normalize the operand
weightNDecimalDefault: 1.0Weight of the function
functionNString

distance_between,

latency_between, attribute

Function to be performed on the parameters
fucntion_paramsNdict

parameters on which the function will be applied.

The parameters will change for each function.

Normalization object

AttributeRequiredContentValuesDescription
startYDecimal
Start of the range
endYDecimal
End of the range

JSON Schema


Examples


1. Minimize an attribute of the demand

{
    "goal": "minimize",
    "operation_function": {
        "operands": [
            {
                "function": "attribute",
                "params": {
                    "attribute": "latency",
                    "demand": "urllc_core"
                }
            }
        ],
        "operator": "sum"
    }
}


2. Minimize the sum of the distance between the demand and the customer location.

objective function - distance_between(demand, location) + distance_between(demand, location)


{
   "goal": "minimize",
   "operation_function": {
      "operator": "sum",
      "operands": [
         {
            "function": "distance_between",
            "weight": 1.0,
            "params": {
               "demand": "vG",
               "location": "customer_loc"      
            } 
         },
         {
 	        "function": "distance_between",
            "weight": 1.0,
            "params": {
               "demand": "vFW",
               "location": "customer_loc"      
            } 
         }
      ]
   }
}


Scenario: 

Minimize the sum of latencies of slice subnets

objective function - latency(demand) + latency(demand)

{
   "goal": "minimize",
   "operation_function": {
   "operator": "sum",
   "operands": [
      {
         "function": "attribute",
         "weight": 1.0,
         "params": {
            "demand": "urllc_core",
            "attribute": "latency"      
         } 
      },
      {
         "function": "attribute",
         "weight": 1.0,
         "params": {
            "demand": "urllc_ran",
            "attribute": "latency"      
         } 
      }
   ]
 }
}


Scenario: 

Max  [ sum ( W_bw *  min (ran_nssi_bw, core_nssi_bw, tr_nssi_bw), 1/(W_lat * ( sum (w1 * ran_nssi_lat, w2 core_lat, W3* tn_lat)) ) ]

{
   "goal": "maximize",
   "operation_function": {
   "operator": "sum",
   "operands": [
      {
         "operation_function": {
             "operator": "min",
             "operands": [
                 {
                      "weight": 1.0,
                      "function": "attribute",
                      "params": {
                         "demand": "urllc_core",
                         "attribute": "throughput"
                      }
                 },
                 {
                      "weight": 1.0,
                      "function": "attribute",
                      "params": {
                         "demand": "urllc_ran",
                         "attribute": "throughput"
                      }
                 },
                 {
                      "weight": 1.0,
                      "function": "attribute",
                      "params": {
                         "demand": "urllc_transport",
                         "attribute": "throughput"
                      }
                 }
             ]
         },
         "normalization": {
            "start": 100,
            "end": 1000
         },
         "weight": 2.0 
      },
      {
         "operation_function": {
             "operator": "sum",
             "operands": [
                 {
                     "weight": 1.0,
                     "function": "attribute",
                     "params": {
                         "demand": "urllc_core",
                         "attribute": "latency"
                      }
                 },
                 {
                     "weight": 1.0,
                     "function": "attribute",
                     "params": {
                         "demand": "urllc_ran",
                         "attribute": "latency"
                      }
                 },
                 {
                     "weight": 1.0,
                     "function": "attribute",
                     "params": {
                         "demand": "urllc_transport",
                         "attribute": "latency"
                      }
                 }
             ]
         },
         "normalization": {
            "start": 50,
            "end": 5
         },
         "weight": 1.0
      }
   ]
 }
}


normalization:

function(value, range(start, end), weight)

All ranges are converted to 0 to 1. The inverse operation is not needed since it is already implied in the range.

normalized value = (value - start) / (end-start)


Eg:

latency range: 50 ms to 5 ms

candidate latencyNormalized value
20 ms0.667
40 ms0.222

throughput range: 100 Mbps to 1000Mbps

candidate throughputNormalized value
300 Mbps0.222
800 Mbps0.778