Table of Contents |
---|
Existing Optimization Models
LIST OF OPTIMiZATION GOALS
- minimize
- maximize
LIST OF OBJECTIVE FUNCTIONS
- attribute
- sum
Minimize an unweighted value
...
Maximize an unweighted value
Code Block | ||||
---|---|---|---|---|
| ||||
{ "maximize": { "attribute": { "reliability": [ "URLLC" ] } } } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "minimize": { "sum": [ { "product": [ 100, { "distance_between": [ "customer_loc", "vG" ] } ] }, { "product": [ 200, { "hpa_score": [ "vG" ] } ] } ] } } |
New Optimization Model
Objective Function Object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
goal | Y | String | minimize, maximize | The goal of the optimization |
objectiveoperation_function | Y | Objective Operation function Object | The objective operation function that has to be optimized |
Objective Operation function object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
operationoperator | NY | String | sum, min, max | The operation which will be a part of the objective function |
operands | NY | 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
Attribute | Required | Content | Values | Description | |||
---|---|---|---|---|---|---|---|
weightnormalization | N | decimal | default: 1.0 | Weight of the operand | normalization object | Set of values used to normalize the operand | |
weight | N | Decimal | Default: 1.0 | Weight of the function | |||
operationobjective_function | N | Objective operation function object |
function operand object
Attribute | Required | Content | Values | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
normalization | N | normalization object | Set of values used to normalize the operand | |||||||||
weight | N | Decimal | Default: 1.0 | Weight of the function | ||||||||
function | N | String | distance_between, latency_between, attribute | Function to be performed on the parameters | ||||||||
fucntion_params | N | dict | parameters on | 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
Scenario:
Scenario:
Normalization object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
start | Y | Decimal | Start of the range | |
end | Y | Decimal | End of the range |
JSON Schema
View file | ||||
---|---|---|---|---|
|
Examples
1. Minimize an attribute of the demandobjective function - distance_between(demand, location) + distance_between(demand, location)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goal": "minimize", "objectiveoperation_function": { "operationoperands": "sum", [ "operands": [ { { "function": "distance_betweenattribute", "weight": 1.0, "params": { "demandattribute": "vGlatency", "locationdemand": "customerurllc_loccore" } } }, {], "functionoperator": "distance_betweensum", } } |
2. Minimize the sum of the distance between the demand and the customer location.
objective function - distance_between(demand, location) + distance_between(demand, location)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "weightgoal": 1.0"minimize", "operation_function": { "paramsoperator": {"sum", "operands": [ "demand": "vFW", { "locationfunction": "customerdistance_locbetween", "weight": 1.0, } "params": { } ] } } |
Scenario:
objective function - latency(demand) + latency(demand)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goaldemand": "minimizevG", "objective_function": { "operation": "sum", "operandslocation": [ "customer_loc" } }, { "function": "attributedistance_between", "weight": 1.0, "params": { "demand": "urllc_corevFW", "attributelocation": "latencycustomer_loc" } }, } {] } } |
Scenario:
Minimize the sum of latencies of slice subnets
objective function - latency(demand) + latency(demand)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "functiongoal": "attributeminimize", "operation_function": { "weightoperator": 1"sum", "operands": [ { "function": "attribute", "weight": 1.0, "params": { "demand": "urllc_rancore", "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)) ) ]
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goal": "maximize", "objectiveoperation_function": { "operationoperator": "sum", "operands": [ { "objectiveoperation_function": { "operationoperator": "min", "operandoperands": [ { "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 }, { "objectiveoperation_function": { "operationoperator": "sum", "operandoperands": [ { "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 } ] } } |
_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)
...
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 latency | Normalized value |
---|---|
20 ms | 0.667 |
40 ms | 0.222 |
throughput range: 100 Mbps to 1000Mbps
candidate throughput | Normalized value |
---|---|
300 Mbps | 0.222 |
800 Mbps | 0.778 |