...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "minimize": { "sum": [ { "product": [ 100, { "distance_between": [ "customer_loc", "vG" ] } ] }, { "product": [ 200, { "hpa_score": [ "vG" ] } ] } ] } } |
New Optimization Model
Normalization???
unique solutions ???
Objective 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 | ||
---|---|---|---|---|---|---|
weightnormalization | N | decimal | default: 1.0 | Weight of normalization object | Set of values used to normalize 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
...
Normalization object
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
start | Y | Decimal | Start of the range | |
end | Y | Decimal | End of the range | |
weight | N | Decimal | Default: 1.0 | Weight of the objective function |
Examples
1. Minimize an attribute of the demand
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goal": "minimize", "operation_function": { "operand": [ { "function": "attribute", "params": { "attribute": "latency", "demand": "urllc_core" } } ], "operator": "sum" } } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "goal": "maximize", "operation_function": { "operator": "sum", "operands": [ { "operation_function": { "operator": "min", "operand": [ { "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" } } ] }, "weight": 2.0 }, { "operation_function": { "inverse": true, "operator": "sum", "operand": [ { "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" } } ] }, "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)
normalized_unit = func(lat, weight, unit)
normalization:
function(value, 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)
...