Table of Contents |
---|
Existing Optimization Models
Minimize an unweighted value
Code Block | ||||
---|---|---|---|---|
|
LIST OF OPTIMiZATION GOALS
- minimize
- maximize
LIST OF OBJECTIVE FUNCTIONS
- attribute
- sum
Minimize an unweighted value
{ "minimize":{ "attribute": { "distance_between":[ "customer_loc", "vG" ] } } } |
...
Minimize a weighted value
Code Block | ||||
---|---|---|---|---|
| ||||
{
| ||||
JSON Viewer | ||||
{ "minimize": { "attribute": { "product":[ 200, {"distance_between":[ "customer_loc", "vG" ]} ] } } } |
Maximize an unweighted value
JSON Viewer |
---|
{
"maximize":{
"attribute":
{
"reliability":[
"URLLC"
]
}
}
}
|
Maximize a weighted value
JSON Viewer |
---|
{
"minimize":{
"attribute":
{
"product":[
200,
{"reliability":[
"URLLC"
]}
]
}
}
}
|
Minimize the sum of unweighted values
JSON Viewer |
---|
{
"minimize":{
"sum":[
{
"distance_between":[
"customer_loc",
"vG"
]
},
{
"distance_between":[
"customer_loc",
"vG"
]
}
]
}
}
|
Minimize the sum of weighted values
JSON Viewer |
---|
{
"minimize": {
"sum": [
{
"product": [
100,
{
"distance_between": [
"customer_loc",
"vG"
]
}
]
},
{
"product": [
200,
{
"hpa_score": [
"vG"
]
}
]
}
]
}
}
|
New Optimization Model
...
Objective function object
...
sum, min, max
...
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
"attribute": {
"product": [
200,
{
"distance_between": [
"customer_loc",
"vG"
]
}
]
}
}
} |
Maximize an unweighted value
Code Block | ||||
---|---|---|---|---|
| ||||
{
"maximize": {
"attribute": {
"reliability": [
"URLLC"
]
}
}
} |
Maximize a weighted value
Code Block | ||||
---|---|---|---|---|
| ||||
{
"maximize": {
"attribute": {
"product": [
200,
{
"reliability": [
"URLLC"
]
}
]
}
}
}
|
Minimize the sum of unweighted values
Code Block | ||||
---|---|---|---|---|
| ||||
{
"minimize": {
"sum": [
{
"distance_between": [
"customer_loc",
"vG"
]
|
operand object
...
distance_between,
latency_between, attribute
...
parameters on which the function will be applied.
The parameters will change for each function.
Examples
Scenario:
objective function - distance_between(demand, location) + distance_between(demand, location)
JSON Viewer |
---|
{ "goal": "minimize", "objective_function": { "operation": "sum", "operands": [ {}, { "function": "distance_between", "weightdistance_between": 1.0, [ "params": { "customer_loc", "demand": "vG", "location": "customer_loc"vG" ] } }, {] } } |
Minimize the sum of weighted values
Code Block | ||||
---|---|---|---|---|
| ||||
{ "functionminimize": "distance_between",{ "weightsum": 1.0,[ "params": { "demandproduct": "vFW", [ "location": "customer_loc" 100, } { } ] } } |
Scenario:
objective function - latency(demand) + latency(demand)
JSON Viewer |
---|
{ "goal": "minimize", "objective_function": { "operation": "sum", "operands": [ "distance_between": [ { "function": "attribute"customer_loc", "weight": 1.0, "params": { "vG" "demand": "urllc_core", "attribute": "latency" ] } }, { "function": "attribute", ] "weight": 1.0 }, "params": { "demandproduct": "urllc_ran", [ "attribute": "latency" 200, } { } ] } } |
Scenario:
_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)
"hpa_score": [
"vG"
]
}
]
}
]
}
}
|
New Optimization Model
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 | 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 |
---|---|---|---|---|
normalization | N | normalization object | Set of values used to normalize the operand | |
weight | N | Decimal | Default: 1.0 | Weight of the function |
operation_function | N | 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 which the function will be applied. The parameters will change for each function. |
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 demand
Code Block | ||||
---|---|---|---|---|
| ||||
{
"goal": "minimize",
"operation_function": {
| ||||
JSON Viewer | ||||
{ "goal": "maximize", "objective_function": { "operation": "sum", "operands": [ { "objective_function": { "operation": "min", "operand": [ { "weight": 1.0, "function": "attribute", "params": { "demand": "urllc_core", "attribute": "throughput" } }, { "weightoperands": 1.0,[ { "function": "attribute", "params": { "demandattribute": "urllc_ranlatency", "attributedemand": "throughputurllc_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)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goal": "minimize", "operation_function": { "weightoperator": 1.0"sum", "operands": [ { "function": "attributedistance_between", "weight": 1.0, "params": { "demand": "vG", "demandlocation": "urllccustomer_transportloc", } "attribute": "throughput" }, { }"function": "distance_between", }"weight": 1.0, "params": ]{ }, "weightdemand": 2.0 "vFW", }, { "objective_function"location": { "operation": "sum", "customer_loc" "operand": [ } { } ] } } |
Scenario:
Minimize the sum of latencies of slice subnets
objective function - latency(demand) + latency(demand)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goal": "minimize" "weight": 1.0, "operation_function": { "operator": "sum", "operands": [ { "function": "attribute", "weight": 1.0, "params": { "demand": "urllc_core", "attribute": "latency" } }, { }"function": "attribute", "weight": 1.0, { "params": { "weightdemand": 1.0, "urllc_ran", "functionattribute": "attributelatency", } "params": {} ] } } |
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", "operation_function": { "operator": "sum", "operands": [ { "demand": "urllc_ran", "attribute": "latency" "operation_function": { } "operator": "min", },"operands": [ { "weight": 1.0, "function": "attribute", "params": { "demand": "urllc_transportcore", "attribute": "latencythroughput" } }, ] { }, "weight": 1.0 } ] } } "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 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 |