Existing Optimization Models
Minimize an unweighted value
Minimize a weighted value
Maximize an unweighted value
Maximize a weighted value
Minimize the sum of unweighted values
Minimize the sum of weighted values
New Optimization Model
Normalization???
unique solutions ???
Objective Function Object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
goal | Y | String | minimize, maximize | The goal of the optimization |
operation_function | Y | Operation function Object | The operation function that has to be optimized |
Operation function object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
operator | Y | String | sum, min, max | The operation which will be a part of the objective function |
operands | Y | List of operand object | The operand on which the operation is to be performed. The operand can be an attribute or result of a function | |
inverse | N | Boolean | default: False | Flag to specify whether the objective function has to be inverted. |
operand object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
weight | N | decimal | default: 1.0 | Weight of the operand |
operation_function | N | operation function object | ||
function | N | String | distance_between, latency_between, attribute | Function to be performed on the parameters |
fucntion_params | N | dict | parameters on which the function will be applied. The parameters will change for each function. |
Examples
1. Minimize an attribute of the demand
2. Minimize the sum of the distance between the demand and the customer location.
objective function - distance_between(demand, location) + distance_between(demand, location)
Scenario:
Minimize the sum of latencies of slice subnets
objective function - latency(demand) + latency(demand)
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)) ) ]
_bw = [100, 200, 300]
ran_nssi → property bw → func(slice_profile[])
core_nssi → property bw → func(slice_profile[])
tn_nssi → property bw→ func(slice_profile[])
Maximize (min (ran_nssi_bw, core_nssi_bw, tr_nssi_bw))
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)) ) ]
Min/max operator: list of operands
Sum operator: list of operands
prod operator: weight, operand
normalized_unit = func(bw, weight, unit)
normalized_unit = func(lat, weight, unit)
normalization:
function(value, ideal_value)
Impact Analysis
API - no impact
Controller
Template version upgrade
New parser for the optimization model
Data - no impact
Solver
A new solver for the model (recursive solver?)
Reservation - no impact