From fd02e0a6ba95b52925526c8ca96e251e1d5420b2 Mon Sep 17 00:00:00 2001 From: mengleiz Date: Wed, 4 Oct 2023 17:53:23 -0700 Subject: [PATCH] update website. --- _images/rmcat.png | Bin 140361 -> 197673 bytes .../environments/congestion_control.md.txt | 2 +- .../congestion_control/rmcat.md.txt | 48 +++--- .../cellular_network_slicing.md.txt | 92 +++++------ .../mx_qos_traffic_steering.md.txt | 53 +++---- .../mx_traffic_splitting.md.txt | 69 ++++----- environments/congestion_control.html | 2 +- environments/congestion_control/rmcat.html | 69 ++++----- .../cellular_network_slicing.html | 112 +++++++------- .../mx_qos_traffic_steering.html | 101 +++++++------ .../mx_traffic_splitting.html | 143 +++++++++--------- searchindex.js | 2 +- 12 files changed, 350 insertions(+), 343 deletions(-) diff --git a/_images/rmcat.png b/_images/rmcat.png index 86c2bf6c7e21fa6ae8ef5bfabcdea06ab0525caa..9b6a9ae24fb27c7c16cc93c707f5c233a7758b5d 100644 GIT binary patch literal 197673 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

2pii8fQ@r|8hr#f0N&j9S61 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

GWVw;Ir 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�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 R;xq6^PD%+W+e*s^4mWcoW diff --git a/_sources/environments/congestion_control.md.txt b/_sources/environments/congestion_control.md.txt index 481b6ba..62f9f78 100644 --- a/_sources/environments/congestion_control.md.txt +++ b/_sources/environments/congestion_control.md.txt @@ -16,7 +16,7 @@ congestion_control/rmcat :link: cards-rmcat :link-type: ref -In this environment, the agent performs periodic actions to control the sending rate of a real-time traffic RMCAT (NADA) flow. +In this environment, the agent performs periodic actions to adjust the sending rate of a real-time traffic flow using RTP Media Congestion Avoidance Techniques (RMCAT). ::: :::: diff --git a/_sources/environments/congestion_control/rmcat.md.txt b/_sources/environments/congestion_control/rmcat.md.txt index f9a0d31..5650d82 100644 --- a/_sources/environments/congestion_control/rmcat.md.txt +++ b/_sources/environments/congestion_control/rmcat.md.txt @@ -5,14 +5,15 @@ title: RMCAT # RMCAT ```{figure} rmcat.png --- -width: 50% +width: 100% --- ``` [config.json]: https://github.com/IntelLabs/networkgym/blob/main/network_gym_client/envs/rmcat/config.json The RMCAT environment is part of the congestion control environments and provides general information about the environment. -In this environment, the agent performs periodic actions to control the sending rate of a real-time traffic RMCAT (NADA) flow. +In this environment, the agent performs periodic actions to adjust the sending rate of a real-time traffic flow using RTP Media Congestion Avoidance Techniques (RMCAT). +This environment is based on the GitHub Repo: [cisco/ns3-rmcat](https://github.com/cisco/ns3-rmcat). | | | | ----- | ---- | @@ -23,7 +24,7 @@ In this environment, the agent performs periodic actions to control the sending ## Description -The RMCAT environment represents a congestion control problem for real-time traffic. The goal of congestion control is to strategically controls sending rate, aiming to achieve high throughput, low latency and low loss. +The RMCAT environment represents a congestion control problem for real-time traffic. The goal of congestion control is to strategically control the sending rate, aiming to achieve high throughput, low latency, and low loss. If no action is given to the environment, RMCAT uses [NADA](https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-nada-05) as its default algorithm. ## Prerequisite @@ -31,27 +32,9 @@ Ensure that you have access to the NetworkGym Server on [vLab](https://registrat ## Observation Space -The observation is an `ndarray` with shape `(3,)` representing three features. The first feature is `rtt`, representing the round trip time. The second feature is `xcurr`, represeting the congestion level. The third feature is the received throughput `rrate`. +The observation is an `ndarray` with shape `(3,)` representing three features selected from the available measurements for this environment. -| Feature | Observation | Min | Max | -| ----- | ---- | ----- | ---- | -| 0 | rtt (ms) | 0.0 | Inf | -| 1 | xcurr | 0.0 | 500.0 | -| 2 | rrate (bps) | 0.0 | Inf| - -## Action Space -The action space is a `ndarray` with shape `(1,)` representing the sending rate of rmcat flow. The min value is 150000 and max value is 1500000. - - -## Reward - -TODO - -## Custom Observation Space and Reward -1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. -To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `rmcat::rtt` to the list would enable receiving measurements with the name `rtt` from the source `rmcat`. - -:::{dropdown} Click to view a demo of all measurements for this environment. +:::{dropdown} Click to view available measurements for this environment. Refer to [Working with Measurements](../../tutorials/working_with_measurements.md) for further elaboration of the following measurements. @@ -72,6 +55,25 @@ Refer to [Working with Measurements](../../tutorials/working_with_measurements.m ::: +The first feature is `rtt`, representing the round trip time. The second feature is `xcurr`, represeting the congestion level. The third feature is the received throughput `rrate`. + +| Feature | Observation | Min | Max | +| ----- | ---- | ----- | ---- | +| 0 | rtt (ms) | 0.0 | Inf | +| 1 | xcurr | 0.0 | 500.0 | +| 2 | rrate (bps) | 0.0 | Inf| + +## Action Space +The action space is a `ndarray` with shape `(1,)` representing the sending rate of rmcat flow. The min value is 150000 and max value is 1500000. + + +## Reward + +Not implemented yet. + +## Customize Observation Space and Reward + +1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `rmcat::rtt` to the list would enable receiving measurements with the name `rtt` from the source `rmcat`. ```{eval-rst} 2. Customize Observation Space in the :meth:`network_gym_client.envs.rmcat.Adapter.get_observation` function. 3. Customize Reward in the :meth:`network_gym_client.envs.rmcat.Adapter.get_reward` function. diff --git a/_sources/environments/mx_network_slicing/cellular_network_slicing.md.txt b/_sources/environments/mx_network_slicing/cellular_network_slicing.md.txt index 732c103..9bbaef3 100644 --- a/_sources/environments/mx_network_slicing/cellular_network_slicing.md.txt +++ b/_sources/environments/mx_network_slicing/cellular_network_slicing.md.txt @@ -33,53 +33,9 @@ Ensure that you have access to the NetworkGym Server on [vLab](https://registrat ## Observation Space -The observation space is represented by a multidimensional array (`ndarray`) with a shape of `(5, N)`, where each of the `N` slices contains five distinct features: -1. **Total Throughput**: This measures the total data rate for each slice in Mbps, ranging from `0` to `Inf`. -2. **Resource Block Usage Rate**: It represents the fraction of resource blocks utilized by each slice, expressed as a percentage in the range of `[0, 1]`, with the sum across all slices equal to 1. -3. **Average Delay Violation Rate**: Initially measured user-wise and then averaged for each slice, this rate indicates the average proportion of delay violations, expressed as a percentage in the range of `[0, 1]`. -4. **Maximum Delay**: This records the maximum delay experienced by a slice at a specific moment, expressed in milliseconds and ranging from `0` to `Inf`. -5. **Average Delay**: It computes the average delay experienced by a slice, expressed in milliseconds and ranging from `0` to `Inf`. - -| Feature | Observation | Min | Max | -| --- | --- | --- | --- | -| 0 | Total Throughput per slice (mbps) | 0.0 | Inf | -| 1 | Resource Block Usage Rate per slice | 0.0 | 1.0 | -| 2 | Average Delay Violation Rate per slice | 0.0 | 1.0 | -| 3 | Maximum Delay per slice (ms) | 0.0 | Inf | -| 4 | Average Delay per slice (ms) | 0.0 | Inf | - - -## Action Space - -The action space is an `ndarray` with a shape of `(N,)`, indicating the allocation of resource blocks to `N` slices. It is important to note that the sum of the actions in this allocation should not exceed one. In case the sum surpasses one, the actions will be appropriately scaled down using the softmax function to ensure adherence to the constraint. This can be expressed mathematically as follows: -```{eval-rst} -if :math:`\sum_{i=1}^{N}a_i > 1, \quad a_i = \frac{e^{a_i}}{\sum_{j}e^{a_j}}.` -``` - -| Num | Action | Min | Max | -| --- | --- | --- | --- | -| 0 | Prioritized Rb allocated to slice 0 | 0.0 | 1.0 | -| 1 | Prioritized Rb allocated to slice 1 | 0.0 | 1.0 | -| ... | | | | -| N | Prioritized Rb allocated to slice N | 0.0 | 1.0 | - -## Reward - -The reward function in our system takes into account three factors: throughput, delay violation rate, and resource cost. It is formulated as follows: - -```{eval-rst} -:math:`R(t) = \sum_{i = 1}^N \left( \frac{{\text{throughput}_i}}{{\text{load}_i}} - \lambda \cdot \text{delay_violation_rate}_i - \gamma \cdot \text{rb_usage_rate}_i \right)` -``` - -```{eval-rst} -In this formulation, we can adjust the emphasis given to the delay violation rate and the resource block usage rate using the parameters (:math:`\lambda`) and (:math:`\gamma`) respectively. By default, (:math:`\lambda=1.5`) and (:math:`\gamma = 0.5`), which prioritize delay considerations. -``` - -## Custom Observation Space and Reward -1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. -To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `gma::wifi::dl::traffic_ratio` to the list would enable receiving measurements with the name `wifi::dl::traffic_ratio` from the source `gma`. +The observation space is represented by a multidimensional array (`ndarray`) with a shape of `(5, N)`, where each of the `N` slices contains five distinct features selected from the available measurements for this environment: -:::{dropdown} Click to view a demo of all measurements for this environment. +:::{dropdown} Click to view available measurements for this environment. Refer to [Working with Measurements](../../tutorials/working_with_measurements.md) for further elaboration of the following measurements. @@ -129,6 +85,50 @@ Refer to [Working with Measurements](../../tutorials/working_with_measurements.m ::: +1. **Total Throughput**: This measures the total data rate for each slice in Mbps, ranging from `0` to `Inf`. +2. **Resource Block Usage Rate**: It represents the fraction of resource blocks utilized by each slice, expressed as a percentage in the range of `[0, 1]`, with the sum across all slices equal to 1. +3. **Average Delay Violation Rate**: Initially measured user-wise and then averaged for each slice, this rate indicates the average proportion of delay violations, expressed as a percentage in the range of `[0, 1]`. +4. **Maximum Delay**: This records the maximum delay experienced by a slice at a specific moment, expressed in milliseconds and ranging from `0` to `Inf`. +5. **Average Delay**: It computes the average delay experienced by a slice, expressed in milliseconds and ranging from `0` to `Inf`. + +| Feature | Observation | Min | Max | +| --- | --- | --- | --- | +| 0 | Total Throughput per slice (mbps) | 0.0 | Inf | +| 1 | Resource Block Usage Rate per slice | 0.0 | 1.0 | +| 2 | Average Delay Violation Rate per slice | 0.0 | 1.0 | +| 3 | Maximum Delay per slice (ms) | 0.0 | Inf | +| 4 | Average Delay per slice (ms) | 0.0 | Inf | + + +## Action Space + +The action space is an `ndarray` with a shape of `(N,)`, indicating the allocation of resource blocks to `N` slices. It is important to note that the sum of the actions in this allocation should not exceed one. In case the sum surpasses one, the actions will be appropriately scaled down using the softmax function to ensure adherence to the constraint. This can be expressed mathematically as follows: +```{eval-rst} +if :math:`\sum_{i=1}^{N}a_i > 1, \quad a_i = \frac{e^{a_i}}{\sum_{j}e^{a_j}}.` +``` + +| Num | Action | Min | Max | +| --- | --- | --- | --- | +| 0 | Prioritized Rb allocated to slice 0 | 0.0 | 1.0 | +| 1 | Prioritized Rb allocated to slice 1 | 0.0 | 1.0 | +| ... | | | | +| N | Prioritized Rb allocated to slice N | 0.0 | 1.0 | + +## Reward + +The reward function in our system takes into account three factors: throughput, delay violation rate, and resource cost. It is formulated as follows: + +```{eval-rst} +:math:`R(t) = \sum_{i = 1}^N \left( \frac{{\text{throughput}_i}}{{\text{load}_i}} - \lambda \cdot \text{delay_violation_rate}_i - \gamma \cdot \text{rb_usage_rate}_i \right)` +``` + +```{eval-rst} +In this formulation, we can adjust the emphasis given to the delay violation rate and the resource block usage rate using the parameters (:math:`\lambda`) and (:math:`\gamma`) respectively. By default, (:math:`\lambda=1.5`) and (:math:`\gamma = 0.5`), which prioritize delay considerations. +``` + +## Custom Observation Space and Reward +1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. +To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `gma::lte::dl::rate` to the list would enable receiving measurements with the name `lte::dl::rate` from the source `gma`. ```{eval-rst} 2. Customize Observation Space in the :meth:`network_gym_client.envs.network_slicing.Adapter.get_observation` function. 3. Customize Reward in the :meth:`network_gym_client.envs.network_slicing.Adapter.get_reward` function. diff --git a/_sources/environments/mx_traffic_management/mx_qos_traffic_steering.md.txt b/_sources/environments/mx_traffic_management/mx_qos_traffic_steering.md.txt index 2690c41..4e5c8cf 100644 --- a/_sources/environments/mx_traffic_management/mx_qos_traffic_steering.md.txt +++ b/_sources/environments/mx_traffic_management/mx_qos_traffic_steering.md.txt @@ -45,33 +45,9 @@ Ensure that you have access to the NetworkGym Server on [vLab](https://registrat ## Observation Space -The observation is an `ndarray` with shape `(3,N,)` representing three features for N users. The first feature is MAX LTE rate, representing the user's estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links. +The observation is an `ndarray` with shape `(3,N,)` representing three features for N users selected from the available measurement for this environment. -| Feature | Observation | Min | Max | -| ----- | ---- | ----- | ---- | -| 0 | MAX LTE rate (mbps) | 0.0 | Inf | -| 1 | MAX Wi-Fi rate (mbps) | 0.0 | Inf | -| 2 | throughput (mbps) | 0.0 | Inf| - -## Action Space - -The action is a `ndarray` with shape `(N,)` which can take values {0, 1} indicating the link to transmit data. N is the number of users. -- 0: Steer traffic over Cellular -- 1: Steer traffic over Wi-Fi - -## Reward - -```{eval-rst} - -We computes the number of Quality of Service (QoS) users over Wi-Fi as reward function :meth:`network_gym_client.envs.qos_steer.Adapter.calculate_wifi_qos_user_num`. Given that Cellular already implements an admission control mechanism to support the maximum number of QoS users, maximizing the QoS users over Wi-Fi also leads to the maximization of the total number of users in the network that meet the QoS requirements. In essence, optimizing the QoS users over Wi-Fi indirectly ensures the best possible overall network performance with the desired QoS levels for all users. - -``` - -## Custom Observation Space and Reward -1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. -To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `gma::wifi::dl::traffic_ratio` to the list would enable receiving measurements with the name `wifi::dl::traffic_ratio` from the source `gma`. - -:::{dropdown} Click to view a demo of all measurements for this environment. +:::{dropdown} Click to view available measurements for this environment. Refer to [Working with Measurements](../../tutorials/working_with_measurements.md) for further elaboration of the following measurements. @@ -138,6 +114,31 @@ Refer to [Working with Measurements](../../tutorials/working_with_measurements.m ::: +The first feature is MAX LTE rate, representing the user's estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links. + +| Feature | Observation | Min | Max | +| ----- | ---- | ----- | ---- | +| 0 | MAX LTE rate (mbps) | 0.0 | Inf | +| 1 | MAX Wi-Fi rate (mbps) | 0.0 | Inf | +| 2 | throughput (mbps) | 0.0 | Inf| + +## Action Space + +The action is a `ndarray` with shape `(N,)` which can take values {0, 1} indicating the link to transmit data. N is the number of users. +- 0: Steer traffic over Cellular +- 1: Steer traffic over Wi-Fi + +## Reward + +```{eval-rst} + +We computes the number of Quality of Service (QoS) users over Wi-Fi as reward function :meth:`network_gym_client.envs.qos_steer.Adapter.calculate_wifi_qos_user_num`. Given that Cellular already implements an admission control mechanism to support the maximum number of QoS users, maximizing the QoS users over Wi-Fi also leads to the maximization of the total number of users in the network that meet the QoS requirements. In essence, optimizing the QoS users over Wi-Fi indirectly ensures the best possible overall network performance with the desired QoS levels for all users. + +``` + +## Custom Observation Space and Reward +1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. +To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `gma::wifi::dl::traffic_ratio` to the list would enable receiving measurements with the name `wifi::dl::traffic_ratio` from the source `gma`. ```{eval-rst} 2. Customize Observation Space in the :meth:`network_gym_client.envs.qos_steer.Adapter.get_observation` function. 3. Customize Reward in the :meth:`network_gym_client.envs.qos_steer.Adapter.get_reward` function. diff --git a/_sources/environments/mx_traffic_management/mx_traffic_splitting.md.txt b/_sources/environments/mx_traffic_management/mx_traffic_splitting.md.txt index 64c0728..2593268 100644 --- a/_sources/environments/mx_traffic_management/mx_traffic_splitting.md.txt +++ b/_sources/environments/mx_traffic_management/mx_traffic_splitting.md.txt @@ -32,41 +32,9 @@ Ensure that you have access to the NetworkGym Server on [vLab](https://registrat ## Observation Space -The observation is an `ndarray` with shape `(3,N,)` representing three features for N users. The first feature is MAX LTE rate, representing the user's estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links. +The observation is an `ndarray` with shape `(3,N,)` representing three features for N users selected from the available measurements for this environment. -| Feature | Observation | Min | Max | -| ----- | ---- | ----- | ---- | -| 0 | MAX LTE rate (mbps) | 0.0 | Inf | -| 1 | MAX Wi-Fi rate (mbps) | 0.0 | Inf | -| 2 | throughput (mbps) | 0.0 | Inf| - -## Action Space -The action space is a `ndarray` with shape `(N,)` representing the traffic ratio over Wi-Fi for N users. The traffic ratio over Cellular equals (1.0 - action). - -| Num | Action | Min | Max | -| ----- | ---- | ----- | ---- | -| 0 | Wi-Fi traffic ratio for user 0 | 0.0 | 1.0 | -| 1 | Wi-Fi traffic ratio for user 1| 0.0 | 1.0 | -| ... | | | | -| N-1 | Wi-Fi traffic ratio for user N-1| 0.0 | 1.0 | - -## Transition Dynamics -Given an action (Wi-Fi split ratio for user i: R[i]), transmitter i follows the following transition dynamics: -- transmit R[i] traffic over Wi-Fi link. -- transmit (1-R[i]) traffic over LTE link. - -## Reward - -```{eval-rst} -We compute a utility function :math:`f = 0.5 \times log(throughput)-0.5 \times log(OWD)` using the reward function :meth:`network_gym_client.envs.nqos_split.Adapter.netowrk_util`, where OWD is the one-way delay. -The goal of the utility function is to maximize the throughput and minimizing delay. -``` - -## Custom Observation Space and Reward -1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. -To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `gma::wifi::dl::traffic_ratio` to the list would enable receiving measurements with the name `wifi::dl::traffic_ratio` from the source `gma`. - -:::{dropdown} Click to view a demo of all measurements for this environment. +:::{dropdown} Click to view available measurements for this environment. Refer to [Working with Measurements](../../tutorials/working_with_measurements.md) for further elaboration of the following measurements. @@ -133,6 +101,39 @@ Refer to [Working with Measurements](../../tutorials/working_with_measurements.m ::: +The first feature is MAX LTE rate, representing the user's estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links. + +| Feature | Observation | Min | Max | +| ----- | ---- | ----- | ---- | +| 0 | MAX LTE rate (mbps) | 0.0 | Inf | +| 1 | MAX Wi-Fi rate (mbps) | 0.0 | Inf | +| 2 | throughput (mbps) | 0.0 | Inf| + +## Action Space +The action space is a `ndarray` with shape `(N,)` representing the traffic ratio over Wi-Fi for N users. The traffic ratio over Cellular equals (1.0 - action). + +| Num | Action | Min | Max | +| ----- | ---- | ----- | ---- | +| 0 | Wi-Fi traffic ratio for user 0 | 0.0 | 1.0 | +| 1 | Wi-Fi traffic ratio for user 1| 0.0 | 1.0 | +| ... | | | | +| N-1 | Wi-Fi traffic ratio for user N-1| 0.0 | 1.0 | + +## Transition Dynamics +Given an action (Wi-Fi split ratio for user i: R[i]), transmitter i follows the following transition dynamics: +- transmit R[i] traffic over Wi-Fi link. +- transmit (1-R[i]) traffic over LTE link. + +## Reward + +```{eval-rst} +We compute a utility function :math:`f = 0.5 \times log(throughput)-0.5 \times log(OWD)` using the reward function :meth:`network_gym_client.envs.nqos_split.Adapter.netowrk_util`, where OWD is the one-way delay. +The goal of the utility function is to maximize the throughput and minimizing delay. +``` + +## Custom Observation Space and Reward +1. Edit the "subscribed_network_stats" in the [config.json] to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of 'unused' data and reduces overhead. +To subscribe to a specific measurement, add its `source`::`name` combination to the "subscribed_network_stats" list. For example, appending `gma::wifi::dl::traffic_ratio` to the list would enable receiving measurements with the name `wifi::dl::traffic_ratio` from the source `gma`. ```{eval-rst} 2. Customize Observation Space in the :meth:`network_gym_client.envs.nqos_split.Adapter.get_observation` function. 3. Customize Reward in the :meth:`network_gym_client.envs.nqos_split.Adapter.get_reward` function. diff --git a/environments/congestion_control.html b/environments/congestion_control.html index 6362d3d..df6cd61 100644 --- a/environments/congestion_control.html +++ b/environments/congestion_control.html @@ -264,7 +264,7 @@

Congestion Control
RMCAT
-

In this environment, the agent performs periodic actions to control the sending rate of a real-time traffic RMCAT (NADA) flow.

+

In this environment, the agent performs periodic actions to adjust the sending rate of a real-time traffic flow using RTP Media Congestion Avoidance Techniques (RMCAT).

diff --git a/environments/congestion_control/rmcat.html b/environments/congestion_control/rmcat.html index 1304488..394ccb6 100644 --- a/environments/congestion_control/rmcat.html +++ b/environments/congestion_control/rmcat.html @@ -255,10 +255,11 @@

RMCAT#

-../../_images/rmcat.png +../../_images/rmcat.png

The RMCAT environment is part of the congestion control environments and provides general information about the environment. -In this environment, the agent performs periodic actions to control the sending rate of a real-time traffic RMCAT (NADA) flow.

+In this environment, the agent performs periodic actions to adjust the sending rate of a real-time traffic flow using RTP Media Congestion Avoidance Techniques (RMCAT). +This environment is based on the GitHub Repo: cisco/ns3-rmcat.

@@ -284,7 +285,7 @@

Description#

-

The RMCAT environment represents a congestion control problem for real-time traffic. The goal of congestion control is to strategically controls sending rate, aiming to achieve high throughput, low latency and low loss.

+

The RMCAT environment represents a congestion control problem for real-time traffic. The goal of congestion control is to strategically control the sending rate, aiming to achieve high throughput, low latency, and low loss. If no action is given to the environment, RMCAT uses NADA as its default algorithm.

Prerequisite#

@@ -292,7 +293,31 @@

Prerequisite

Observation Space#

-

The observation is an ndarray with shape (3,) representing three features. The first feature is rtt, representing the round trip time. The second feature is xcurr, represeting the congestion level. The third feature is the received throughput rrate.

+

The observation is an ndarray with shape (3,) representing three features selected from the available measurements for this environment.

+
+ +Click to view available measurements for this environment.
+
+
+
+
+

Refer to Working with Measurements for further elaboration of the following measurements.

+
     id        name source      ts                value
+0   [0]      loglen  rmcat  100710               [58.0]
+1   [0]        qdel  rmcat  100710               [30.0]
+2   [0]         rtt  rmcat  100710               [55.0]
+3   [0]       ploss  rmcat  100710                [0.0]
+4   [0]         plr  rmcat  100710                [0.0]
+5   [0]       xcurr  rmcat  100710  [30.17099952697754]
+6   [0]       rrate  rmcat  100710         [774531.375]
+7   [0]       srate  rmcat  100710           [585416.0]
+8   [0]  nada_srate  rmcat  100710        [557536.1875]
+9   [0]      avgint  rmcat  100710                [0.0]
+10  [0]      curint  rmcat  100710                [0.0]
+
+
+
+

The first feature is rtt, representing the round trip time. The second feature is xcurr, represeting the congestion level. The third feature is the received throughput rrate.

@@ -328,38 +353,14 @@

Action Space

Reward#

-

TODO

+

Not implemented yet.

-
-

Custom Observation Space and Reward#

+
+

Customize Observation Space and Reward#

    -
  1. Edit the “subscribed_network_stats” in the config.json to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of ‘unused’ data and reduces overhead. -To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending rmcat::rtt to the list would enable receiving measurements with the name rtt from the source rmcat.

  2. +
  3. Edit the “subscribed_network_stats” in the config.json to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of ‘unused’ data and reduces overhead. To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending rmcat::rtt to the list would enable receiving measurements with the name rtt from the source rmcat.

-
- -Click to view a demo of all measurements for this environment.
-
-
-
-
-

Refer to Working with Measurements for further elaboration of the following measurements.

-
     id        name source      ts                value
-0   [0]      loglen  rmcat  100710               [58.0]
-1   [0]        qdel  rmcat  100710               [30.0]
-2   [0]         rtt  rmcat  100710               [55.0]
-3   [0]       ploss  rmcat  100710                [0.0]
-4   [0]         plr  rmcat  100710                [0.0]
-5   [0]       xcurr  rmcat  100710  [30.17099952697754]
-6   [0]       rrate  rmcat  100710         [774531.375]
-7   [0]       srate  rmcat  100710           [585416.0]
-8   [0]  nada_srate  rmcat  100710        [557536.1875]
-9   [0]      avgint  rmcat  100710                [0.0]
-10  [0]      curint  rmcat  100710                [0.0]
-
-
-
-
    +
    1. Customize Observation Space in the network_gym_client.envs.rmcat.Adapter.get_observation() function.

    2. Customize Reward in the network_gym_client.envs.rmcat.Adapter.get_reward() function.

    @@ -448,7 +449,7 @@

    Episode EndObservation Space
  1. Action Space
  2. Reward
  3. -
  4. Custom Observation Space and Reward
  5. +
  6. Customize Observation Space and Reward
  7. Arguments
  8. Episode End
  9. diff --git a/environments/mx_network_slicing/cellular_network_slicing.html b/environments/mx_network_slicing/cellular_network_slicing.html index 76dae9b..836e329 100644 --- a/environments/mx_network_slicing/cellular_network_slicing.html +++ b/environments/mx_network_slicing/cellular_network_slicing.html @@ -292,8 +292,60 @@

    Prerequisite

    Observation Space#

    -

    The observation space is represented by a multidimensional array (ndarray) with a shape of (5, N), where each of the N slices contains five distinct features:

    -
      +

      The observation space is represented by a multidimensional array (ndarray) with a shape of (5, N), where each of the N slices contains five distinct features selected from the available measurements for this environment:

      +
      + +Click to view available measurements for this environment.
      +
      +
      +
      +
      +

      Refer to Working with Measurements for further elaboration of the following measurements.

      +
                       id                        name source    ts                                              value
      +0   [1, 2, 3, 4, 5]                dl::max_rate    lte  3000                     [75.0, 55.0, 55.0, 75.0, 75.0]
      +1   [1, 2, 3, 4, 5]                     cell_id    lte  3000                          [1.0, 1.0, 1.0, 1.0, 1.0]
      +2   [1, 2, 3, 4, 5]                    slice_id    lte  3000                          [0.0, 0.0, 1.0, 1.0, 1.0]
      +3   [1, 2, 3, 4, 5]                dl::rb_usage    lte  3000                     [2.88, 4.08, 4.32, 2.88, 2.88]
      +4               [1]          dl::cell::max_rate    lte  3000  [{'slice': [0, 1], 'value': [65.0, 68.33333333...
      +5               [1]          dl::cell::rb_usage    lte  3000        [{'slice': [0, 1], 'value': [6.96, 10.08]}]
      +6   [1, 2, 3, 4, 5]           ul::missed_action    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +7   [1, 2, 3, 4, 5]          ul::measurement_ok    gma  3000                          [1.0, 1.0, 1.0, 1.0, 1.0]
      +8   [1, 2, 3, 4, 5]                    ul::rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +9   [1, 2, 3, 4, 5]                ul::qos_rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +10  [1, 2, 3, 4, 5]         ul::delay_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +11  [1, 2, 3, 4, 5]  ul::delay_test_1_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +12  [1, 2, 3, 4, 5]  ul::delay_test_2_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +13  [1, 2, 3, 4, 5]                     ul::owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
      +14  [1, 2, 3, 4, 5]                 ul::max_owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
      +15  [1, 2, 3, 4, 5]                 dl::tx_rate    gma  3000                [2.056, 2.056, 1.942, 2.056, 2.056]
      +16  [1, 2, 3, 4, 5]           lte::dl::priority    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +17  [1, 2, 3, 4, 5]               lte::ul::rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +18  [1, 2, 3, 4, 5]           lte::ul::qos_rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +19  [1, 2, 3, 4, 5]      lte::ul::traffic_ratio    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +20  [1, 2, 3, 4, 5]                lte::ul::owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
      +21  [1, 2, 3, 4, 5]            lte::ul::max_owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
      +22  [1, 2, 3, 4, 5]           dl::missed_action    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +23  [1, 2, 3, 4, 5]          dl::measurement_ok    gma  3000                          [1.0, 1.0, 1.0, 1.0, 1.0]
      +24  [1, 2, 3, 4, 5]                    dl::rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
      +25  [1, 2, 3, 4, 5]                dl::qos_rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
      +26  [1, 2, 3, 4, 5]         dl::delay_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +27  [1, 2, 3, 4, 5]  dl::delay_test_1_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +28  [1, 2, 3, 4, 5]  dl::delay_test_2_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +29  [1, 2, 3, 4, 5]                     dl::owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
      +30  [1, 2, 3, 4, 5]                 dl::max_owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
      +31  [1, 2, 3, 4, 5]                 ul::tx_rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +32  [1, 2, 3, 4, 5]                       x_loc    gma  3000              [19.83, 2.836, 78.31, 46.913, 27.607]
      +33  [1, 2, 3, 4, 5]                       y_loc    gma  3000                [8.645, 0.388, 7.493, 4.089, 2.242]
      +34  [1, 2, 3, 4, 5]           lte::ul::priority    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
      +35  [1, 2, 3, 4, 5]               lte::dl::rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
      +36  [1, 2, 3, 4, 5]           lte::dl::qos_rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
      +37  [1, 2, 3, 4, 5]      lte::dl::traffic_ratio    gma  3000                [100.0, 100.0, 100.0, 100.0, 100.0]
      +38  [1, 2, 3, 4, 5]                lte::dl::owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
      +39  [1, 2, 3, 4, 5]            lte::dl::max_owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
      +
      +
      +
      +
      1. Total Throughput: This measures the total data rate for each slice in Mbps, ranging from 0 to Inf.

      2. Resource Block Usage Rate: It represents the fraction of resource blocks utilized by each slice, expressed as a percentage in the range of [0, 1], with the sum across all slices equal to 1.

      3. Average Delay Violation Rate: Initially measured user-wise and then averaged for each slice, this rate indicates the average proportion of delay violations, expressed as a percentage in the range of [0, 1].

      4. @@ -387,61 +439,9 @@

        RewardCustom Observation Space and Reward#

        1. Edit the “subscribed_network_stats” in the config.json to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of ‘unused’ data and reduces overhead. -To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending gma::wifi::dl::traffic_ratio to the list would enable receiving measurements with the name wifi::dl::traffic_ratio from the source gma.

        2. +To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending gma::lte::dl::rate to the list would enable receiving measurements with the name lte::dl::rate from the source gma.

        -
        - -Click to view a demo of all measurements for this environment.
        -
        -
        -
        -
        -

        Refer to Working with Measurements for further elaboration of the following measurements.

        -
                         id                        name source    ts                                              value
        -0   [1, 2, 3, 4, 5]                dl::max_rate    lte  3000                     [75.0, 55.0, 55.0, 75.0, 75.0]
        -1   [1, 2, 3, 4, 5]                     cell_id    lte  3000                          [1.0, 1.0, 1.0, 1.0, 1.0]
        -2   [1, 2, 3, 4, 5]                    slice_id    lte  3000                          [0.0, 0.0, 1.0, 1.0, 1.0]
        -3   [1, 2, 3, 4, 5]                dl::rb_usage    lte  3000                     [2.88, 4.08, 4.32, 2.88, 2.88]
        -4               [1]          dl::cell::max_rate    lte  3000  [{'slice': [0, 1], 'value': [65.0, 68.33333333...
        -5               [1]          dl::cell::rb_usage    lte  3000        [{'slice': [0, 1], 'value': [6.96, 10.08]}]
        -6   [1, 2, 3, 4, 5]           ul::missed_action    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -7   [1, 2, 3, 4, 5]          ul::measurement_ok    gma  3000                          [1.0, 1.0, 1.0, 1.0, 1.0]
        -8   [1, 2, 3, 4, 5]                    ul::rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -9   [1, 2, 3, 4, 5]                ul::qos_rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -10  [1, 2, 3, 4, 5]         ul::delay_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -11  [1, 2, 3, 4, 5]  ul::delay_test_1_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -12  [1, 2, 3, 4, 5]  ul::delay_test_2_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -13  [1, 2, 3, 4, 5]                     ul::owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
        -14  [1, 2, 3, 4, 5]                 ul::max_owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
        -15  [1, 2, 3, 4, 5]                 dl::tx_rate    gma  3000                [2.056, 2.056, 1.942, 2.056, 2.056]
        -16  [1, 2, 3, 4, 5]           lte::dl::priority    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -17  [1, 2, 3, 4, 5]               lte::ul::rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -18  [1, 2, 3, 4, 5]           lte::ul::qos_rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -19  [1, 2, 3, 4, 5]      lte::ul::traffic_ratio    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -20  [1, 2, 3, 4, 5]                lte::ul::owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
        -21  [1, 2, 3, 4, 5]            lte::ul::max_owd    gma  3000                     [-1.0, -1.0, -1.0, -1.0, -1.0]
        -22  [1, 2, 3, 4, 5]           dl::missed_action    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -23  [1, 2, 3, 4, 5]          dl::measurement_ok    gma  3000                          [1.0, 1.0, 1.0, 1.0, 1.0]
        -24  [1, 2, 3, 4, 5]                    dl::rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
        -25  [1, 2, 3, 4, 5]                dl::qos_rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
        -26  [1, 2, 3, 4, 5]         dl::delay_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -27  [1, 2, 3, 4, 5]  dl::delay_test_1_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -28  [1, 2, 3, 4, 5]  dl::delay_test_2_violation    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -29  [1, 2, 3, 4, 5]                     dl::owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
        -30  [1, 2, 3, 4, 5]                 dl::max_owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
        -31  [1, 2, 3, 4, 5]                 ul::tx_rate    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -32  [1, 2, 3, 4, 5]                       x_loc    gma  3000              [19.83, 2.836, 78.31, 46.913, 27.607]
        -33  [1, 2, 3, 4, 5]                       y_loc    gma  3000                [8.645, 0.388, 7.493, 4.089, 2.242]
        -34  [1, 2, 3, 4, 5]           lte::ul::priority    gma  3000                          [0.0, 0.0, 0.0, 0.0, 0.0]
        -35  [1, 2, 3, 4, 5]               lte::dl::rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
        -36  [1, 2, 3, 4, 5]           lte::dl::qos_rate    gma  3000                [2.056, 2.056, 2.056, 2.056, 2.056]
        -37  [1, 2, 3, 4, 5]      lte::dl::traffic_ratio    gma  3000                [100.0, 100.0, 100.0, 100.0, 100.0]
        -38  [1, 2, 3, 4, 5]                lte::dl::owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
        -39  [1, 2, 3, 4, 5]            lte::dl::max_owd    gma  3000                          [3.0, 3.0, 3.0, 3.0, 3.0]
        -
        -
        -
        -
          +
          1. Customize Observation Space in the network_gym_client.envs.network_slicing.Adapter.get_observation() function.

          2. Customize Reward in the network_gym_client.envs.network_slicing.Adapter.get_reward() function.

          diff --git a/environments/mx_traffic_management/mx_qos_traffic_steering.html b/environments/mx_traffic_management/mx_qos_traffic_steering.html index e0bab18..85975f0 100644 --- a/environments/mx_traffic_management/mx_qos_traffic_steering.html +++ b/environments/mx_traffic_management/mx_qos_traffic_steering.html @@ -303,57 +303,10 @@

          Prerequisite

          Observation Space#

          -

          The observation is an ndarray with shape (3,N,) representing three features for N users. The first feature is MAX LTE rate, representing the user’s estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links.

          -
          -

- - - - - - - - - - - - - - - - - - - - - - - - -

Feature

Observation

Min

Max

0

MAX LTE rate (mbps)

0.0

Inf

1

MAX Wi-Fi rate (mbps)

0.0

Inf

2

throughput (mbps)

0.0

Inf

-
-
-
-

Action Space#

-

The action is a ndarray with shape (N,) which can take values {0, 1} indicating the link to transmit data. N is the number of users.

-
    -
  • 0: Steer traffic over Cellular

  • -
  • 1: Steer traffic over Wi-Fi

  • -
-
-
-

Reward#

-

We computes the number of Quality of Service (QoS) users over Wi-Fi as reward function network_gym_client.envs.qos_steer.Adapter.calculate_wifi_qos_user_num(). Given that Cellular already implements an admission control mechanism to support the maximum number of QoS users, maximizing the QoS users over Wi-Fi also leads to the maximization of the total number of users in the network that meet the QoS requirements. In essence, optimizing the QoS users over Wi-Fi indirectly ensures the best possible overall network performance with the desired QoS levels for all users.

-
-
-

Custom Observation Space and Reward#

-
    -
  1. Edit the “subscribed_network_stats” in the config.json to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of ‘unused’ data and reduces overhead. -To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending gma::wifi::dl::traffic_ratio to the list would enable receiving measurements with the name wifi::dl::traffic_ratio from the source gma.

  2. -
+

The observation is an ndarray with shape (3,N,) representing three features for N users selected from the available measurement for this environment.

-Click to view a demo of all measurements for this environment.
+Click to view available measurements for this environment.
@@ -420,7 +373,55 @@

Custom Observation Space and Reward +

The first feature is MAX LTE rate, representing the user’s estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Feature

Observation

Min

Max

0

MAX LTE rate (mbps)

0.0

Inf

1

MAX Wi-Fi rate (mbps)

0.0

Inf

2

throughput (mbps)

0.0

Inf

+
+
+
+

Action Space#

+

The action is a ndarray with shape (N,) which can take values {0, 1} indicating the link to transmit data. N is the number of users.

+
    +
  • 0: Steer traffic over Cellular

  • +
  • 1: Steer traffic over Wi-Fi

  • +
+
+
+

Reward#

+

We computes the number of Quality of Service (QoS) users over Wi-Fi as reward function network_gym_client.envs.qos_steer.Adapter.calculate_wifi_qos_user_num(). Given that Cellular already implements an admission control mechanism to support the maximum number of QoS users, maximizing the QoS users over Wi-Fi also leads to the maximization of the total number of users in the network that meet the QoS requirements. In essence, optimizing the QoS users over Wi-Fi indirectly ensures the best possible overall network performance with the desired QoS levels for all users.

+
+
+

Custom Observation Space and Reward#

+
    +
  1. Edit the “subscribed_network_stats” in the config.json to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of ‘unused’ data and reduces overhead. +To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending gma::wifi::dl::traffic_ratio to the list would enable receiving measurements with the name wifi::dl::traffic_ratio from the source gma.

  2. +
+
  1. Customize Observation Space in the network_gym_client.envs.qos_steer.Adapter.get_observation() function.

  2. Customize Reward in the network_gym_client.envs.qos_steer.Adapter.get_reward() function.

diff --git a/environments/mx_traffic_management/mx_traffic_splitting.html b/environments/mx_traffic_management/mx_traffic_splitting.html index 575e842..dd8ae7f 100644 --- a/environments/mx_traffic_management/mx_traffic_splitting.html +++ b/environments/mx_traffic_management/mx_traffic_splitting.html @@ -293,7 +293,77 @@

Prerequisite

Observation Space#

-

The observation is an ndarray with shape (3,N,) representing three features for N users. The first feature is MAX LTE rate, representing the user’s estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links.

+

The observation is an ndarray with shape (3,N,) representing three features for N users selected from the available measurements for this environment.

+
+ +Click to view available measurements for this environment.
+
+
+
+
+

Refer to Working with Measurements for further elaboration of the following measurements.

+
              id                        name source    ts                               value
+0   [1, 2, 3, 4]                dl::max_rate    lte  6000            [37.0, 37.0, 23.0, 37.0]
+1   [1, 2, 3, 4]                     cell_id    lte  6000                [1.0, 1.0, 1.0, 1.0]
+2   [1, 2, 3, 4]                    slice_id    lte  6000                [0.0, 0.0, 0.0, 0.0]
+3   [1, 2, 3, 4]                dl::rb_usage    lte  6000       [25.5, 26.625, 25.625, 22.25]
+4            [1]          dl::cell::max_rate    lte  6000   [{'slice': [0], 'value': [33.5]}]
+5            [1]          dl::cell::rb_usage    lte  6000  [{'slice': [0], 'value': [100.0]}]
+6   [1, 2, 3, 4]           ul::missed_action    gma  6000                [0.0, 0.0, 0.0, 0.0]
+7   [1, 2, 3, 4]          ul::measurement_ok    gma  6000                [1.0, 1.0, 1.0, 1.0]
+8   [1, 2, 3, 4]                    ul::rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
+9   [1, 2, 3, 4]                ul::qos_rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
+10  [1, 2, 3, 4]         ul::delay_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
+11  [1, 2, 3, 4]  ul::delay_test_1_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
+12  [1, 2, 3, 4]  ul::delay_test_2_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
+13  [1, 2, 3, 4]                     ul::owd    gma  6000                [1.0, 1.0, 2.0, 2.0]
+14  [1, 2, 3, 4]                 ul::max_owd    gma  6000                [1.0, 1.0, 8.0, 6.0]
+15  [1, 2, 3, 4]                 dl::tx_rate    gma  6000    [12.429, 11.964, 21.721, 49.716]
+16  [1, 2, 3, 4]          wifi::dl::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
+17  [1, 2, 3, 4]              wifi::ul::rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
+18  [1, 2, 3, 4]          wifi::ul::qos_rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
+19  [1, 2, 3, 4]     wifi::ul::traffic_ratio    gma  6000        [100.0, 100.0, 100.0, 100.0]
+20  [1, 2, 3, 4]               wifi::ul::owd    gma  6000                [1.0, 1.0, 2.0, 2.0]
+21  [1, 2, 3, 4]           wifi::ul::max_owd    gma  6000                [1.0, 1.0, 8.0, 6.0]
+22  [1, 2, 3, 4]           lte::dl::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
+23  [1, 2, 3, 4]               lte::ul::rate    gma  6000                [0.0, 0.0, 0.0, 0.0]
+24  [1, 2, 3, 4]           lte::ul::qos_rate    gma  6000                [0.0, 0.0, 0.0, 0.0]
+25  [1, 2, 3, 4]      lte::ul::traffic_ratio    gma  6000                [0.0, 0.0, 0.0, 0.0]
+26  [1, 2, 3, 4]                lte::ul::owd    gma  6000            [-1.0, -1.0, -1.0, -1.0]
+27  [1, 2, 3, 4]            lte::ul::max_owd    gma  6000            [-1.0, -1.0, -1.0, -1.0]
+28  [1, 2, 3, 4]       wifi::dl::split_ratio    gma  6000             [21.0, 2.0, 28.0, 30.0]
+29  [1, 2, 3, 4]        lte::dl::split_ratio    gma  6000              [11.0, 30.0, 4.0, 2.0]
+30  [1, 2, 3, 4]           dl::missed_action    gma  6000                [0.0, 0.0, 0.0, 0.0]
+31  [1, 2, 3, 4]          dl::measurement_ok    gma  6000                [1.0, 1.0, 1.0, 1.0]
+32  [1, 2, 3, 4]                    dl::rate    gma  6000    [11.616, 11.616, 16.024, 57.144]
+33  [1, 2, 3, 4]                dl::qos_rate    gma  6000    [11.616, 11.616, 16.024, 57.144]
+34  [1, 2, 3, 4]         dl::delay_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
+35  [1, 2, 3, 4]  dl::delay_test_1_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
+36  [1, 2, 3, 4]  dl::delay_test_2_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
+37  [1, 2, 3, 4]                     dl::owd    gma  6000         [202.0, 118.0, 312.0, 40.0]
+38  [1, 2, 3, 4]                 dl::max_owd    gma  6000        [217.0, 161.0, 359.0, 119.0]
+39  [1, 2, 3, 4]                 ul::tx_rate    gma  6000        [0.208, 0.208, 0.287, 1.023]
+40  [1, 2, 3, 4]                       x_loc    gma  6000     [13.871, 6.703, 52.198, 33.715]
+41  [1, 2, 3, 4]                       y_loc    gma  6000        [7.964, 1.676, 9.021, 0.988]
+42  [1, 2, 3, 4]          wifi::ul::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
+43  [1, 2, 3, 4]              wifi::dl::rate    gma  6000       [8.24, 0.696, 15.216, 35.312]
+44  [1, 2, 3, 4]          wifi::dl::qos_rate    gma  6000       [8.24, 0.696, 15.216, 35.312]
+45  [1, 2, 3, 4]     wifi::dl::traffic_ratio    gma  6000             [48.0, 7.0, 73.0, 83.0]
+46  [1, 2, 3, 4]               wifi::dl::owd    gma  6000                [0.0, 0.0, 3.0, 5.0]
+47  [1, 2, 3, 4]           wifi::dl::max_owd    gma  6000               [1.0, 0.0, 8.0, 17.0]
+48  [1, 2, 3, 4]           lte::ul::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
+49  [1, 2, 3, 4]               lte::dl::rate    gma  6000        [9.056, 8.712, 5.568, 7.432]
+50  [1, 2, 3, 4]           lte::dl::qos_rate    gma  6000        [9.056, 8.712, 5.568, 7.432]
+51  [1, 2, 3, 4]      lte::dl::traffic_ratio    gma  6000            [52.0, 93.0, 27.0, 17.0]
+52  [1, 2, 3, 4]                lte::dl::owd    gma  6000         [202.0, 117.0, 310.0, 61.0]
+53  [1, 2, 3, 4]            lte::dl::max_owd    gma  6000        [217.0, 161.0, 359.0, 119.0]
+54  [1, 2, 3, 4]                     cell_id   wifi  6000                [0.0, 0.0, 1.0, 1.0]
+55  [1, 2, 3, 4]                dl::max_rate   wifi  6000            [78.0, 78.0, 65.0, 78.0]
+56  [1, 2, 3, 4]                ul::max_rate   wifi  6000            [78.0, 78.0, 78.0, 78.0]
+
+
+
+

The first feature is MAX LTE rate, representing the user’s estimation of channel capacity (e.g., the max rate if the user utilizes all resources). The second feature is the Max Wi-Fi rate, and the third feature is the received throughput, combining both links.

@@ -379,76 +449,7 @@

Custom Observation Space and Rewardconfig.json to include only the necessary measurements required for computing observations and rewards. This minimizes the transmission of ‘unused’ data and reduces overhead. To subscribe to a specific measurement, add its source::name combination to the “subscribed_network_stats” list. For example, appending gma::wifi::dl::traffic_ratio to the list would enable receiving measurements with the name wifi::dl::traffic_ratio from the source gma.

-
- -Click to view a demo of all measurements for this environment.
-
-
-
-
-

Refer to Working with Measurements for further elaboration of the following measurements.

-
              id                        name source    ts                               value
-0   [1, 2, 3, 4]                dl::max_rate    lte  6000            [37.0, 37.0, 23.0, 37.0]
-1   [1, 2, 3, 4]                     cell_id    lte  6000                [1.0, 1.0, 1.0, 1.0]
-2   [1, 2, 3, 4]                    slice_id    lte  6000                [0.0, 0.0, 0.0, 0.0]
-3   [1, 2, 3, 4]                dl::rb_usage    lte  6000       [25.5, 26.625, 25.625, 22.25]
-4            [1]          dl::cell::max_rate    lte  6000   [{'slice': [0], 'value': [33.5]}]
-5            [1]          dl::cell::rb_usage    lte  6000  [{'slice': [0], 'value': [100.0]}]
-6   [1, 2, 3, 4]           ul::missed_action    gma  6000                [0.0, 0.0, 0.0, 0.0]
-7   [1, 2, 3, 4]          ul::measurement_ok    gma  6000                [1.0, 1.0, 1.0, 1.0]
-8   [1, 2, 3, 4]                    ul::rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
-9   [1, 2, 3, 4]                ul::qos_rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
-10  [1, 2, 3, 4]         ul::delay_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
-11  [1, 2, 3, 4]  ul::delay_test_1_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
-12  [1, 2, 3, 4]  ul::delay_test_2_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
-13  [1, 2, 3, 4]                     ul::owd    gma  6000                [1.0, 1.0, 2.0, 2.0]
-14  [1, 2, 3, 4]                 ul::max_owd    gma  6000                [1.0, 1.0, 8.0, 6.0]
-15  [1, 2, 3, 4]                 dl::tx_rate    gma  6000    [12.429, 11.964, 21.721, 49.716]
-16  [1, 2, 3, 4]          wifi::dl::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
-17  [1, 2, 3, 4]              wifi::ul::rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
-18  [1, 2, 3, 4]          wifi::ul::qos_rate    gma  6000        [0.192, 0.208, 0.272, 0.792]
-19  [1, 2, 3, 4]     wifi::ul::traffic_ratio    gma  6000        [100.0, 100.0, 100.0, 100.0]
-20  [1, 2, 3, 4]               wifi::ul::owd    gma  6000                [1.0, 1.0, 2.0, 2.0]
-21  [1, 2, 3, 4]           wifi::ul::max_owd    gma  6000                [1.0, 1.0, 8.0, 6.0]
-22  [1, 2, 3, 4]           lte::dl::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
-23  [1, 2, 3, 4]               lte::ul::rate    gma  6000                [0.0, 0.0, 0.0, 0.0]
-24  [1, 2, 3, 4]           lte::ul::qos_rate    gma  6000                [0.0, 0.0, 0.0, 0.0]
-25  [1, 2, 3, 4]      lte::ul::traffic_ratio    gma  6000                [0.0, 0.0, 0.0, 0.0]
-26  [1, 2, 3, 4]                lte::ul::owd    gma  6000            [-1.0, -1.0, -1.0, -1.0]
-27  [1, 2, 3, 4]            lte::ul::max_owd    gma  6000            [-1.0, -1.0, -1.0, -1.0]
-28  [1, 2, 3, 4]       wifi::dl::split_ratio    gma  6000             [21.0, 2.0, 28.0, 30.0]
-29  [1, 2, 3, 4]        lte::dl::split_ratio    gma  6000              [11.0, 30.0, 4.0, 2.0]
-30  [1, 2, 3, 4]           dl::missed_action    gma  6000                [0.0, 0.0, 0.0, 0.0]
-31  [1, 2, 3, 4]          dl::measurement_ok    gma  6000                [1.0, 1.0, 1.0, 1.0]
-32  [1, 2, 3, 4]                    dl::rate    gma  6000    [11.616, 11.616, 16.024, 57.144]
-33  [1, 2, 3, 4]                dl::qos_rate    gma  6000    [11.616, 11.616, 16.024, 57.144]
-34  [1, 2, 3, 4]         dl::delay_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
-35  [1, 2, 3, 4]  dl::delay_test_1_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
-36  [1, 2, 3, 4]  dl::delay_test_2_violation    gma  6000                [0.0, 0.0, 0.0, 0.0]
-37  [1, 2, 3, 4]                     dl::owd    gma  6000         [202.0, 118.0, 312.0, 40.0]
-38  [1, 2, 3, 4]                 dl::max_owd    gma  6000        [217.0, 161.0, 359.0, 119.0]
-39  [1, 2, 3, 4]                 ul::tx_rate    gma  6000        [0.208, 0.208, 0.287, 1.023]
-40  [1, 2, 3, 4]                       x_loc    gma  6000     [13.871, 6.703, 52.198, 33.715]
-41  [1, 2, 3, 4]                       y_loc    gma  6000        [7.964, 1.676, 9.021, 0.988]
-42  [1, 2, 3, 4]          wifi::ul::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
-43  [1, 2, 3, 4]              wifi::dl::rate    gma  6000       [8.24, 0.696, 15.216, 35.312]
-44  [1, 2, 3, 4]          wifi::dl::qos_rate    gma  6000       [8.24, 0.696, 15.216, 35.312]
-45  [1, 2, 3, 4]     wifi::dl::traffic_ratio    gma  6000             [48.0, 7.0, 73.0, 83.0]
-46  [1, 2, 3, 4]               wifi::dl::owd    gma  6000                [0.0, 0.0, 3.0, 5.0]
-47  [1, 2, 3, 4]           wifi::dl::max_owd    gma  6000               [1.0, 0.0, 8.0, 17.0]
-48  [1, 2, 3, 4]           lte::ul::priority    gma  6000                [0.0, 0.0, 0.0, 0.0]
-49  [1, 2, 3, 4]               lte::dl::rate    gma  6000        [9.056, 8.712, 5.568, 7.432]
-50  [1, 2, 3, 4]           lte::dl::qos_rate    gma  6000        [9.056, 8.712, 5.568, 7.432]
-51  [1, 2, 3, 4]      lte::dl::traffic_ratio    gma  6000            [52.0, 93.0, 27.0, 17.0]
-52  [1, 2, 3, 4]                lte::dl::owd    gma  6000         [202.0, 117.0, 310.0, 61.0]
-53  [1, 2, 3, 4]            lte::dl::max_owd    gma  6000        [217.0, 161.0, 359.0, 119.0]
-54  [1, 2, 3, 4]                     cell_id   wifi  6000                [0.0, 0.0, 1.0, 1.0]
-55  [1, 2, 3, 4]                dl::max_rate   wifi  6000            [78.0, 78.0, 65.0, 78.0]
-56  [1, 2, 3, 4]                ul::max_rate   wifi  6000            [78.0, 78.0, 78.0, 78.0]
-
-
-
-
    +
    1. Customize Observation Space in the network_gym_client.envs.nqos_split.Adapter.get_observation() function.

    2. Customize Reward in the network_gym_client.envs.nqos_split.Adapter.get_reward() function.

    diff --git a/searchindex.js b/searchindex.js index 88faf78..88ac9db 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["README", "api/network_gym_client", "api/network_gym_client/adapter", "api/network_gym_client/adapter/network_slicing", "api/network_gym_client/adapter/nqos_split", "api/network_gym_client/adapter/qos_steer", "api/network_gym_client/adapter/rmcat", "api/network_gym_client/env", "api/network_gym_client/northbound_interface", "api/network_gym_env", "api/network_gym_env/configure", "api/network_gym_env/simulator", "api/network_gym_env/southbound_interface", "api/network_gym_server", "contact", "content/motivation", "content/overview", "content/quickstart", "environments/congestion_control", "environments/congestion_control/rmcat", "environments/mx_network_slicing", "environments/mx_network_slicing/cellular_network_slicing", "environments/mx_traffic_management", "environments/mx_traffic_management/mx_qos_traffic_steering", "environments/mx_traffic_management/mx_traffic_splitting", "index", "tutorials/handling_time_limits", "tutorials/implementing_custom_environment", "tutorials/training_agents", "tutorials/working_with_measurements"], "filenames": ["README.md", "api/network_gym_client.md", "api/network_gym_client/adapter.md", "api/network_gym_client/adapter/network_slicing.md", "api/network_gym_client/adapter/nqos_split.md", "api/network_gym_client/adapter/qos_steer.md", "api/network_gym_client/adapter/rmcat.md", "api/network_gym_client/env.md", "api/network_gym_client/northbound_interface.md", "api/network_gym_env.md", "api/network_gym_env/configure.md", "api/network_gym_env/simulator.md", "api/network_gym_env/southbound_interface.md", "api/network_gym_server.md", "contact.md", "content/motivation.md", "content/overview.md", "content/quickstart.md", "environments/congestion_control.md", "environments/congestion_control/rmcat.md", "environments/mx_network_slicing.md", "environments/mx_network_slicing/cellular_network_slicing.md", "environments/mx_traffic_management.md", "environments/mx_traffic_management/mx_qos_traffic_steering.md", "environments/mx_traffic_management/mx_traffic_splitting.md", "index.md", "tutorials/handling_time_limits.md", "tutorials/implementing_custom_environment.md", "tutorials/training_agents.md", "tutorials/working_with_measurements.md"], "titles": ["Build Documentation Website", "network_gym_client", "Adapter", "network_slicing Adapter", "nqos_split Adapter", "qos_steer Adapter", "rmcat Adapter", "Env", "NorthBound", "network_gym_env", "Configure", "Dummy Simulator", "SouthBound", "network_gym_server", "Contact", "Motivation", "Overview", "Quickstart", "Congestion Control", "RMCAT", "Network Slicing", "Cellular Network Slicing", "Traffic Management", "Multi-Access QoS Traffic Steering", "Multi-Access Traffic Splitting", "NetworkGym: Democratizing Network AI via Sim-aaS.", "Handling Time Limits", "Implementing Custom Environment", "Training Agents", "Working with Measurements"], "terms": {"option": [0, 1, 7, 17, 19, 21, 23, 24, 25, 26], "creat": [0, 11, 17, 25, 27, 28], "new": [0, 11, 17, 29], "virtual": 0, "python": [0, 17, 25], "environ": [0, 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "python3": [0, 27], "m": [0, 19, 21, 27, 29], "venv": 0, "sphinx_venv": 0, "sourc": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 19, 21, 23, 24, 25, 28], "bin": 0, "activ": [0, 9, 16, 17, 28], "requir": [0, 15, 19, 21, 23, 24, 29], "librari": 0, "pip": 0, "r": [0, 21, 24], "txt": 0, "In": [0, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "doc": 0, "folder": 0, "run": [0, 7, 10, 11, 17, 19, 21, 23, 24, 26], "follow": [0, 1, 7, 10, 19, 21, 23, 24, 25, 27, 29], "command": [0, 27], "export": 0, "static": 0, "_build": 0, "html": 0, "make": [0, 17], "clean": 0, "network_gym_cli": [0, 2, 3, 4, 5, 6, 17, 19, 21, 23, 24, 26], "The": [0, 1, 7, 9, 10, 11, 13, 16, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "contain": [0, 7, 17, 21, 29], "modul": [0, 9], "rm": 0, "sphinx": 0, "apidoc": 0, "o": [0, 17, 25], "d": 0, "2": [0, 7, 19, 21, 23, 24, 25, 27, 29], "markdown": 0, "e": [0, 1, 7, 10, 11, 15, 19, 21, 23, 24, 25, 26, 29], "g": [0, 1, 7, 10, 11, 15, 23, 24, 25, 29], "eval": 0, "autoclass": 0, "env": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 17, 19, 21, 23, 24, 26, 27, 28], "networkgym": [1, 7, 8, 13, 19, 21, 23, 24, 26, 27, 28], "client": [1, 7, 8, 9, 10, 11, 13, 19, 21, 23, 24, 25, 27], "includ": [1, 13, 17, 19, 21, 23, 24, 25, 28, 29], "three": [1, 16, 19, 21, 23, 24, 25, 26], "compon": [1, 9, 10, 13, 25], "custom": [1, 7, 10, 16, 17, 25, 26], "gymnasium": [1, 2, 7, 15, 16, 17, 28], "adapt": [1, 7, 16, 19, 21, 23, 24, 27, 29], "northbound": [1, 7, 13, 16, 17, 25], "interfac": [1, 7, 8, 9, 12, 13, 17, 25, 27], "inheret": 1, "class": [1, 3, 4, 5, 6, 7, 8, 10, 11, 17, 27, 29], "commun": [1, 7, 9, 16, 17], "agent": [1, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29], "us": [1, 7, 10, 11, 15, 17, 20, 21, 24, 25, 26, 27, 28, 29], "standard": [1, 15, 25, 27], "exchang": [1, 9, 10, 17], "ob": [1, 2, 7, 17, 26], "reward": [1, 2, 7, 17, 25, 26, 29], "action": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 18, 20, 22, 25, 26, 27, 28, 29], "reset": [1, 7, 17, 26], "step": [1, 7, 19, 21, 23, 24, 26, 27], "function": [1, 2, 3, 4, 5, 6, 17, 19, 21, 23, 24, 25, 29], "import": [1, 17, 19, 21, 23, 24, 26], "gym": [1, 7, 8, 25], "def": 1, "__init__": 1, "self": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "arg1": 1, "arg2": 1, "super": 1, "return": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 17], "observ": [1, 3, 4, 5, 6, 7, 25, 28, 29], "termin": [1, 7, 9, 10, 11, 17, 19, 21, 23, 24, 27], "truncat": [1, 7, 17, 19, 21, 23, 24], "info": [1, 2, 7, 17, 26, 27, 28], "seed": [1, 7], "none": [1, 7], "transform": [1, 2, 16], "data": [1, 2, 5, 9, 16, 17, 19, 21, 23, 24, 25, 27, 28, 29], "format": [1, 2, 16, 17, 25, 27], "from": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 19, 21, 23, 24, 25, 26, 28, 29], "network_gym": [1, 2, 7], "other": [1, 10, 26], "wai": [1, 7, 24, 29], "around": [1, 25], "network": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 19, 23, 24, 27, 28, 29], "stat": [1, 2, 3, 4, 5, 6, 8, 11, 25], "chang": [1, 26], "polici": [1, 2, 3, 4, 5, 6, 8, 9, 17, 28, 29], "connect": [1, 7, 8, 9, 10, 11, 12, 13, 16, 17, 22, 23, 24, 25], "server": [1, 7, 8, 9, 10, 11, 12, 13, 17, 19, 21, 23, 24, 25, 27], "configur": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 19, 21, 23, 24, 25, 26, 29], "paramet": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 19, 21, 23, 24, 26], "between": [1, 2, 7, 9, 10, 16, 24, 25, 27], "envrion": [1, 13], "config_json": [2, 3, 4, 5, 6, 7, 8, 11, 12, 17, 19, 21, 23, 24, 26], "thi": [2, 3, 4, 5, 6, 7, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29], "i": [2, 3, 4, 7, 8, 10, 11, 16, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "an": [2, 7, 9, 10, 13, 15, 16, 17, 19, 21, 23, 24, 25, 26, 28, 29], "It": [2, 7, 9, 16, 17, 19, 21, 23, 24, 25, 26], "measur": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 19, 21, 23, 24, 25, 27], "json": [2, 3, 4, 5, 6, 7, 8, 11, 12, 17, 19, 21, 23, 24, 26, 27, 29], "space": [2, 3, 4, 5, 6, 7], "also": [2, 7, 15, 17, 21, 23, 24, 25, 26, 27], "can": [2, 7, 9, 10, 16, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "appli": [2, 29], "initi": [2, 3, 4, 5, 6, 7, 8, 9, 10, 21], "file": [2, 3, 4, 5, 6, 7, 8, 11, 12, 17, 19, 21, 23, 24, 26, 27, 29], "wandb_log_buffer_append": 2, "add": [2, 13, 17, 19, 21, 23, 24, 29], "wandb": [2, 17], "log": [2, 7, 24], "buffer": 2, "send": [2, 7, 8, 9, 11, 17, 18, 19, 25, 27, 28, 29], "later": 2, "wandb_log": 2, "dict": [2, 7, 11, 17], "inform": [2, 7, 17, 19, 23, 24, 25], "append": [2, 19, 21, 23, 24, 29], "df_to_dict": 2, "df": [2, 3, 4, 5, 6, 29], "id_nam": 2, "id": [2, 7, 8, 10, 19, 21, 23, 24, 29], "datatyp": 2, "panda": [2, 5], "datafram": [2, 3, 4, 5, 6, 8], "dictionari": [2, 7, 17], "object": [2, 7, 21, 29], "descript": [2, 29], "string": 2, "descritpt": 2, "convert": 2, "fill_empty_featur": 2, "featur": [2, 3, 4, 5, 6, 19, 21, 23, 24, 25], "valu": [2, 4, 7, 17, 19, 21, 23, 24, 27, 29], "fill": 2, "miss": [2, 29], "input": [2, 17, 29], "pd": [2, 3, 4, 5, 6, 8], "int": [2, 3, 7, 8, 10, 11], "list": [2, 7, 10, 11, 17, 19, 21, 23, 24, 29], "result": [2, 7, 11, 17, 19, 21, 23, 24, 26], "after": [2, 7, 17, 19, 21, 23, 24, 26, 29], "replac": 2, "base": [3, 4, 5, 6, 9, 16, 17, 24, 25, 29], "get_observ": [3, 4, 5, 6, 19, 21, 23, 24, 29], "prepar": [3, 4, 5, 6], "should": [3, 4, 5, 6, 7, 17, 21, 27, 29], "same": [3, 4, 5, 6, 10, 21, 27], "number": [3, 4, 5, 6, 7, 11, 17, 19, 21, 23, 24, 26, 27], "defin": [3, 4, 5, 6, 7, 17, 19, 21, 23, 24, 25, 28], "get_observation_spac": [3, 4, 5, 6], "get_reward": [3, 4, 5, 6, 19, 21, 23, 24, 29], "get_polici": [3, 4, 5, 6], "rl": [3, 4, 5, 6, 7, 17, 25, 28, 29], "No": [3, 17, 25, 28], "yet": 3, "get_action_spac": [3, 4, 5, 6], "get": [3, 4, 5, 6, 7], "get_rbg_siz": 3, "bandwidth": [3, 23, 29], "comput": [3, 17, 19, 21, 23, 24, 25, 29], "resourc": [3, 20, 21, 23, 24, 29], "block": [3, 21, 29], "group": [3, 21, 27], "size": [3, 29], "bandwith": 3, "rb": [3, 21], "code": [3, 10, 28, 29], "coppi": 3, "ns3": 3, "pf": 3, "type": [3, 7, 17, 25, 27], "0": [3, 4, 7, 17, 19, 21, 23, 24, 26, 27, 29], "alloc": [3, 20, 21], "rbg": 3, "resouc": 3, "netowrk_util": [4, 24], "throughput": [4, 19, 21, 23, 24, 29], "delai": [4, 7, 21, 23, 24, 28, 29], "alpha": 4, "5": [4, 19, 21, 23, 24, 27, 29], "calcul": [4, 5, 23, 29], "util": [4, 10, 16, 21, 23, 24, 25, 27, 29], "specifi": [4, 7, 17, 19, 21, 23, 24, 26], "balanc": 4, "default": [4, 5, 7, 17, 21, 25, 29], "float": 4, "repres": [4, 17, 19, 21, 23, 24, 29], "bit": 4, "per": [4, 5, 19, 21, 23, 24, 26], "second": [4, 17, 19, 23, 24, 26], "metric": [4, 17], "calculate_wifi_qos_user_num": [5, 23], "qos_rat": [5, 21, 23, 24, 27, 29], "qo": [5, 15, 17, 22, 29], "user": [5, 7, 11, 17, 21, 22, 23, 24, 25, 27, 28, 29], "over": [5, 22, 23, 24, 29], "wi": [5, 22, 23, 24, 27], "fi": [5, 22, 23, 24, 27], "rate": [5, 18, 19, 21, 23, 24, 27, 29], "doubl": 5, "initil": [7, 11], "intern": [7, 17], "state": [7, 17, 25, 28], "": [7, 9, 10, 17, 19, 21, 23, 24, 26, 27, 28, 29], "prng": 7, "np_random": 7, "If": [7, 17, 23, 26, 29], "doe": [7, 25], "alreadi": [7, 23], "have": [7, 17, 19, 21, 23, 24, 25, 26, 28], "pass": 7, "chosen": 7, "some": [7, 17, 29], "entropi": 7, "timestamp": [7, 11, 29], "dev": 7, "urandom": 7, "howev": [7, 23, 29], "ha": [7, 17, 19, 21, 23, 24, 26], "you": [7, 16, 17, 19, 21, 23, 24, 26, 27, 28, 29], "integ": 7, "even": 7, "exist": [7, 29], "usual": 7, "want": 7, "right": [7, 21], "been": [7, 17, 28], "never": 7, "again": 7, "pleas": [7, 25, 27], "refer": [7, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "minim": [7, 19, 21, 23, 24], "exampl": [7, 17, 19, 21, 23, 24, 29], "abov": [7, 25], "see": [7, 19, 21, 23, 24], "paradigm": 7, "addit": [7, 17, 25], "how": [7, 16, 17, 25, 26, 27], "depend": [7, 27], "specif": [7, 15, 16, 19, 21, 23, 24, 25, 26, 28, 29], "obstyp": 7, "auxiliari": 7, "complement": 7, "analog": 7, "one": [7, 9, 11, 17, 21, 24, 26, 29], "timestep": [7, 17], "dynam": [7, 23, 29], "gamsim": 7, "check": 7, "last": [7, 26, 29], "episod": [7, 17, 26, 27], "done": [7, 17], "acttyp": 7, "provid": [7, 10, 16, 17, 19, 23, 24, 25, 26, 27, 28, 29], "updat": [7, 17, 22, 24], "element": [7, 16, 17, 29], "observation_spac": [7, 17], "next": [7, 17], "due": 7, "supportsfloat": 7, "take": [7, 17, 21, 23, 29], "bool": 7, "whether": 7, "reach": [7, 17], "under": 7, "mdp": 7, "task": [7, 27], "which": [7, 16, 17, 21, 23], "posit": [7, 21, 23, 24], "neg": 7, "goal": [7, 19, 23, 24, 29], "move": 7, "lava": 7, "sutton": 7, "barton": 7, "gridworld": 7, "true": [7, 17, 23], "need": [7, 15, 17, 21], "call": [7, 17], "condit": 7, "outsid": 7, "scope": 7, "satisfi": 7, "typic": 7, "timelimit": [7, 17], "could": [7, 17, 29], "indic": [7, 21, 23, 29], "physic": [7, 25], "go": 7, "out": [7, 17, 25, 29], "bound": [7, 17, 29], "end": [7, 9, 17, 25, 26], "prematur": 7, "befor": 7, "diagnost": 7, "help": [7, 17], "debug": 7, "learn": [7, 15, 25, 27, 28], "raw": 7, "flag": 7, "deprec": 7, "A": [7, 11, 17, 19, 21, 23, 24, 25, 26, 28, 29], "boolean": 7, "case": [7, 15, 17, 21, 25, 29], "further": [7, 17, 19, 21, 23, 24], "undefin": 7, "wa": [7, 29], "remov": 7, "openai": 7, "v26": 7, "favor": 7, "signal": [7, 9, 10, 17, 24, 29], "mai": [7, 17, 26], "emit": 7, "differ": [7, 17, 25, 26], "reason": 7, "mayb": 7, "underli": [7, 10], "solv": 7, "successfulli": [7, 27], "certain": [7, 19, 21, 23, 24, 26], "exceed": [7, 17], "simul": [7, 9, 10, 15, 16, 25, 29], "enter": 7, "invalid": 7, "action_spac": [7, 17, 26, 28], "correspond": [7, 16, 29], "valid": [7, 17, 29], "all": [7, 10, 17, 19, 20, 21, 23, 24, 27, 29], "For": [7, 17, 19, 21, 23, 24, 25, 27, 29], "discret": [7, 17], "give": 7, "mean": 7, "ar": [7, 9, 10, 17, 19, 21, 23, 24, 27], "two": [7, 9, 13, 16, 25, 26], "1": [7, 17, 19, 21, 23, 24, 26, 27, 29], "box": [7, 16, 17, 19, 21, 23, 24], "3": [7, 9, 10, 15, 16, 17, 19, 21, 23, 24, 25, 26, 27, 29], "4028234663852886e": 7, "38": [7, 21, 23, 24], "4": [7, 19, 21, 23, 24, 27, 29], "float32": [7, 19, 21, 23, 24], "shape": [7, 17, 19, 21, 23, 24], "denot": [7, 19, 21, 23, 24, 26, 29], "arrai": [7, 17, 21, 28], "we": [7, 13, 17, 21, 23, 24, 25, 26], "well": 7, "high": [7, 19, 23, 24, 25, 29], "8000002e": 7, "00": 7, "4028235e": 7, "1887903e": 7, "01": 7, "dtype": 7, "low": [7, 19, 24, 29], "northbound_interface_cli": 7, "traslat": 7, "dataformat": 7, "northboundcli": 8, "sever": 8, "repli": 8, "start": [8, 9, 10, 11, 19, 26, 27], "request": [8, 9], "where": [8, 17, 21, 24, 29], "load": [8, 17, 19, 21, 23, 24, 29], "recv": 8, "receiv": [8, 9, 11, 17, 19, 21, 23, 24, 27, 29], "messag": [8, 9, 10], "process_measur": 8, "reply_json": 8, "process": [8, 9, 26, 27], "compris": [9, 16], "core": 9, "These": [9, 28], "establish": [9, 10, 16, 17, 27], "via": [9, 12, 27], "design": [9, 21, 25, 28], "southbound": [9, 11, 13, 16, 17, 25, 27], "serv": [9, 21, 25], "bridg": 9, "facilit": [9, 10, 16, 17, 25], "statist": [9, 29], "keep": [9, 16], "aliv": 9, "period": [9, 10, 18, 19, 20, 22, 23, 24], "dispatch": [9, 10], "hello": [9, 10, 27], "upon": [9, 10], "disengag": 9, "n": [9, 10, 15, 16, 17, 21, 23, 24, 25], "smulat": 9, "instig": 9, "plan": [9, 13, 17], "incorpor": 9, "emul": [9, 16], "testb": [9, 16, 27, 29], "altern": 9, "earmark": 9, "futur": 9, "releas": [9, 13], "depict": [9, 16], "flow": [9, 18, 19, 23, 29], "complet": [9, 27], "cycl": 9, "within": [9, 16, 17, 21, 27, 29], "session": [9, 16, 17, 19, 21, 23, 24, 26], "launch": [9, 10, 17, 27], "env_config": [9, 10, 11, 26, 27], "trigger": [9, 28], "gener": [9, 11, 19, 21, 23, 24, 26, 27, 29], "incom": 9, "onc": [9, 17, 19, 21, 23, 24, 26, 27], "conclud": 9, "map": [9, 13, 16, 17], "onli": [9, 10, 19, 21, 23, 24, 27, 29], "env_sim": [9, 10, 11, 27], "ani": [9, 17, 23, 25], "given": [9, 21, 23, 24], "moment": [9, 21], "cannot": [9, 19, 21, 23, 24, 26], "occur": 9, "simultan": 9, "standpoint": 9, "treat": 9, "both": [9, 17, 19, 21, 22, 23, 24, 26, 29], "equival": 9, "identifi": [9, 29], "them": [9, 17, 21, 25], "entiti": [9, 10, 25, 27, 29], "networkgymsim": 10, "env_list": [10, 27], "recept": 10, "its": [10, 16, 19, 21, 23, 24, 29], "socket": [10, 11, 12, 27], "ident": [10, 11, 12], "identif": 10, "subsequ": [10, 19, 21, 23, 24, 26], "commenc": 10, "conclus": 10, "close": 10, "reconnect": 10, "point": [10, 19, 21, 23, 24, 26, 29], "perceiv": 10, "divis": 10, "advantag": [10, 28], "straightforward": [10, 17, 27], "expans": 10, "test": [10, 15, 23, 27, 29], "while": [10, 20, 21, 26], "str": [10, 11, 12], "support": [10, 16, 17, 23, 27], "non": [10, 17], "offic": 10, "account": [10, 21, 29], "name": [10, 11, 17, 19, 21, 23, 24, 27, 29], "env_ident": 11, "client_ident": 11, "msg_json": 11, "random": [11, 17, 21, 23, 24], "sampl": [11, 17, 26, 28], "when": [11, 13, 19, 21, 23, 24, 25, 27, 28, 29], "resum": 11, "env_idennt": 11, "env_port": 11, "first": [11, 17, 19, 23, 24, 26], "who": 11, "msg": [11, 27], "cliet": 11, "generate_dummy_measur": 11, "tag": [11, 27, 29], "num_us": 11, "ad": 11, "start_simul": 11, "api": [11, 15, 28], "report": 11, "run_one_interv": 11, "interv": [11, 17, 29], "southbound_interfac": 12, "southbound_connect": 12, "indent": 12, "zmq": 12, "manag": [13, 17, 23, 24, 25], "select": [13, 16, 17, 19, 21, 22, 23, 24, 27], "idl": 13, "instanc": [13, 17, 25, 27, 29], "rout": [13, 16], "tabl": 13, "At": [13, 16, 19, 21, 23, 24, 26], "present": [13, 16, 17, 23, 27], "do": 13, "softwar": [13, 25], "email": 14, "github": [14, 19, 21, 23, 24, 27], "slack": 14, "real": [15, 18, 19], "world": [15, 25], "dataset": 15, "control": [15, 19, 23, 25], "oper": [15, 19, 21, 23, 24, 25, 26], "difficult": 15, "acquir": 15, "align": [15, 27], "usag": [15, 21, 29], "itself": 15, "enough": 15, "train": [15, 17, 19, 21, 23, 24, 25], "reinforc": [15, 25, 28], "etc": [15, 25], "current": [15, 29], "enabl": [15, 16, 17, 19, 21, 23, 24, 25, 28, 29], "multi": [15, 29], "access": [15, 19, 21, 25, 27, 29], "traffic": [15, 18, 19, 29], "split": [15, 22, 29], "awar": 15, "steer": [15, 22], "cellular": [15, 20, 23, 24], "ran": [15, 17, 25], "slice": [15, 23, 24, 29], "tool": [15, 25], "often": 15, "veri": 15, "complex": [15, 29], "especi": 15, "research": [15, 16, 17, 25], "without": [15, 23, 25], "expertis": [15, 25], "lack": 15, "common": 15, "simpl": [15, 17], "evalu": [15, 23, 27], "benchmark": 15, "adher": [15, 21], "addition": [15, 16, 17, 27], "offer": [15, 16, 25, 28], "framework": [16, 25], "consist": [16, 17, 25], "essenti": [16, 17, 25, 27], "each": [16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "plai": [16, 25], "crucial": [16, 25], "role": [16, 25, 28], "system": [16, 17, 21, 25, 29], "encompass": 16, "seamless": 16, "interact": [16, 25, 26, 27, 28], "displai": 16, "below": [16, 17, 26, 28, 29], "graphic": 16, "architectur": [16, 25], "visual": [16, 17], "aid": 16, "divers": [16, 27], "collabor": [16, 17], "harmoni": 16, "form": 16, "streamlin": [16, 25, 27], "effect": [16, 17, 25], "servic": [16, 20, 21, 23, 25], "tailor": [16, 21, 25], "advanc": 16, "ai": [16, 17], "develop": [16, 17, 25], "By": [16, 21, 25, 29], "click": [16, 19, 21, 23, 24, 29], "blue": 16, "navig": 16, "directli": 16, "page": [16, 25], "respect": [16, 17, 21, 25], "main": 16, "respons": 16, "allow": [16, 17, 25, 28], "compat": 16, "like": [16, 21, 25], "stabl": [16, 25], "baselines3": [16, 25], "cleanrl": [16, 25], "desir": [16, 23], "central": 16, "maintain": [16, 25], "track": 16, "assign": [16, 21, 23, 24, 27], "dure": [16, 23], "either": [16, 17, 19, 21, 23, 24], "through": [16, 17, 19, 21, 23, 24, 25, 26, 27], "distinct": [16, 21], "machin": [17, 19, 21, 23, 24, 25], "requst": 17, "mlwin": 17, "ring": 17, "univers": 17, "public": 17, "internet": 17, "intel": 17, "issu": [17, 29], "feel": 17, "free": 17, "u": [17, 27], "netaigym": [17, 27], "gmail": [17, 27], "com": [17, 27], "sim": 17, "aa": 17, "devcloud": 17, "avail": [17, 23, 25, 28, 29], "meanwhil": [17, 21], "enhanc": 17, "capabl": 17, "5g": 17, "distribut": [17, 21, 23, 24], "energi": 17, "save": 17, "predict": 17, "more": [17, 19, 21, 23, 24, 25, 29], "gain": 17, "begin": 17, "download": [17, 19, 21, 23, 24], "your": [17, 25, 29], "prompt": 17, "collect": [17, 25, 28], "forward": [17, 27], "norhtbound": 17, "nb": 17, "algorithm": [17, 21, 25, 29], "store": [17, 29], "relev": 17, "transmit": [17, 19, 21, 23, 24, 27], "sb": [17, 27], "continu": [17, 19, 21, 23, 24, 26], "conveni": 17, "websit": 17, "demonstr": [17, 26, 27], "packag": 17, "networkgymenv": [17, 19, 21, 23, 24, 26], "client_id": [17, 19, 21, 23, 24, 26], "argument": 17, "classic": 17, "loop": [17, 25], "implement": [17, 21, 23, 25], "load_config_fil": [17, 19, 21, 23, 24, 26], "env_nam": [17, 26, 27], "nqos_split": [17, 24, 26], "num_step": [17, 26], "1000": [17, 26], "rang": [17, 21, 26, 28], "exit": [17, 19, 21, 23, 24, 26], "break": [17, 26], "epsiod": [17, 26], "up": [17, 26], "still": [17, 26], "anoth": [17, 26], "keyword": 17, "associ": 17, "dedic": [17, 20, 21], "worker": 17, "until": 17, "parallel": 17, "obtain": 17, "perform": [17, 18, 19, 20, 22, 23, 24, 25, 26], "As": 17, "along": 17, "One": 17, "multipl": [17, 21, 23, 24, 29], "fix": 17, "restart": 17, "scenario": [17, 23], "sequenti": 17, "success": 17, "insight": 17, "time": [17, 18, 19, 21, 23, 24, 29], "constraint": [17, 21], "found": 17, "handl": [17, 19, 21, 23, 24], "limit": [17, 19, 21, 23, 24, 27], "illustr": [17, 26, 29], "everi": [17, 21, 23, 24], "attribut": 17, "understand": 17, "expect": [17, 27], "output": [17, 27, 29], "instead": 17, "prefer": 17, "empti": [17, 25, 28], "shown": [17, 27, 28], "np": [17, 28], "inherit": 17, "major": 17, "possibl": [17, 23], "might": [17, 29], "describ": 17, "dimension": 17, "upper": 17, "lower": 17, "our": [17, 21, 27], "shift": 17, "tupl": 17, "multibinari": 17, "binari": 17, "multidiscret": [17, 23], "wrapper": 17, "maximum": [17, 21, 23, 29], "clipact": 17, "clip": 17, "li": 17, "rescaleact": 17, "rescal": 17, "lie": 17, "timeawareobserv": 17, "about": [17, 19, 21, 23, 24, 25], "index": [17, 29], "ensur": [17, 19, 21, 23, 24], "transit": 17, "markov": 17, "flattenobserv": 17, "flatten": 17, "normalizeobserv": 17, "normal": 17, "t": [17, 19, 21, 23, 24, 27, 29], "coordin": [17, 29], "center": [17, 25], "unit": [17, 27], "varianc": 17, "wrap": 17, "arg": 17, "normal_obs_env": 17, "rmcat": [18, 29], "nada": [18, 19, 29], "part": [19, 23, 24], "congest": [19, 29], "inf": [19, 21, 23, 24], "150000": 19, "1500000": 19, "config": [19, 21, 23, 24], "problem": [19, 24], "strateg": [19, 21, 24], "aim": [19, 23, 24], "achiev": [19, 23, 24, 25, 29], "latenc": [19, 24], "loss": [19, 23, 29], "vlab": [19, 21, 23, 24, 27], "ndarrai": [19, 21, 23, 24], "rtt": [19, 29], "round": [19, 29], "trip": [19, 29], "xcurr": [19, 29], "represet": 19, "level": [19, 20, 21, 23], "third": [19, 23, 24], "rrate": [19, 29], "min": [19, 21, 23, 24], "max": [19, 21, 23, 24], "500": [19, 23, 29], "bp": [19, 29], "todo": 19, "edit": [19, 21, 23, 24], "subscribed_network_stat": [19, 21, 23, 24, 29], "necessari": [19, 21, 23, 24], "transmiss": [19, 21, 23, 24], "unus": [19, 21, 23, 24], "reduc": [19, 21, 23, 24], "overhead": [19, 21, 23, 24], "To": [19, 21, 23, 24, 28, 29], "subscrib": [19, 21, 23, 24, 29], "combin": [19, 21, 23, 24, 29], "would": [19, 21, 23, 24, 27, 29], "view": [19, 21, 23, 24, 29], "demo": [19, 21, 23, 24, 27, 28], "work": [19, 21, 23, 24], "elabor": [19, 21, 23, 24], "loglen": [19, 29], "100710": 19, "58": 19, "qdel": [19, 29], "30": [19, 21, 23, 24], "55": [19, 21, 23, 24], "ploss": [19, 29], "plr": [19, 29], "17099952697754": 19, "6": [19, 21, 23, 24, 27], "774531": 19, "375": 19, "7": [19, 21, 23, 24, 27], "srate": [19, 29], "585416": 19, "8": [19, 21, 23, 24, 27], "nada_sr": [19, 29], "557536": 19, "1875": 19, "9": [19, 21, 23, 24, 27], "avgint": [19, 29], "10": [19, 21, 23, 24, 27], "curint": [19, 29], "repo": [19, 21, 23, 24, 27], "detail": [19, 21, 23, 24, 25, 28], "episodes_per_sess": [19, 21, 23, 24, 26], "steps_per_episod": [19, 21, 23, 24, 26], "l": [19, 21, 23, 24, 26], "happen": [19, 21, 23, 24], "length": [19, 21, 23, 24, 26], "note": [19, 21, 23, 24, 26, 29], "reconfigur": [19, 21, 23, 24, 26], "program": [19, 21, 23, 24, 25, 26], "entir": [19, 21, 23, 24, 26], "among": [20, 21], "priorit": [20, 21, 23, 29], "share": [20, 21, 27], "strive": [20, 21], "meet": [20, 21, 23, 29], "agreement": [20, 21], "partit": 21, "percept": 21, "possess": 21, "abil": 21, "great": 21, "effici": [21, 23], "belong": 21, "mac": 21, "schedul": 21, "proport": 21, "fair": 21, "guarante": 21, "equit": 21, "imparti": 21, "network_sl": 21, "pose": 21, "challeng": [21, 23], "compet": 21, "finit": 21, "primari": [21, 23], "multidimension": 21, "five": 21, "total": [21, 23], "mbp": [21, 23, 24, 27], "fraction": 21, "express": 21, "percentag": [21, 29], "sum": [21, 29], "across": [21, 23], "equal": [21, 24, 29], "averag": [21, 29], "violat": [21, 23, 29], "wise": 21, "record": [21, 29], "experienc": 21, "millisecond": 21, "exce": 21, "surpass": 21, "appropri": 21, "scale": 21, "down": 21, "softmax": 21, "mathemat": 21, "sum_": 21, "a_i": 21, "quad": 21, "frac": 21, "j": 21, "a_j": 21, "num": [21, 24], "factor": 21, "cost": 21, "formul": 21, "left": 21, "text": 21, "_i": 21, "lambda": 21, "cdot": 21, "delay_violation_r": 21, "gamma": 21, "rb_usage_r": 21, "adjust": [21, 23, 27], "emphasi": 21, "consider": 21, "gma": [21, 23, 24, 27, 29], "wifi": [21, 23, 24, 29], "dl": [21, 23, 24, 27, 29], "traffic_ratio": [21, 23, 24, 29], "max_rat": [21, 23, 24, 27, 29], "lte": [21, 22, 23, 24, 27, 29], "3000": 21, "75": 21, "cell_id": [21, 23, 24, 29], "slice_id": [21, 23, 24, 29], "rb_usag": [21, 23, 24, 29], "88": 21, "08": 21, "32": [21, 23, 24], "cell": [21, 23, 24, 29], "65": [21, 23, 24], "68": 21, "33333333": 21, "96": 21, "ul": [21, 23, 24, 29], "missed_act": [21, 23, 24, 29], "measurement_ok": [21, 23, 24, 29], "delay_viol": [21, 23, 24, 29], "11": [21, 23, 24, 29], "delay_test_1_viol": [21, 23, 24, 29], "12": [21, 23, 24], "delay_test_2_viol": [21, 23, 24, 29], "13": [21, 23, 24], "owd": [21, 23, 24, 27, 29], "14": [21, 23, 24], "max_owd": [21, 23, 24, 29], "15": [21, 23, 24], "tx_rate": [21, 23, 24, 29], "056": [21, 23, 24], "942": 21, "16": [21, 23, 24, 29], "prioriti": [21, 23, 24, 29], "17": [21, 23, 24], "18": [21, 23, 24], "19": [21, 23, 24], "20": [21, 23, 24], "21": [21, 23, 24], "22": [21, 23, 24], "23": [21, 23, 24], "24": [21, 23, 24], "25": [21, 23, 24], "26": [21, 23, 24], "27": [21, 23, 24], "28": [21, 23, 24], "29": [21, 23, 24], "31": [21, 23, 24], "x_loc": [21, 23, 24, 29], "83": [21, 24], "836": 21, "78": [21, 23, 24], "46": [21, 23, 24], "913": 21, "607": 21, "33": [21, 23, 24], "y_loc": [21, 23, 24, 29], "645": [21, 23], "388": 21, "493": 21, "089": 21, "242": 21, "34": [21, 23, 24], "35": [21, 23, 24], "36": [21, 23, 24], "37": [21, 23, 24], "100": [21, 23, 24], "39": [21, 23, 24], "uniform": [21, 23, 24], "2d": [21, 23, 24], "plane": [21, 23, 24], "x": [21, 23, 24, 29], "y": [21, 23, 24, 29], "boundari": [21, 23, 24], "instal": [21, 23, 24, 27], "walk": [21, 23, 24], "mobil": [21, 23, 24], "model": [21, 23, 24, 25], "mx": [22, 23, 24], "ratio": [22, 24, 29], "consid": [22, 23, 24], "link": [22, 23, 24, 27, 29], "dimens": 23, "qos_steer": 23, "randomli": [23, 24], "intellig": 23, "direct": [23, 27, 29], "best": 23, "qualiti": 23, "enable_dynamic_flow_priorit": 23, "fals": 23, "contend": 23, "restrict": 23, "admiss": 23, "subset": 23, "dscp": 23, "mark": [23, 29], "qos_requir": 23, "test_duration_m": 23, "durat": 23, "delay_bound_m": [23, 29], "delay_violation_target": 23, "02": 23, "target": 23, "loss_target": 23, "001": 23, "regard": 23, "packet": [23, 29], "otherwis": [23, 29], "met": 23, "set": 23, "zero": 23, "estim": [23, 24, 29], "channel": [23, 24, 25], "capac": [23, 24, 29], "mechan": 23, "maxim": [23, 24], "lead": 23, "essenc": 23, "optim": [23, 25, 28], "indirectli": 23, "overal": 23, "11000": 23, "091666666666667": 23, "09166666666666666": 23, "016": 23, "54": [23, 24], "983333333333334": 23, "05": 23, "033": 23, "061": 23, "044": 23, "03": 23, "split_ratio": [23, 24, 27, 29], "928": 23, "04": 23, "752": 23, "728": 23, "032": 23, "708": 23, "93": [23, 24], "599": 23, "69": 23, "47": [23, 24], "53": [23, 24], "288": 23, "229": 23, "40": [23, 24], "205": 23, "659": 23, "79": 23, "389": 23, "285": 23, "856": 23, "41": [23, 24], "294": 23, "042": 23, "656": 23, "48": [23, 24], "126": 23, "449": 23, "42": [23, 24], "43": [23, 24], "048": 23, "44": [23, 24], "45": [23, 24], "99": 23, "81": 23, "49": [23, 24], "872": 23, "008": 23, "696": [23, 24], "50": [23, 24], "51": [23, 24], "52": [23, 24], "239": 23, "187": 23, "56": [23, 24], "station": [24, 29], "closest": 24, "handov": 24, "disabl": 24, "transmitt": 24, "f": 24, "6000": [24, 29], "625": 24, "192": 24, "208": 24, "272": 24, "792": 24, "429": 24, "964": 24, "721": 24, "716": 24, "616": [24, 29], "024": [24, 29], "57": [24, 29], "144": [24, 29], "202": 24, "118": 24, "312": 24, "217": 24, "161": 24, "359": 24, "119": 24, "287": 24, "023": 24, "871": 24, "703": 24, "198": 24, "715": 24, "676": 24, "021": 24, "988": 24, "216": 24, "73": 24, "712": 24, "568": 24, "432": 24, "117": 24, "310": 24, "61": 24, "innov": 25, "concept": 25, "seen": 25, "four": 25, "kei": 25, "knowledg": 25, "fulli": 25, "customiz": 25, "host": 25, "cloud": 25, "open": 25, "inject": 25, "flexibl": [25, 28], "languag": 25, "platform": 25, "separ": [25, 29], "freedom": 25, "emploi": 25, "smoothli": 25, "c": 25, "hide": 25, "secur": 25, "oversight": 25, "independ": 25, "deploy": 25, "deploi": 25, "workload": 25, "thei": 25, "purpos": [25, 28, 29], "offlin": [25, 28], "own": [25, 28], "special": [25, 28], "art": [25, 28], "sota": [25, 28], "tutori": [25, 27, 28], "guidanc": 25, "instruct": [25, 27, 28], "variou": 25, "convers": 25, "comprehens": 25, "overview": 25, "focus": 25, "layer": 25, "involv": [25, 27], "abstract": 25, "power": 25, "aspect": 25, "endeavor": 25, "full": 25, "stack": 25, "edg": 25, "fidel": 25, "proprietari": [25, 27], "applic": [25, 29], "xapp": 25, "rapp": 25, "ric": 25, "digit": 25, "twin": [25, 28], "section": [26, 27], "outlin": 26, "showcas": 26, "inclus": 27, "extern": 27, "equip": 27, "ll": 27, "ultim": 27, "merg": 27, "procedur": 27, "setup": 27, "port": 27, "alter": 27, "8087": 27, "session_nam": 27, "session_kei": 27, "network_gym_env": 27, "common_config": 27, "accord": 27, "start_custom_env": 27, "py": 27, "don": 27, "modifi": [27, 28], "grant": 27, "Then": 27, "start_client_demo": 27, "print": [27, 29], "custom_act": 27, "custom_tag": 27, "9269856811": 27, "5833047032": 27, "6873341799": 27, "0909367353": 27, "3403381109": 27, "0730143189": 27, "4166952968": 27, "3126658201": 27, "9090632796": 27, "6596618891": 27, "start_t": 27, "end_t": 27, "cid": 27, "20000": 27, "21000": 27, "phy": 27, "sole": 27, "ve": 27, "re": 27, "readi": 27, "mirror": 27, "uml": 27, "sequenc": 27, "diagram": 27, "locat": 27, "experi": 27, "contact": 27, "integr": [27, 28], "fulfil": 28, "simpli": 28, "popular": 28, "ones": 28, "ppo": 28, "proxim": 28, "ddpg": 28, "deep": 28, "determinist": 28, "gradient": 28, "sac": 28, "soft": 28, "actor": 28, "critic": 28, "td3": 28, "a2c": 28, "moreov": 28, "seamlessli": 28, "person": 29, "match": 29, "experiment": 29, "field": 29, "explan": 29, "uniqu": 29, "wherea": 29, "convent": 29, "prefix": 29, "captur": 29, "downlink": 29, "origin": 29, "numer": 29, "structur": 29, "acce": 29, "count": 29, "uplink": 29, "too": 29, "long": 29, "wait": 29, "therefor": 29, "alwai": 29, "ulmeasurement_ok": 29, "deliveri": 29, "threshold": 29, "delay_test_1_thresh_m": 29, "delay_test_2_thresh_m": 29, "reorder": 29, "order": 29, "70": 29, "90": 29, "sinc": 29, "255": 29, "staion": 29, "rtp": 29, "media": 29, "avoid": 29, "techniqu": 29, "histori": 29, "queu": 29, "aggreg": 29, "ecn": 29, "previou": 29, "expert": 29, "inter": 29, "most": 29, "recent": 29, "grow": 29, "subscript": 29, "row": 29, "iterrow": 29, "df_rate": 29}, "objects": {"network_gym_client": [[2, 0, 1, "", "Adapter"], [7, 0, 1, "", "Env"], [8, 0, 1, "", "NorthBoundClient"]], "network_gym_client.Adapter": [[2, 1, 1, "", "df_to_dict"], [2, 1, 1, "", "fill_empty_feature"], [2, 1, 1, "", "wandb_log"], [2, 1, 1, "", "wandb_log_buffer_append"]], "network_gym_client.Env": [[7, 2, 1, "", "action_space"], [7, 2, 1, "", "adapter"], [7, 2, 1, "", "northbound_interface_client"], [7, 2, 1, "", "observation_space"], [7, 1, 1, "", "reset"], [7, 1, 1, "", "step"]], "network_gym_client.NorthBoundClient": [[8, 1, 1, "", "connect"], [8, 1, 1, "", "process_measurement"], [8, 1, 1, "", "recv"], [8, 1, 1, "", "send"]], "network_gym_client.envs.network_slicing": [[3, 0, 1, "", "Adapter"]], "network_gym_client.envs.network_slicing.Adapter": [[3, 1, 1, "", "get_action_space"], [3, 1, 1, "", "get_observation"], [3, 1, 1, "", "get_observation_space"], [3, 1, 1, "", "get_policy"], [3, 1, 1, "", "get_rbg_size"], [3, 1, 1, "", "get_reward"]], "network_gym_client.envs.nqos_split": [[4, 0, 1, "", "Adapter"]], "network_gym_client.envs.nqos_split.Adapter": [[4, 1, 1, "", "get_action_space"], [4, 1, 1, "", "get_observation"], [4, 1, 1, "", "get_observation_space"], [4, 1, 1, "", "get_policy"], [4, 1, 1, "", "get_reward"], [4, 1, 1, "", "netowrk_util"]], "network_gym_client.envs.qos_steer": [[5, 0, 1, "", "Adapter"]], "network_gym_client.envs.qos_steer.Adapter": [[5, 1, 1, "", "calculate_wifi_qos_user_num"], [5, 1, 1, "", "get_action_space"], [5, 1, 1, "", "get_observation"], [5, 1, 1, "", "get_observation_space"], [5, 1, 1, "", "get_policy"], [5, 1, 1, "", "get_reward"]], "network_gym_client.envs.rmcat": [[6, 0, 1, "", "Adapter"]], "network_gym_client.envs.rmcat.Adapter": [[6, 1, 1, "", "get_action_space"], [6, 1, 1, "", "get_observation"], [6, 1, 1, "", "get_observation_space"], [6, 1, 1, "", "get_policy"], [6, 1, 1, "", "get_reward"]], "network_gym_env": [[10, 0, 1, "", "Configure"], [11, 0, 1, "", "DummySim"]], "network_gym_env.Configure": [[10, 1, 1, "", "run"]], "network_gym_env.DummySim": [[11, 1, 1, "", "generate_dummy_measurement"], [11, 1, 1, "", "run_one_interval"], [11, 1, 1, "", "start_simulation"]], "network_gym_env.southbound_interface": [[12, 1, 1, "", "southbound_connect"]]}, "objtypes": {"0": "py:class", "1": "py:function", "2": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "function", "Python function"], "2": ["py", "attribute", "Python attribute"]}, "titleterms": {"build": 0, "document": 0, "websit": 0, "instal": 0, "depend": 0, "us": 0, "tip": 0, "auto": 0, "gener": 0, "rst": 0, "file": 0, "add": 0, "class": [0, 2], "function": 0, "md": 0, "network_gym_cli": [1, 7, 8], "adapt": [2, 3, 4, 5, 6], "The": 2, "base": 2, "method": [2, 3, 4, 5, 6, 7, 8, 10, 11, 12], "network_sl": 3, "reward": [3, 4, 5, 6, 19, 21, 23, 24], "addit": [3, 4, 5, 6, 8], "nqos_split": 4, "qos_steer": 5, "rmcat": [6, 19], "env": 7, "attribut": 7, "northbound": 8, "network_gym_env": [9, 10, 11, 12], "networkgym": [9, 15, 16, 17, 25], "uml": 9, "sequenc": 9, "diagram": 9, "configur": 10, "dummi": [11, 27], "simul": [11, 17, 27], "dummysim": 11, "southbound": 12, "network_gym_serv": 13, "contact": 14, "motiv": 15, "network": [15, 20, 21, 25], "ai": [15, 25], "model": 15, "algorithm": [15, 28], "develop": 15, "cycl": 15, "challeng": 15, "face": 15, "": 15, "approach": 15, "address": 15, "thi": 15, "overview": 16, "compon": 16, "interfac": 16, "client": [16, 17], "api": [16, 25], "server": 16, "environ": [16, 17, 27], "quickstart": 17, "access": [17, 23, 24], "servic": 17, "via": [17, 25], "vlab": 17, "basic": 17, "usag": 17, "upon": 17, "start": [17, 21, 23, 24], "follow": 17, "seri": 17, "step": 17, "occur": 17, "dure": 17, "process": 17, "repeat": 17, "when": 17, "conclud": 17, "initi": [17, 27], "interact": 17, "explain": 17, "code": [17, 26], "action": [17, 19, 21, 23, 24], "observ": [17, 19, 21, 23, 24], "space": [17, 19, 21, 23, 24], "modifi": 17, "congest": 18, "control": 18, "descript": [19, 21, 23, 24], "prerequisit": [19, 21, 23, 24], "custom": [19, 21, 23, 24, 27, 28], "argument": [19, 21, 23, 24], "episod": [19, 21, 23, 24], "end": [19, 21, 23, 24], "slice": [20, 21], "cellular": 21, "state": [21, 23, 24], "traffic": [22, 23, 24], "manag": 22, "multi": [23, 24], "qo": 23, "steer": 23, "split": 24, "transit": 24, "dynam": 24, "democrat": 25, "sim": 25, "aa": 25, "object": 25, "agent": [25, 28], "gymnasium": 25, "scope": 25, "limit": [25, 26], "handl": 26, "time": 26, "truncat": 26, "termin": 26, "sequenti": 26, "train": [26, 28], "exampl": 26, "python": 26, "implement": 27, "your": 27, "connect": 27, "substitut": 27, "releas": 27, "system": 28, "default": 28, "stabl": 28, "baselines3": 28, "cleanrl": 28, "work": 29, "measur": 29, "column": 29, "support": 29, "per": 29, "sourc": 29, "retriev": 29}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Build Documentation Website": [[0, "build-documentation-website"]], "Install Dependencies": [[0, "install-dependencies"]], "Build Website": [[0, "build-website"]], "Useful Tips": [[0, "useful-tips"]], "Auto Generate rst Files": [[0, "auto-generate-rst-files"]], "Add Classes and Functions to md Files": [[0, "add-classes-and-functions-to-md-files"]], "network_gym_client": [[1, "network-gym-client"]], "Adapter": [[2, "adapter"]], "The Base Class": [[2, "the-base-class"]], "Methods": [[2, "methods"], [3, "methods"], [4, "methods"], [5, "methods"], [6, "methods"], [7, "methods"], [8, "methods"], [10, "methods"], [11, "methods"], [12, "methods"]], "network_slicing Adapter": [[3, "network-slicing-adapter"]], "": [[3, "id1"], [4, "id1"], [5, "id1"], [6, "id1"]], "Reward Methods": [[3, "reward-methods"], [5, "reward-methods"], [6, "reward-methods"]], "Additional Methods": [[3, "additional-methods"], [4, "additional-methods"], [5, "additional-methods"], [6, "additional-methods"], [8, "additional-methods"]], "nqos_split Adapter": [[4, "nqos-split-adapter"]], "Reward Method": [[4, "reward-method"]], "qos_steer Adapter": [[5, "qos-steer-adapter"]], "rmcat Adapter": [[6, "rmcat-adapter"]], "Env": [[7, "env"]], "network_gym_client.Env": [[7, "network-gym-client-env"]], "Attributes": [[7, "attributes"]], "NorthBound": [[8, "northbound"]], "network_gym_client.NorthBound": [[8, "network-gym-client-northbound"]], "network_gym_env": [[9, "network-gym-env"]], "NetworkGym UML Sequence Diagram": [[9, "networkgym-uml-sequence-diagram"]], "Configure": [[10, "configure"]], "network_gym_env.Configure": [[10, "network-gym-env-configure"]], "Dummy Simulator": [[11, "dummy-simulator"]], "network_gym_env.DummySim": [[11, "network-gym-env-dummysim"]], "SouthBound": [[12, "southbound"]], "network_gym_env.SouthBound": [[12, "network-gym-env-southbound"]], "network_gym_server": [[13, "network-gym-server"]], "Contact": [[14, "contact"]], "Motivation": [[15, "motivation"]], "Network AI Models/Algorithms Development Cycle": [[15, "network-ai-models-algorithms-development-cycle"]], "Challenges Faced by Network AI Developers": [[15, "challenges-faced-by-network-ai-developers"]], "NetworkGym\u2019s Approach to Addressing this Challenge": [[15, null], [15, null], [15, null]], "Overview": [[16, "overview"]], "NetworkGym Components and Interfaces": [[16, "networkgym-components-and-interfaces"]], "Client API": [[16, "client-api"]], "Server API": [[16, "server-api"]], "Environment API": [[16, "environment-api"]], "Quickstart": [[17, "quickstart"]], "Accessing the NetworkGym Service via vLab": [[17, "accessing-the-networkgym-service-via-vlab"]], "Basic Usage": [[17, "basic-usage"]], "\u25b6\ufe0f Upon starting the Client, the following series of steps occur:": [[17, null]], "\ud83d\udd01 During the simulation, the process repeats as follows:": [[17, null]], "\u23f9\ufe0f When the NetworkGym or the simulation concludes:": [[17, null]], "Initializing Environments": [[17, "initializing-environments"]], "Interacting with the Environment": [[17, "interacting-with-the-environment"]], "Explaining the code": [[17, "explaining-the-code"]], "Action and observation spaces": [[17, "action-and-observation-spaces"]], "Modifying the environment": [[17, "modifying-the-environment"]], "Congestion Control": [[18, "congestion-control"]], "RMCAT": [[19, "rmcat"]], "Description": [[19, "description"], [21, "description"], [23, "description"], [24, "description"]], "Prerequisite": [[19, "prerequisite"], [21, "prerequisite"], [23, "prerequisite"], [24, "prerequisite"]], "Observation Space": [[19, "observation-space"], [21, "observation-space"], [23, "observation-space"], [24, "observation-space"]], "Action Space": [[19, "action-space"], [21, "action-space"], [23, "action-space"], [24, "action-space"]], "Reward": [[19, "reward"], [21, "reward"], [23, "reward"], [24, "reward"]], "Custom Observation Space and Reward": [[19, "custom-observation-space-and-reward"], [21, "custom-observation-space-and-reward"], [23, "custom-observation-space-and-reward"], [24, "custom-observation-space-and-reward"]], "Arguments": [[19, "arguments"], [21, "arguments"], [23, "arguments"], [24, "arguments"]], "Episode End": [[19, "episode-end"], [21, "episode-end"], [23, "episode-end"], [24, "episode-end"]], "Network Slicing": [[20, "network-slicing"]], "Cellular Network Slicing": [[21, "cellular-network-slicing"]], "Starting State": [[21, "starting-state"], [23, "starting-state"], [24, "starting-state"]], "Traffic Management": [[22, "traffic-management"]], "Multi-Access QoS Traffic Steering": [[23, "multi-access-qos-traffic-steering"]], "Multi-Access Traffic Splitting": [[24, "multi-access-traffic-splitting"]], "Transition Dynamics": [[24, "transition-dynamics"]], "NetworkGym: Democratizing Network AI via Sim-aaS.": [[25, "networkgym-democratizing-network-ai-via-sim-aas"]], "Objectives": [[25, "objectives"]], "Agent": [[25, "agent"]], "Gymnasium API": [[25, "gymnasium-api"]], "NetworkGym API": [[25, "networkgym-api"]], "NetworkGym Scope and Limitations": [[25, "networkgym-scope-and-limitations"]], "Handling Time Limits": [[26, "handling-time-limits"]], "Truncation": [[26, "truncation"]], "Termination": [[26, "termination"]], "Sequential Training Example": [[26, "sequential-training-example"]], "Python code:": [[26, "python-code"]], "Implementing Custom Environment": [[27, "implementing-custom-environment"]], "Initiating your Custom Environment": [[27, "initiating-your-custom-environment"]], "Connecting to Your Custom Environment": [[27, "connecting-to-your-custom-environment"]], "Substituting the Dummy Simulator": [[27, "substituting-the-dummy-simulator"]], "Releasing Your Custom Environment": [[27, "releasing-your-custom-environment"]], "Training Agents": [[28, "training-agents"]], "System Default Agent": [[28, "system-default-agent"]], "Custom Algorithm Agent": [[28, "custom-algorithm-agent"]], "Stable-Baselines3 Agent": [[28, "stable-baselines3-agent"]], "CleanRL Agent": [[28, "cleanrl-agent"]], "Working with Measurements": [[29, "working-with-measurements"]], "Measurement Columns": [[29, "measurement-columns"]], "Supported Measurements per Source": [[29, "supported-measurements-per-source"]], "Retrieving a Measurement": [[29, "retrieving-a-measurement"]]}, "indexentries": {"adapter (class in network_gym_client)": [[2, "network_gym_client.Adapter"]], "df_to_dict() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.df_to_dict"]], "fill_empty_feature() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.fill_empty_feature"]], "wandb_log() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.wandb_log"]], "wandb_log_buffer_append() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.wandb_log_buffer_append"]], "adapter (class in network_gym_client.envs.network_slicing)": [[3, "network_gym_client.envs.network_slicing.Adapter"]], "get_action_space() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_policy"]], "get_rbg_size() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_rbg_size"]], "get_reward() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_reward"]], "adapter (class in network_gym_client.envs.nqos_split)": [[4, "network_gym_client.envs.nqos_split.Adapter"]], "get_action_space() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_policy"]], "get_reward() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_reward"]], "netowrk_util() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.netowrk_util"]], "adapter (class in network_gym_client.envs.qos_steer)": [[5, "network_gym_client.envs.qos_steer.Adapter"]], "calculate_wifi_qos_user_num() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.calculate_wifi_qos_user_num"]], "get_action_space() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_policy"]], "get_reward() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_reward"]], "adapter (class in network_gym_client.envs.rmcat)": [[6, "network_gym_client.envs.rmcat.Adapter"]], "get_action_space() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_policy"]], "get_reward() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_reward"]], "env (class in network_gym_client)": [[7, "network_gym_client.Env"]], "action_space (network_gym_client.env attribute)": [[7, "network_gym_client.Env.action_space"]], "adapter (network_gym_client.env attribute)": [[7, "network_gym_client.Env.adapter"]], "northbound_interface_client (network_gym_client.env attribute)": [[7, "network_gym_client.Env.northbound_interface_client"]], "observation_space (network_gym_client.env attribute)": [[7, "network_gym_client.Env.observation_space"]], "reset() (in module network_gym_client.env)": [[7, "network_gym_client.Env.reset"]], "step() (in module network_gym_client.env)": [[7, "network_gym_client.Env.step"]], "northboundclient (class in network_gym_client)": [[8, "network_gym_client.NorthBoundClient"]], "connect() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.connect"]], "process_measurement() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.process_measurement"]], "recv() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.recv"]], "send() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.send"]], "configure (class in network_gym_env)": [[10, "network_gym_env.Configure"]], "run() (in module network_gym_env.configure)": [[10, "network_gym_env.Configure.run"]], "dummysim (class in network_gym_env)": [[11, "network_gym_env.DummySim"]], "generate_dummy_measurement() (in module network_gym_env.dummysim)": [[11, "network_gym_env.DummySim.generate_dummy_measurement"]], "run_one_interval() (in module network_gym_env.dummysim)": [[11, "network_gym_env.DummySim.run_one_interval"]], "start_simulation() (in module network_gym_env.dummysim)": [[11, "network_gym_env.DummySim.start_simulation"]], "southbound_connect() (in module network_gym_env.southbound_interface)": [[12, "network_gym_env.southbound_interface.southbound_connect"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["README", "api/network_gym_client", "api/network_gym_client/adapter", "api/network_gym_client/adapter/network_slicing", "api/network_gym_client/adapter/nqos_split", "api/network_gym_client/adapter/qos_steer", "api/network_gym_client/adapter/rmcat", "api/network_gym_client/env", "api/network_gym_client/northbound_interface", "api/network_gym_env", "api/network_gym_env/configure", "api/network_gym_env/simulator", "api/network_gym_env/southbound_interface", "api/network_gym_server", "contact", "content/motivation", "content/overview", "content/quickstart", "environments/congestion_control", "environments/congestion_control/rmcat", "environments/mx_network_slicing", "environments/mx_network_slicing/cellular_network_slicing", "environments/mx_traffic_management", "environments/mx_traffic_management/mx_qos_traffic_steering", "environments/mx_traffic_management/mx_traffic_splitting", "index", "tutorials/handling_time_limits", "tutorials/implementing_custom_environment", "tutorials/training_agents", "tutorials/working_with_measurements"], "filenames": ["README.md", "api/network_gym_client.md", "api/network_gym_client/adapter.md", "api/network_gym_client/adapter/network_slicing.md", "api/network_gym_client/adapter/nqos_split.md", "api/network_gym_client/adapter/qos_steer.md", "api/network_gym_client/adapter/rmcat.md", "api/network_gym_client/env.md", "api/network_gym_client/northbound_interface.md", "api/network_gym_env.md", "api/network_gym_env/configure.md", "api/network_gym_env/simulator.md", "api/network_gym_env/southbound_interface.md", "api/network_gym_server.md", "contact.md", "content/motivation.md", "content/overview.md", "content/quickstart.md", "environments/congestion_control.md", "environments/congestion_control/rmcat.md", "environments/mx_network_slicing.md", "environments/mx_network_slicing/cellular_network_slicing.md", "environments/mx_traffic_management.md", "environments/mx_traffic_management/mx_qos_traffic_steering.md", "environments/mx_traffic_management/mx_traffic_splitting.md", "index.md", "tutorials/handling_time_limits.md", "tutorials/implementing_custom_environment.md", "tutorials/training_agents.md", "tutorials/working_with_measurements.md"], "titles": ["Build Documentation Website", "network_gym_client", "Adapter", "network_slicing Adapter", "nqos_split Adapter", "qos_steer Adapter", "rmcat Adapter", "Env", "NorthBound", "network_gym_env", "Configure", "Dummy Simulator", "SouthBound", "network_gym_server", "Contact", "Motivation", "Overview", "Quickstart", "Congestion Control", "RMCAT", "Network Slicing", "Cellular Network Slicing", "Traffic Management", "Multi-Access QoS Traffic Steering", "Multi-Access Traffic Splitting", "NetworkGym: Democratizing Network AI via Sim-aaS.", "Handling Time Limits", "Implementing Custom Environment", "Training Agents", "Working with Measurements"], "terms": {"option": [0, 1, 7, 17, 19, 21, 23, 24, 25, 26], "creat": [0, 11, 17, 25, 27, 28], "new": [0, 11, 17, 29], "virtual": 0, "python": [0, 17, 25], "environ": [0, 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "python3": [0, 27], "m": [0, 19, 21, 27, 29], "venv": 0, "sphinx_venv": 0, "sourc": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 19, 21, 23, 24, 25, 28], "bin": 0, "activ": [0, 9, 16, 17, 28], "requir": [0, 15, 19, 21, 23, 24, 29], "librari": 0, "pip": 0, "r": [0, 21, 24], "txt": 0, "In": [0, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "doc": 0, "folder": 0, "run": [0, 7, 10, 11, 17, 19, 21, 23, 24, 26], "follow": [0, 1, 7, 10, 19, 21, 23, 24, 25, 27, 29], "command": [0, 27], "export": 0, "static": 0, "_build": 0, "html": 0, "make": [0, 17], "clean": 0, "network_gym_cli": [0, 2, 3, 4, 5, 6, 17, 19, 21, 23, 24, 26], "The": [0, 1, 7, 9, 10, 11, 13, 16, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "contain": [0, 7, 17, 21, 29], "modul": [0, 9], "rm": 0, "sphinx": 0, "apidoc": 0, "o": [0, 17, 25], "d": 0, "2": [0, 7, 19, 21, 23, 24, 25, 27, 29], "markdown": 0, "e": [0, 1, 7, 10, 11, 15, 19, 21, 23, 24, 25, 26, 29], "g": [0, 1, 7, 10, 11, 15, 23, 24, 25, 29], "eval": 0, "autoclass": 0, "env": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 17, 19, 21, 23, 24, 26, 27, 28], "networkgym": [1, 7, 8, 13, 19, 21, 23, 24, 26, 27, 28], "client": [1, 7, 8, 9, 10, 11, 13, 19, 21, 23, 24, 25, 27], "includ": [1, 13, 17, 19, 21, 23, 24, 25, 28, 29], "three": [1, 16, 19, 21, 23, 24, 25, 26], "compon": [1, 9, 10, 13, 25], "custom": [1, 7, 10, 16, 17, 25, 26], "gymnasium": [1, 2, 7, 15, 16, 17, 28], "adapt": [1, 7, 16, 19, 21, 23, 24, 27, 29], "northbound": [1, 7, 13, 16, 17, 25], "interfac": [1, 7, 8, 9, 12, 13, 17, 25, 27], "inheret": 1, "class": [1, 3, 4, 5, 6, 7, 8, 10, 11, 17, 27, 29], "commun": [1, 7, 9, 16, 17], "agent": [1, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29], "us": [1, 7, 10, 11, 15, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29], "standard": [1, 15, 25, 27], "exchang": [1, 9, 10, 17], "ob": [1, 2, 7, 17, 26], "reward": [1, 2, 7, 17, 25, 26, 29], "action": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 18, 20, 22, 25, 26, 27, 28, 29], "reset": [1, 7, 17, 26], "step": [1, 7, 19, 21, 23, 24, 26, 27], "function": [1, 2, 3, 4, 5, 6, 17, 19, 21, 23, 24, 25, 29], "import": [1, 17, 19, 21, 23, 24, 26], "gym": [1, 7, 8, 25], "def": 1, "__init__": 1, "self": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "arg1": 1, "arg2": 1, "super": 1, "return": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 17], "observ": [1, 3, 4, 5, 6, 7, 25, 28, 29], "termin": [1, 7, 9, 10, 11, 17, 19, 21, 23, 24, 27], "truncat": [1, 7, 17, 19, 21, 23, 24], "info": [1, 2, 7, 17, 26, 27, 28], "seed": [1, 7], "none": [1, 7], "transform": [1, 2, 16], "data": [1, 2, 5, 9, 16, 17, 19, 21, 23, 24, 25, 27, 28, 29], "format": [1, 2, 16, 17, 25, 27], "from": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 19, 21, 23, 24, 25, 26, 28, 29], "network_gym": [1, 2, 7], "other": [1, 10, 26], "wai": [1, 7, 24, 29], "around": [1, 25], "network": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 19, 23, 24, 27, 28, 29], "stat": [1, 2, 3, 4, 5, 6, 8, 11, 25], "chang": [1, 26], "polici": [1, 2, 3, 4, 5, 6, 8, 9, 17, 28, 29], "connect": [1, 7, 8, 9, 10, 11, 12, 13, 16, 17, 22, 23, 24, 25], "server": [1, 7, 8, 9, 10, 11, 12, 13, 17, 19, 21, 23, 24, 25, 27], "configur": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 19, 21, 23, 24, 25, 26, 29], "paramet": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 19, 21, 23, 24, 26], "between": [1, 2, 7, 9, 10, 16, 24, 25, 27], "envrion": [1, 13], "config_json": [2, 3, 4, 5, 6, 7, 8, 11, 12, 17, 19, 21, 23, 24, 26], "thi": [2, 3, 4, 5, 6, 7, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29], "i": [2, 3, 4, 7, 8, 10, 11, 16, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "an": [2, 7, 9, 10, 13, 15, 16, 17, 19, 21, 23, 24, 25, 26, 28, 29], "It": [2, 7, 9, 16, 17, 19, 21, 23, 24, 25, 26], "measur": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 19, 21, 23, 24, 25, 27], "json": [2, 3, 4, 5, 6, 7, 8, 11, 12, 17, 19, 21, 23, 24, 26, 27, 29], "space": [2, 3, 4, 5, 6, 7], "also": [2, 7, 15, 17, 21, 23, 24, 25, 26, 27], "can": [2, 7, 9, 10, 16, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "appli": [2, 29], "initi": [2, 3, 4, 5, 6, 7, 8, 9, 10, 21], "file": [2, 3, 4, 5, 6, 7, 8, 11, 12, 17, 19, 21, 23, 24, 26, 27, 29], "wandb_log_buffer_append": 2, "add": [2, 13, 17, 19, 21, 23, 24, 29], "wandb": [2, 17], "log": [2, 7, 24], "buffer": 2, "send": [2, 7, 8, 9, 11, 17, 18, 19, 25, 27, 28, 29], "later": 2, "wandb_log": 2, "dict": [2, 7, 11, 17], "inform": [2, 7, 17, 19, 23, 24, 25], "append": [2, 19, 21, 23, 24, 29], "df_to_dict": 2, "df": [2, 3, 4, 5, 6, 29], "id_nam": 2, "id": [2, 7, 8, 10, 19, 21, 23, 24, 29], "datatyp": 2, "panda": [2, 5], "datafram": [2, 3, 4, 5, 6, 8], "dictionari": [2, 7, 17], "object": [2, 7, 21, 29], "descript": [2, 29], "string": 2, "descritpt": 2, "convert": 2, "fill_empty_featur": 2, "featur": [2, 3, 4, 5, 6, 19, 21, 23, 24, 25], "valu": [2, 4, 7, 17, 19, 21, 23, 24, 27, 29], "fill": 2, "miss": [2, 29], "input": [2, 17, 29], "pd": [2, 3, 4, 5, 6, 8], "int": [2, 3, 7, 8, 10, 11], "list": [2, 7, 10, 11, 17, 19, 21, 23, 24, 29], "result": [2, 7, 11, 17, 19, 21, 23, 24, 26], "after": [2, 7, 17, 19, 21, 23, 24, 26, 29], "replac": 2, "base": [3, 4, 5, 6, 9, 16, 17, 19, 24, 25, 29], "get_observ": [3, 4, 5, 6, 19, 21, 23, 24, 29], "prepar": [3, 4, 5, 6], "should": [3, 4, 5, 6, 7, 17, 21, 27, 29], "same": [3, 4, 5, 6, 10, 21, 27], "number": [3, 4, 5, 6, 7, 11, 17, 19, 21, 23, 24, 26, 27], "defin": [3, 4, 5, 6, 7, 17, 19, 21, 23, 24, 25, 28], "get_observation_spac": [3, 4, 5, 6], "get_reward": [3, 4, 5, 6, 19, 21, 23, 24, 29], "get_polici": [3, 4, 5, 6], "rl": [3, 4, 5, 6, 7, 17, 25, 28, 29], "No": [3, 17, 25, 28], "yet": [3, 19], "get_action_spac": [3, 4, 5, 6], "get": [3, 4, 5, 6, 7], "get_rbg_siz": 3, "bandwidth": [3, 23, 29], "comput": [3, 17, 19, 21, 23, 24, 25, 29], "resourc": [3, 20, 21, 23, 24, 29], "block": [3, 21, 29], "group": [3, 21, 27], "size": [3, 29], "bandwith": 3, "rb": [3, 21], "code": [3, 10, 28, 29], "coppi": 3, "ns3": [3, 19], "pf": 3, "type": [3, 7, 17, 25, 27], "0": [3, 4, 7, 17, 19, 21, 23, 24, 26, 27, 29], "alloc": [3, 20, 21], "rbg": 3, "resouc": 3, "netowrk_util": [4, 24], "throughput": [4, 19, 21, 23, 24, 29], "delai": [4, 7, 21, 23, 24, 28, 29], "alpha": 4, "5": [4, 19, 21, 23, 24, 27, 29], "calcul": [4, 5, 23, 29], "util": [4, 10, 16, 21, 23, 24, 25, 27, 29], "specifi": [4, 7, 17, 19, 21, 23, 24, 26], "balanc": 4, "default": [4, 5, 7, 17, 19, 21, 25, 29], "float": 4, "repres": [4, 17, 19, 21, 23, 24, 29], "bit": 4, "per": [4, 5, 19, 21, 23, 24, 26], "second": [4, 17, 19, 23, 24, 26], "metric": [4, 17], "calculate_wifi_qos_user_num": [5, 23], "qos_rat": [5, 21, 23, 24, 27, 29], "qo": [5, 15, 17, 22, 29], "user": [5, 7, 11, 17, 21, 22, 23, 24, 25, 27, 28, 29], "over": [5, 22, 23, 24, 29], "wi": [5, 22, 23, 24, 27], "fi": [5, 22, 23, 24, 27], "rate": [5, 18, 19, 21, 23, 24, 27, 29], "doubl": 5, "initil": [7, 11], "intern": [7, 17], "state": [7, 17, 25, 28], "": [7, 9, 10, 17, 19, 21, 23, 24, 26, 27, 28, 29], "prng": 7, "np_random": 7, "If": [7, 17, 19, 23, 26, 29], "doe": [7, 25], "alreadi": [7, 23], "have": [7, 17, 19, 21, 23, 24, 25, 26, 28], "pass": 7, "chosen": 7, "some": [7, 17, 29], "entropi": 7, "timestamp": [7, 11, 29], "dev": 7, "urandom": 7, "howev": [7, 23, 29], "ha": [7, 17, 19, 21, 23, 24, 26], "you": [7, 16, 17, 19, 21, 23, 24, 26, 27, 28, 29], "integ": 7, "even": 7, "exist": [7, 29], "usual": 7, "want": 7, "right": [7, 21], "been": [7, 17, 28], "never": 7, "again": 7, "pleas": [7, 25, 27], "refer": [7, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29], "minim": [7, 19, 21, 23, 24], "exampl": [7, 17, 19, 21, 23, 24, 29], "abov": [7, 25], "see": [7, 19, 21, 23, 24], "paradigm": 7, "addit": [7, 17, 25], "how": [7, 16, 17, 25, 26, 27], "depend": [7, 27], "specif": [7, 15, 16, 19, 21, 23, 24, 25, 26, 28, 29], "obstyp": 7, "auxiliari": 7, "complement": 7, "analog": 7, "one": [7, 9, 11, 17, 21, 24, 26, 29], "timestep": [7, 17], "dynam": [7, 23, 29], "gamsim": 7, "check": 7, "last": [7, 26, 29], "episod": [7, 17, 26, 27], "done": [7, 17], "acttyp": 7, "provid": [7, 10, 16, 17, 19, 23, 24, 25, 26, 27, 28, 29], "updat": [7, 17, 22, 24], "element": [7, 16, 17, 29], "observation_spac": [7, 17], "next": [7, 17], "due": 7, "supportsfloat": 7, "take": [7, 17, 21, 23, 29], "bool": 7, "whether": 7, "reach": [7, 17], "under": 7, "mdp": 7, "task": [7, 27], "which": [7, 16, 17, 21, 23], "posit": [7, 21, 23, 24], "neg": 7, "goal": [7, 19, 23, 24, 29], "move": 7, "lava": 7, "sutton": 7, "barton": 7, "gridworld": 7, "true": [7, 17, 23], "need": [7, 15, 17, 21], "call": [7, 17], "condit": 7, "outsid": 7, "scope": 7, "satisfi": 7, "typic": 7, "timelimit": [7, 17], "could": [7, 17, 29], "indic": [7, 21, 23, 29], "physic": [7, 25], "go": 7, "out": [7, 17, 25, 29], "bound": [7, 17, 29], "end": [7, 9, 17, 25, 26], "prematur": 7, "befor": 7, "diagnost": 7, "help": [7, 17], "debug": 7, "learn": [7, 15, 25, 27, 28], "raw": 7, "flag": 7, "deprec": 7, "A": [7, 11, 17, 19, 21, 23, 24, 25, 26, 28, 29], "boolean": 7, "case": [7, 15, 17, 21, 25, 29], "further": [7, 17, 19, 21, 23, 24], "undefin": 7, "wa": [7, 29], "remov": 7, "openai": 7, "v26": 7, "favor": 7, "signal": [7, 9, 10, 17, 24, 29], "mai": [7, 17, 26], "emit": 7, "differ": [7, 17, 25, 26], "reason": 7, "mayb": 7, "underli": [7, 10], "solv": 7, "successfulli": [7, 27], "certain": [7, 19, 21, 23, 24, 26], "exceed": [7, 17], "simul": [7, 9, 10, 15, 16, 25, 29], "enter": 7, "invalid": 7, "action_spac": [7, 17, 26, 28], "correspond": [7, 16, 29], "valid": [7, 17, 29], "all": [7, 10, 17, 19, 20, 21, 23, 24, 27, 29], "For": [7, 17, 19, 21, 23, 24, 25, 27, 29], "discret": [7, 17], "give": 7, "mean": 7, "ar": [7, 9, 10, 17, 19, 21, 23, 24, 27], "two": [7, 9, 13, 16, 25, 26], "1": [7, 17, 19, 21, 23, 24, 26, 27, 29], "box": [7, 16, 17, 19, 21, 23, 24], "3": [7, 9, 10, 15, 16, 17, 19, 21, 23, 24, 25, 26, 27, 29], "4028234663852886e": 7, "38": [7, 21, 23, 24], "4": [7, 19, 21, 23, 24, 27, 29], "float32": [7, 19, 21, 23, 24], "shape": [7, 17, 19, 21, 23, 24], "denot": [7, 19, 21, 23, 24, 26, 29], "arrai": [7, 17, 21, 28], "we": [7, 13, 17, 21, 23, 24, 25, 26], "well": 7, "high": [7, 19, 23, 24, 25, 29], "8000002e": 7, "00": 7, "4028235e": 7, "1887903e": 7, "01": 7, "dtype": 7, "low": [7, 19, 24, 29], "northbound_interface_cli": 7, "traslat": 7, "dataformat": 7, "northboundcli": 8, "sever": 8, "repli": 8, "start": [8, 9, 10, 11, 19, 26, 27], "request": [8, 9], "where": [8, 17, 21, 24, 29], "load": [8, 17, 19, 21, 23, 24, 29], "recv": 8, "receiv": [8, 9, 11, 17, 19, 21, 23, 24, 27, 29], "messag": [8, 9, 10], "process_measur": 8, "reply_json": 8, "process": [8, 9, 26, 27], "compris": [9, 16], "core": 9, "These": [9, 28], "establish": [9, 10, 16, 17, 27], "via": [9, 12, 27], "design": [9, 21, 25, 28], "southbound": [9, 11, 13, 16, 17, 25, 27], "serv": [9, 21, 25], "bridg": 9, "facilit": [9, 10, 16, 17, 25], "statist": [9, 29], "keep": [9, 16], "aliv": 9, "period": [9, 10, 18, 19, 20, 22, 23, 24], "dispatch": [9, 10], "hello": [9, 10, 27], "upon": [9, 10], "disengag": 9, "n": [9, 10, 15, 16, 17, 21, 23, 24, 25], "smulat": 9, "instig": 9, "plan": [9, 13, 17], "incorpor": 9, "emul": [9, 16], "testb": [9, 16, 27, 29], "altern": 9, "earmark": 9, "futur": 9, "releas": [9, 13], "depict": [9, 16], "flow": [9, 18, 19, 23, 29], "complet": [9, 27], "cycl": 9, "within": [9, 16, 17, 21, 27, 29], "session": [9, 16, 17, 19, 21, 23, 24, 26], "launch": [9, 10, 17, 27], "env_config": [9, 10, 11, 26, 27], "trigger": [9, 28], "gener": [9, 11, 19, 21, 23, 24, 26, 27, 29], "incom": 9, "onc": [9, 17, 19, 21, 23, 24, 26, 27], "conclud": 9, "map": [9, 13, 16, 17], "onli": [9, 10, 19, 21, 23, 24, 27, 29], "env_sim": [9, 10, 11, 27], "ani": [9, 17, 23, 25], "given": [9, 19, 21, 23, 24], "moment": [9, 21], "cannot": [9, 19, 21, 23, 24, 26], "occur": 9, "simultan": 9, "standpoint": 9, "treat": 9, "both": [9, 17, 19, 21, 22, 23, 24, 26, 29], "equival": 9, "identifi": [9, 29], "them": [9, 17, 21, 25], "entiti": [9, 10, 25, 27, 29], "networkgymsim": 10, "env_list": [10, 27], "recept": 10, "its": [10, 16, 19, 21, 23, 24, 29], "socket": [10, 11, 12, 27], "ident": [10, 11, 12], "identif": 10, "subsequ": [10, 19, 21, 23, 24, 26], "commenc": 10, "conclus": 10, "close": 10, "reconnect": 10, "point": [10, 19, 21, 23, 24, 26, 29], "perceiv": 10, "divis": 10, "advantag": [10, 28], "straightforward": [10, 17, 27], "expans": 10, "test": [10, 15, 23, 27, 29], "while": [10, 20, 21, 26], "str": [10, 11, 12], "support": [10, 16, 17, 23, 27], "non": [10, 17], "offic": 10, "account": [10, 21, 29], "name": [10, 11, 17, 19, 21, 23, 24, 27, 29], "env_ident": 11, "client_ident": 11, "msg_json": 11, "random": [11, 17, 21, 23, 24], "sampl": [11, 17, 26, 28], "when": [11, 13, 19, 21, 23, 24, 25, 27, 28, 29], "resum": 11, "env_idennt": 11, "env_port": 11, "first": [11, 17, 19, 23, 24, 26], "who": 11, "msg": [11, 27], "cliet": 11, "generate_dummy_measur": 11, "tag": [11, 27, 29], "num_us": 11, "ad": 11, "start_simul": 11, "api": [11, 15, 28], "report": 11, "run_one_interv": 11, "interv": [11, 17, 29], "southbound_interfac": 12, "southbound_connect": 12, "indent": 12, "zmq": 12, "manag": [13, 17, 23, 24, 25], "select": [13, 16, 17, 19, 21, 22, 23, 24, 27], "idl": 13, "instanc": [13, 17, 25, 27, 29], "rout": [13, 16], "tabl": 13, "At": [13, 16, 19, 21, 23, 24, 26], "present": [13, 16, 17, 23, 27], "do": 13, "softwar": [13, 25], "email": 14, "github": [14, 19, 21, 23, 24, 27], "slack": 14, "real": [15, 18, 19], "world": [15, 25], "dataset": 15, "control": [15, 19, 23, 25], "oper": [15, 19, 21, 23, 24, 25, 26], "difficult": 15, "acquir": 15, "align": [15, 27], "usag": [15, 21, 29], "itself": 15, "enough": 15, "train": [15, 17, 19, 21, 23, 24, 25], "reinforc": [15, 25, 28], "etc": [15, 25], "current": [15, 29], "enabl": [15, 16, 17, 19, 21, 23, 24, 25, 28, 29], "multi": [15, 29], "access": [15, 19, 21, 25, 27, 29], "traffic": [15, 18, 19, 29], "split": [15, 22, 29], "awar": 15, "steer": [15, 22], "cellular": [15, 20, 23, 24], "ran": [15, 17, 25], "slice": [15, 23, 24, 29], "tool": [15, 25], "often": 15, "veri": 15, "complex": [15, 29], "especi": 15, "research": [15, 16, 17, 25], "without": [15, 23, 25], "expertis": [15, 25], "lack": 15, "common": 15, "simpl": [15, 17], "evalu": [15, 23, 27], "benchmark": 15, "adher": [15, 21], "addition": [15, 16, 17, 27], "offer": [15, 16, 25, 28], "framework": [16, 25], "consist": [16, 17, 25], "essenti": [16, 17, 25, 27], "each": [16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "plai": [16, 25], "crucial": [16, 25], "role": [16, 25, 28], "system": [16, 17, 21, 25, 29], "encompass": 16, "seamless": 16, "interact": [16, 25, 26, 27, 28], "displai": 16, "below": [16, 17, 26, 28, 29], "graphic": 16, "architectur": [16, 25], "visual": [16, 17], "aid": 16, "divers": [16, 27], "collabor": [16, 17], "harmoni": 16, "form": 16, "streamlin": [16, 25, 27], "effect": [16, 17, 25], "servic": [16, 20, 21, 23, 25], "tailor": [16, 21, 25], "advanc": 16, "ai": [16, 17], "develop": [16, 17, 25], "By": [16, 21, 25, 29], "click": [16, 19, 21, 23, 24, 29], "blue": 16, "navig": 16, "directli": 16, "page": [16, 25], "respect": [16, 17, 21, 25], "main": 16, "respons": 16, "allow": [16, 17, 25, 28], "compat": 16, "like": [16, 21, 25], "stabl": [16, 25], "baselines3": [16, 25], "cleanrl": [16, 25], "desir": [16, 23], "central": 16, "maintain": [16, 25], "track": 16, "assign": [16, 21, 23, 24, 27], "dure": [16, 23], "either": [16, 17, 19, 21, 23, 24], "through": [16, 17, 19, 21, 23, 24, 25, 26, 27], "distinct": [16, 21], "machin": [17, 19, 21, 23, 24, 25], "requst": 17, "mlwin": 17, "ring": 17, "univers": 17, "public": 17, "internet": 17, "intel": 17, "issu": [17, 29], "feel": 17, "free": 17, "u": [17, 27], "netaigym": [17, 27], "gmail": [17, 27], "com": [17, 27], "sim": 17, "aa": 17, "devcloud": 17, "avail": [17, 19, 21, 23, 24, 25, 28, 29], "meanwhil": [17, 21], "enhanc": 17, "capabl": 17, "5g": 17, "distribut": [17, 21, 23, 24], "energi": 17, "save": 17, "predict": 17, "more": [17, 19, 21, 23, 24, 25, 29], "gain": 17, "begin": 17, "download": [17, 19, 21, 23, 24], "your": [17, 25, 29], "prompt": 17, "collect": [17, 25, 28], "forward": [17, 27], "norhtbound": 17, "nb": 17, "algorithm": [17, 19, 21, 25, 29], "store": [17, 29], "relev": 17, "transmit": [17, 19, 21, 23, 24, 27], "sb": [17, 27], "continu": [17, 19, 21, 23, 24, 26], "conveni": 17, "websit": 17, "demonstr": [17, 26, 27], "packag": 17, "networkgymenv": [17, 19, 21, 23, 24, 26], "client_id": [17, 19, 21, 23, 24, 26], "argument": 17, "classic": 17, "loop": [17, 25], "implement": [17, 19, 21, 23, 25], "load_config_fil": [17, 19, 21, 23, 24, 26], "env_nam": [17, 26, 27], "nqos_split": [17, 24, 26], "num_step": [17, 26], "1000": [17, 26], "rang": [17, 21, 26, 28], "exit": [17, 19, 21, 23, 24, 26], "break": [17, 26], "epsiod": [17, 26], "up": [17, 26], "still": [17, 26], "anoth": [17, 26], "keyword": 17, "associ": 17, "dedic": [17, 20, 21], "worker": 17, "until": 17, "parallel": 17, "obtain": 17, "perform": [17, 18, 19, 20, 22, 23, 24, 25, 26], "As": 17, "along": 17, "One": 17, "multipl": [17, 21, 23, 24, 29], "fix": 17, "restart": 17, "scenario": [17, 23], "sequenti": 17, "success": 17, "insight": 17, "time": [17, 18, 19, 21, 23, 24, 29], "constraint": [17, 21], "found": 17, "handl": [17, 19, 21, 23, 24], "limit": [17, 19, 21, 23, 24, 27], "illustr": [17, 26, 29], "everi": [17, 21, 23, 24], "attribut": 17, "understand": 17, "expect": [17, 27], "output": [17, 27, 29], "instead": 17, "prefer": 17, "empti": [17, 25, 28], "shown": [17, 27, 28], "np": [17, 28], "inherit": 17, "major": 17, "possibl": [17, 23], "might": [17, 29], "describ": 17, "dimension": 17, "upper": 17, "lower": 17, "our": [17, 21, 27], "shift": 17, "tupl": 17, "multibinari": 17, "binari": 17, "multidiscret": [17, 23], "wrapper": 17, "maximum": [17, 21, 23, 29], "clipact": 17, "clip": 17, "li": 17, "rescaleact": 17, "rescal": 17, "lie": 17, "timeawareobserv": 17, "about": [17, 19, 21, 23, 24, 25], "index": [17, 29], "ensur": [17, 19, 21, 23, 24], "transit": 17, "markov": 17, "flattenobserv": 17, "flatten": 17, "normalizeobserv": 17, "normal": 17, "t": [17, 19, 21, 23, 24, 27, 29], "coordin": [17, 29], "center": [17, 25], "unit": [17, 27], "varianc": 17, "wrap": 17, "arg": 17, "normal_obs_env": 17, "rmcat": [18, 29], "adjust": [18, 19, 21, 23, 27], "rtp": [18, 19, 29], "media": [18, 19, 29], "avoid": [18, 19, 29], "techniqu": [18, 19, 29], "part": [19, 23, 24], "congest": [19, 29], "repo": [19, 21, 23, 24, 27], "cisco": 19, "inf": [19, 21, 23, 24], "150000": 19, "1500000": 19, "config": [19, 21, 23, 24], "problem": [19, 24], "strateg": [19, 21, 24], "aim": [19, 23, 24], "achiev": [19, 23, 24, 25, 29], "latenc": [19, 24], "loss": [19, 23, 29], "nada": [19, 29], "vlab": [19, 21, 23, 24, 27], "ndarrai": [19, 21, 23, 24], "view": [19, 21, 23, 24, 29], "work": [19, 21, 23, 24], "elabor": [19, 21, 23, 24], "loglen": [19, 29], "100710": 19, "58": 19, "qdel": [19, 29], "30": [19, 21, 23, 24], "rtt": [19, 29], "55": [19, 21, 23, 24], "ploss": [19, 29], "plr": [19, 29], "xcurr": [19, 29], "17099952697754": 19, "6": [19, 21, 23, 24, 27], "rrate": [19, 29], "774531": 19, "375": 19, "7": [19, 21, 23, 24, 27], "srate": [19, 29], "585416": 19, "8": [19, 21, 23, 24, 27], "nada_sr": [19, 29], "557536": 19, "1875": 19, "9": [19, 21, 23, 24, 27], "avgint": [19, 29], "10": [19, 21, 23, 24, 27], "curint": [19, 29], "round": [19, 29], "trip": [19, 29], "represet": 19, "level": [19, 20, 21, 23], "third": [19, 23, 24], "min": [19, 21, 23, 24], "max": [19, 21, 23, 24], "500": [19, 23, 29], "bp": [19, 29], "Not": 19, "edit": [19, 21, 23, 24], "subscribed_network_stat": [19, 21, 23, 24, 29], "necessari": [19, 21, 23, 24], "transmiss": [19, 21, 23, 24], "unus": [19, 21, 23, 24], "reduc": [19, 21, 23, 24], "overhead": [19, 21, 23, 24], "To": [19, 21, 23, 24, 28, 29], "subscrib": [19, 21, 23, 24, 29], "combin": [19, 21, 23, 24, 29], "would": [19, 21, 23, 24, 27, 29], "detail": [19, 21, 23, 24, 25, 28], "episodes_per_sess": [19, 21, 23, 24, 26], "steps_per_episod": [19, 21, 23, 24, 26], "l": [19, 21, 23, 24, 26], "happen": [19, 21, 23, 24], "length": [19, 21, 23, 24, 26], "note": [19, 21, 23, 24, 26, 29], "reconfigur": [19, 21, 23, 24, 26], "program": [19, 21, 23, 24, 25, 26], "entir": [19, 21, 23, 24, 26], "among": [20, 21], "priorit": [20, 21, 23, 29], "share": [20, 21, 27], "strive": [20, 21], "meet": [20, 21, 23, 29], "agreement": [20, 21], "partit": 21, "percept": 21, "possess": 21, "abil": 21, "great": 21, "effici": [21, 23], "belong": 21, "mac": 21, "schedul": 21, "proport": 21, "fair": 21, "guarante": 21, "equit": 21, "imparti": 21, "network_sl": 21, "pose": 21, "challeng": [21, 23], "compet": 21, "finit": 21, "primari": [21, 23], "multidimension": 21, "five": 21, "dl": [21, 23, 24, 27, 29], "max_rat": [21, 23, 24, 27, 29], "lte": [21, 22, 23, 24, 27, 29], "3000": 21, "75": 21, "cell_id": [21, 23, 24, 29], "slice_id": [21, 23, 24, 29], "rb_usag": [21, 23, 24, 29], "88": 21, "08": 21, "32": [21, 23, 24], "cell": [21, 23, 24, 29], "65": [21, 23, 24], "68": 21, "33333333": 21, "96": 21, "ul": [21, 23, 24, 29], "missed_act": [21, 23, 24, 29], "gma": [21, 23, 24, 27, 29], "measurement_ok": [21, 23, 24, 29], "delay_viol": [21, 23, 24, 29], "11": [21, 23, 24, 29], "delay_test_1_viol": [21, 23, 24, 29], "12": [21, 23, 24], "delay_test_2_viol": [21, 23, 24, 29], "13": [21, 23, 24], "owd": [21, 23, 24, 27, 29], "14": [21, 23, 24], "max_owd": [21, 23, 24, 29], "15": [21, 23, 24], "tx_rate": [21, 23, 24, 29], "056": [21, 23, 24], "942": 21, "16": [21, 23, 24, 29], "prioriti": [21, 23, 24, 29], "17": [21, 23, 24], "18": [21, 23, 24], "19": [21, 23, 24], "traffic_ratio": [21, 23, 24, 29], "20": [21, 23, 24], "21": [21, 23, 24], "22": [21, 23, 24], "23": [21, 23, 24], "24": [21, 23, 24], "25": [21, 23, 24], "26": [21, 23, 24], "27": [21, 23, 24], "28": [21, 23, 24], "29": [21, 23, 24], "31": [21, 23, 24], "x_loc": [21, 23, 24, 29], "83": [21, 24], "836": 21, "78": [21, 23, 24], "46": [21, 23, 24], "913": 21, "607": 21, "33": [21, 23, 24], "y_loc": [21, 23, 24, 29], "645": [21, 23], "388": 21, "493": 21, "089": 21, "242": 21, "34": [21, 23, 24], "35": [21, 23, 24], "36": [21, 23, 24], "37": [21, 23, 24], "100": [21, 23, 24], "39": [21, 23, 24], "total": [21, 23], "mbp": [21, 23, 24, 27], "fraction": 21, "express": 21, "percentag": [21, 29], "sum": [21, 29], "across": [21, 23], "equal": [21, 24, 29], "averag": [21, 29], "violat": [21, 23, 29], "wise": 21, "record": [21, 29], "experienc": 21, "millisecond": 21, "exce": 21, "surpass": 21, "appropri": 21, "scale": 21, "down": 21, "softmax": 21, "mathemat": 21, "sum_": 21, "a_i": 21, "quad": 21, "frac": 21, "j": 21, "a_j": 21, "num": [21, 24], "factor": 21, "cost": 21, "formul": 21, "left": 21, "text": 21, "_i": 21, "lambda": 21, "cdot": 21, "delay_violation_r": 21, "gamma": 21, "rb_usage_r": 21, "emphasi": 21, "consider": 21, "uniform": [21, 23, 24], "2d": [21, 23, 24], "plane": [21, 23, 24], "x": [21, 23, 24, 29], "y": [21, 23, 24, 29], "boundari": [21, 23, 24], "instal": [21, 23, 24, 27], "walk": [21, 23, 24], "mobil": [21, 23, 24], "model": [21, 23, 24, 25], "mx": [22, 23, 24], "ratio": [22, 24, 29], "consid": [22, 23, 24], "link": [22, 23, 24, 27, 29], "dimens": 23, "qos_steer": 23, "randomli": [23, 24], "intellig": 23, "direct": [23, 27, 29], "best": 23, "qualiti": 23, "enable_dynamic_flow_priorit": 23, "fals": 23, "contend": 23, "wifi": [23, 24, 29], "restrict": 23, "admiss": 23, "subset": 23, "dscp": 23, "mark": [23, 29], "qos_requir": 23, "test_duration_m": 23, "durat": 23, "delay_bound_m": [23, 29], "delay_violation_target": 23, "02": 23, "target": 23, "loss_target": 23, "001": 23, "regard": 23, "packet": [23, 29], "otherwis": [23, 29], "met": 23, "set": 23, "zero": 23, "11000": 23, "091666666666667": 23, "09166666666666666": 23, "016": 23, "54": [23, 24], "983333333333334": 23, "05": 23, "033": 23, "061": 23, "044": 23, "03": 23, "split_ratio": [23, 24, 27, 29], "928": 23, "04": 23, "752": 23, "728": 23, "032": 23, "708": 23, "93": [23, 24], "599": 23, "69": 23, "47": [23, 24], "53": [23, 24], "288": 23, "229": 23, "40": [23, 24], "205": 23, "659": 23, "79": 23, "389": 23, "285": 23, "856": 23, "41": [23, 24], "294": 23, "042": 23, "656": 23, "48": [23, 24], "126": 23, "449": 23, "42": [23, 24], "43": [23, 24], "048": 23, "44": [23, 24], "45": [23, 24], "99": 23, "81": 23, "49": [23, 24], "872": 23, "008": 23, "696": [23, 24], "50": [23, 24], "51": [23, 24], "52": [23, 24], "239": 23, "187": 23, "56": [23, 24], "estim": [23, 24, 29], "channel": [23, 24, 25], "capac": [23, 24, 29], "mechan": 23, "maxim": [23, 24], "lead": 23, "essenc": 23, "optim": [23, 25, 28], "indirectli": 23, "overal": 23, "station": [24, 29], "closest": 24, "handov": 24, "disabl": 24, "6000": [24, 29], "625": 24, "192": 24, "208": 24, "272": 24, "792": 24, "429": 24, "964": 24, "721": 24, "716": 24, "616": [24, 29], "024": [24, 29], "57": [24, 29], "144": [24, 29], "202": 24, "118": 24, "312": 24, "217": 24, "161": 24, "359": 24, "119": 24, "287": 24, "023": 24, "871": 24, "703": 24, "198": 24, "715": 24, "676": 24, "021": 24, "988": 24, "216": 24, "73": 24, "712": 24, "568": 24, "432": 24, "117": 24, "310": 24, "61": 24, "transmitt": 24, "f": 24, "innov": 25, "concept": 25, "seen": 25, "four": 25, "kei": 25, "knowledg": 25, "fulli": 25, "customiz": 25, "host": 25, "cloud": 25, "open": 25, "inject": 25, "flexibl": [25, 28], "languag": 25, "platform": 25, "separ": [25, 29], "freedom": 25, "emploi": 25, "smoothli": 25, "c": 25, "hide": 25, "secur": 25, "oversight": 25, "independ": 25, "deploy": 25, "deploi": 25, "workload": 25, "thei": 25, "purpos": [25, 28, 29], "offlin": [25, 28], "own": [25, 28], "special": [25, 28], "art": [25, 28], "sota": [25, 28], "tutori": [25, 27, 28], "guidanc": 25, "instruct": [25, 27, 28], "variou": 25, "convers": 25, "comprehens": 25, "overview": 25, "focus": 25, "layer": 25, "involv": [25, 27], "abstract": 25, "power": 25, "aspect": 25, "endeavor": 25, "full": 25, "stack": 25, "edg": 25, "fidel": 25, "proprietari": [25, 27], "applic": [25, 29], "xapp": 25, "rapp": 25, "ric": 25, "digit": 25, "twin": [25, 28], "section": [26, 27], "outlin": 26, "showcas": 26, "inclus": 27, "extern": 27, "equip": 27, "ll": 27, "ultim": 27, "merg": 27, "procedur": 27, "setup": 27, "port": 27, "alter": 27, "8087": 27, "session_nam": 27, "session_kei": 27, "network_gym_env": 27, "common_config": 27, "accord": 27, "start_custom_env": 27, "py": 27, "don": 27, "modifi": [27, 28], "grant": 27, "demo": [27, 28], "Then": 27, "start_client_demo": 27, "print": [27, 29], "custom_act": 27, "custom_tag": 27, "9269856811": 27, "5833047032": 27, "6873341799": 27, "0909367353": 27, "3403381109": 27, "0730143189": 27, "4166952968": 27, "3126658201": 27, "9090632796": 27, "6596618891": 27, "start_t": 27, "end_t": 27, "cid": 27, "20000": 27, "21000": 27, "phy": 27, "sole": 27, "ve": 27, "re": 27, "readi": 27, "mirror": 27, "uml": 27, "sequenc": 27, "diagram": 27, "locat": 27, "experi": 27, "contact": 27, "integr": [27, 28], "fulfil": 28, "simpli": 28, "popular": 28, "ones": 28, "ppo": 28, "proxim": 28, "ddpg": 28, "deep": 28, "determinist": 28, "gradient": 28, "sac": 28, "soft": 28, "actor": 28, "critic": 28, "td3": 28, "a2c": 28, "moreov": 28, "seamlessli": 28, "person": 29, "match": 29, "experiment": 29, "field": 29, "explan": 29, "uniqu": 29, "wherea": 29, "convent": 29, "prefix": 29, "captur": 29, "downlink": 29, "origin": 29, "numer": 29, "structur": 29, "acce": 29, "count": 29, "uplink": 29, "too": 29, "long": 29, "wait": 29, "therefor": 29, "alwai": 29, "ulmeasurement_ok": 29, "deliveri": 29, "threshold": 29, "delay_test_1_thresh_m": 29, "delay_test_2_thresh_m": 29, "reorder": 29, "order": 29, "70": 29, "90": 29, "sinc": 29, "255": 29, "staion": 29, "histori": 29, "queu": 29, "aggreg": 29, "ecn": 29, "previou": 29, "expert": 29, "inter": 29, "most": 29, "recent": 29, "grow": 29, "subscript": 29, "row": 29, "iterrow": 29, "df_rate": 29}, "objects": {"network_gym_client": [[2, 0, 1, "", "Adapter"], [7, 0, 1, "", "Env"], [8, 0, 1, "", "NorthBoundClient"]], "network_gym_client.Adapter": [[2, 1, 1, "", "df_to_dict"], [2, 1, 1, "", "fill_empty_feature"], [2, 1, 1, "", "wandb_log"], [2, 1, 1, "", "wandb_log_buffer_append"]], "network_gym_client.Env": [[7, 2, 1, "", "action_space"], [7, 2, 1, "", "adapter"], [7, 2, 1, "", "northbound_interface_client"], [7, 2, 1, "", "observation_space"], [7, 1, 1, "", "reset"], [7, 1, 1, "", "step"]], "network_gym_client.NorthBoundClient": [[8, 1, 1, "", "connect"], [8, 1, 1, "", "process_measurement"], [8, 1, 1, "", "recv"], [8, 1, 1, "", "send"]], "network_gym_client.envs.network_slicing": [[3, 0, 1, "", "Adapter"]], "network_gym_client.envs.network_slicing.Adapter": [[3, 1, 1, "", "get_action_space"], [3, 1, 1, "", "get_observation"], [3, 1, 1, "", "get_observation_space"], [3, 1, 1, "", "get_policy"], [3, 1, 1, "", "get_rbg_size"], [3, 1, 1, "", "get_reward"]], "network_gym_client.envs.nqos_split": [[4, 0, 1, "", "Adapter"]], "network_gym_client.envs.nqos_split.Adapter": [[4, 1, 1, "", "get_action_space"], [4, 1, 1, "", "get_observation"], [4, 1, 1, "", "get_observation_space"], [4, 1, 1, "", "get_policy"], [4, 1, 1, "", "get_reward"], [4, 1, 1, "", "netowrk_util"]], "network_gym_client.envs.qos_steer": [[5, 0, 1, "", "Adapter"]], "network_gym_client.envs.qos_steer.Adapter": [[5, 1, 1, "", "calculate_wifi_qos_user_num"], [5, 1, 1, "", "get_action_space"], [5, 1, 1, "", "get_observation"], [5, 1, 1, "", "get_observation_space"], [5, 1, 1, "", "get_policy"], [5, 1, 1, "", "get_reward"]], "network_gym_client.envs.rmcat": [[6, 0, 1, "", "Adapter"]], "network_gym_client.envs.rmcat.Adapter": [[6, 1, 1, "", "get_action_space"], [6, 1, 1, "", "get_observation"], [6, 1, 1, "", "get_observation_space"], [6, 1, 1, "", "get_policy"], [6, 1, 1, "", "get_reward"]], "network_gym_env": [[10, 0, 1, "", "Configure"], [11, 0, 1, "", "DummySim"]], "network_gym_env.Configure": [[10, 1, 1, "", "run"]], "network_gym_env.DummySim": [[11, 1, 1, "", "generate_dummy_measurement"], [11, 1, 1, "", "run_one_interval"], [11, 1, 1, "", "start_simulation"]], "network_gym_env.southbound_interface": [[12, 1, 1, "", "southbound_connect"]]}, "objtypes": {"0": "py:class", "1": "py:function", "2": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "function", "Python function"], "2": ["py", "attribute", "Python attribute"]}, "titleterms": {"build": 0, "document": 0, "websit": 0, "instal": 0, "depend": 0, "us": 0, "tip": 0, "auto": 0, "gener": 0, "rst": 0, "file": 0, "add": 0, "class": [0, 2], "function": 0, "md": 0, "network_gym_cli": [1, 7, 8], "adapt": [2, 3, 4, 5, 6], "The": 2, "base": 2, "method": [2, 3, 4, 5, 6, 7, 8, 10, 11, 12], "network_sl": 3, "reward": [3, 4, 5, 6, 19, 21, 23, 24], "addit": [3, 4, 5, 6, 8], "nqos_split": 4, "qos_steer": 5, "rmcat": [6, 19], "env": 7, "attribut": 7, "northbound": 8, "network_gym_env": [9, 10, 11, 12], "networkgym": [9, 15, 16, 17, 25], "uml": 9, "sequenc": 9, "diagram": 9, "configur": 10, "dummi": [11, 27], "simul": [11, 17, 27], "dummysim": 11, "southbound": 12, "network_gym_serv": 13, "contact": 14, "motiv": 15, "network": [15, 20, 21, 25], "ai": [15, 25], "model": 15, "algorithm": [15, 28], "develop": 15, "cycl": 15, "challeng": 15, "face": 15, "": 15, "approach": 15, "address": 15, "thi": 15, "overview": 16, "compon": 16, "interfac": 16, "client": [16, 17], "api": [16, 25], "server": 16, "environ": [16, 17, 27], "quickstart": 17, "access": [17, 23, 24], "servic": 17, "via": [17, 25], "vlab": 17, "basic": 17, "usag": 17, "upon": 17, "start": [17, 21, 23, 24], "follow": 17, "seri": 17, "step": 17, "occur": 17, "dure": 17, "process": 17, "repeat": 17, "when": 17, "conclud": 17, "initi": [17, 27], "interact": 17, "explain": 17, "code": [17, 26], "action": [17, 19, 21, 23, 24], "observ": [17, 19, 21, 23, 24], "space": [17, 19, 21, 23, 24], "modifi": 17, "congest": 18, "control": 18, "descript": [19, 21, 23, 24], "prerequisit": [19, 21, 23, 24], "custom": [19, 21, 23, 24, 27, 28], "argument": [19, 21, 23, 24], "episod": [19, 21, 23, 24], "end": [19, 21, 23, 24], "slice": [20, 21], "cellular": 21, "state": [21, 23, 24], "traffic": [22, 23, 24], "manag": 22, "multi": [23, 24], "qo": 23, "steer": 23, "split": 24, "transit": 24, "dynam": 24, "democrat": 25, "sim": 25, "aa": 25, "object": 25, "agent": [25, 28], "gymnasium": 25, "scope": 25, "limit": [25, 26], "handl": 26, "time": 26, "truncat": 26, "termin": 26, "sequenti": 26, "train": [26, 28], "exampl": 26, "python": 26, "implement": 27, "your": 27, "connect": 27, "substitut": 27, "releas": 27, "system": 28, "default": 28, "stabl": 28, "baselines3": 28, "cleanrl": 28, "work": 29, "measur": 29, "column": 29, "support": 29, "per": 29, "sourc": 29, "retriev": 29}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Build Documentation Website": [[0, "build-documentation-website"]], "Install Dependencies": [[0, "install-dependencies"]], "Build Website": [[0, "build-website"]], "Useful Tips": [[0, "useful-tips"]], "Auto Generate rst Files": [[0, "auto-generate-rst-files"]], "Add Classes and Functions to md Files": [[0, "add-classes-and-functions-to-md-files"]], "network_gym_client": [[1, "network-gym-client"]], "Adapter": [[2, "adapter"]], "The Base Class": [[2, "the-base-class"]], "Methods": [[2, "methods"], [3, "methods"], [4, "methods"], [5, "methods"], [6, "methods"], [7, "methods"], [8, "methods"], [10, "methods"], [11, "methods"], [12, "methods"]], "network_slicing Adapter": [[3, "network-slicing-adapter"]], "": [[3, "id1"], [4, "id1"], [5, "id1"], [6, "id1"]], "Reward Methods": [[3, "reward-methods"], [5, "reward-methods"], [6, "reward-methods"]], "Additional Methods": [[3, "additional-methods"], [4, "additional-methods"], [5, "additional-methods"], [6, "additional-methods"], [8, "additional-methods"]], "nqos_split Adapter": [[4, "nqos-split-adapter"]], "Reward Method": [[4, "reward-method"]], "qos_steer Adapter": [[5, "qos-steer-adapter"]], "rmcat Adapter": [[6, "rmcat-adapter"]], "Env": [[7, "env"]], "network_gym_client.Env": [[7, "network-gym-client-env"]], "Attributes": [[7, "attributes"]], "NorthBound": [[8, "northbound"]], "network_gym_client.NorthBound": [[8, "network-gym-client-northbound"]], "network_gym_env": [[9, "network-gym-env"]], "NetworkGym UML Sequence Diagram": [[9, "networkgym-uml-sequence-diagram"]], "Configure": [[10, "configure"]], "network_gym_env.Configure": [[10, "network-gym-env-configure"]], "Dummy Simulator": [[11, "dummy-simulator"]], "network_gym_env.DummySim": [[11, "network-gym-env-dummysim"]], "SouthBound": [[12, "southbound"]], "network_gym_env.SouthBound": [[12, "network-gym-env-southbound"]], "network_gym_server": [[13, "network-gym-server"]], "Contact": [[14, "contact"]], "Motivation": [[15, "motivation"]], "Network AI Models/Algorithms Development Cycle": [[15, "network-ai-models-algorithms-development-cycle"]], "Challenges Faced by Network AI Developers": [[15, "challenges-faced-by-network-ai-developers"]], "NetworkGym\u2019s Approach to Addressing this Challenge": [[15, null], [15, null], [15, null]], "Overview": [[16, "overview"]], "NetworkGym Components and Interfaces": [[16, "networkgym-components-and-interfaces"]], "Client API": [[16, "client-api"]], "Server API": [[16, "server-api"]], "Environment API": [[16, "environment-api"]], "Quickstart": [[17, "quickstart"]], "Accessing the NetworkGym Service via vLab": [[17, "accessing-the-networkgym-service-via-vlab"]], "Basic Usage": [[17, "basic-usage"]], "\u25b6\ufe0f Upon starting the Client, the following series of steps occur:": [[17, null]], "\ud83d\udd01 During the simulation, the process repeats as follows:": [[17, null]], "\u23f9\ufe0f When the NetworkGym or the simulation concludes:": [[17, null]], "Initializing Environments": [[17, "initializing-environments"]], "Interacting with the Environment": [[17, "interacting-with-the-environment"]], "Explaining the code": [[17, "explaining-the-code"]], "Action and observation spaces": [[17, "action-and-observation-spaces"]], "Modifying the environment": [[17, "modifying-the-environment"]], "Congestion Control": [[18, "congestion-control"]], "RMCAT": [[19, "rmcat"]], "Description": [[19, "description"], [21, "description"], [23, "description"], [24, "description"]], "Prerequisite": [[19, "prerequisite"], [21, "prerequisite"], [23, "prerequisite"], [24, "prerequisite"]], "Observation Space": [[19, "observation-space"], [21, "observation-space"], [23, "observation-space"], [24, "observation-space"]], "Action Space": [[19, "action-space"], [21, "action-space"], [23, "action-space"], [24, "action-space"]], "Reward": [[19, "reward"], [21, "reward"], [23, "reward"], [24, "reward"]], "Customize Observation Space and Reward": [[19, "customize-observation-space-and-reward"]], "Arguments": [[19, "arguments"], [21, "arguments"], [23, "arguments"], [24, "arguments"]], "Episode End": [[19, "episode-end"], [21, "episode-end"], [23, "episode-end"], [24, "episode-end"]], "Network Slicing": [[20, "network-slicing"]], "Cellular Network Slicing": [[21, "cellular-network-slicing"]], "Custom Observation Space and Reward": [[21, "custom-observation-space-and-reward"], [23, "custom-observation-space-and-reward"], [24, "custom-observation-space-and-reward"]], "Starting State": [[21, "starting-state"], [23, "starting-state"], [24, "starting-state"]], "Traffic Management": [[22, "traffic-management"]], "Multi-Access QoS Traffic Steering": [[23, "multi-access-qos-traffic-steering"]], "Multi-Access Traffic Splitting": [[24, "multi-access-traffic-splitting"]], "Transition Dynamics": [[24, "transition-dynamics"]], "NetworkGym: Democratizing Network AI via Sim-aaS.": [[25, "networkgym-democratizing-network-ai-via-sim-aas"]], "Objectives": [[25, "objectives"]], "Agent": [[25, "agent"]], "Gymnasium API": [[25, "gymnasium-api"]], "NetworkGym API": [[25, "networkgym-api"]], "NetworkGym Scope and Limitations": [[25, "networkgym-scope-and-limitations"]], "Handling Time Limits": [[26, "handling-time-limits"]], "Truncation": [[26, "truncation"]], "Termination": [[26, "termination"]], "Sequential Training Example": [[26, "sequential-training-example"]], "Python code:": [[26, "python-code"]], "Implementing Custom Environment": [[27, "implementing-custom-environment"]], "Initiating your Custom Environment": [[27, "initiating-your-custom-environment"]], "Connecting to Your Custom Environment": [[27, "connecting-to-your-custom-environment"]], "Substituting the Dummy Simulator": [[27, "substituting-the-dummy-simulator"]], "Releasing Your Custom Environment": [[27, "releasing-your-custom-environment"]], "Training Agents": [[28, "training-agents"]], "System Default Agent": [[28, "system-default-agent"]], "Custom Algorithm Agent": [[28, "custom-algorithm-agent"]], "Stable-Baselines3 Agent": [[28, "stable-baselines3-agent"]], "CleanRL Agent": [[28, "cleanrl-agent"]], "Working with Measurements": [[29, "working-with-measurements"]], "Measurement Columns": [[29, "measurement-columns"]], "Supported Measurements per Source": [[29, "supported-measurements-per-source"]], "Retrieving a Measurement": [[29, "retrieving-a-measurement"]]}, "indexentries": {"adapter (class in network_gym_client)": [[2, "network_gym_client.Adapter"]], "df_to_dict() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.df_to_dict"]], "fill_empty_feature() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.fill_empty_feature"]], "wandb_log() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.wandb_log"]], "wandb_log_buffer_append() (in module network_gym_client.adapter)": [[2, "network_gym_client.Adapter.wandb_log_buffer_append"]], "adapter (class in network_gym_client.envs.network_slicing)": [[3, "network_gym_client.envs.network_slicing.Adapter"]], "get_action_space() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_policy"]], "get_rbg_size() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_rbg_size"]], "get_reward() (in module network_gym_client.envs.network_slicing.adapter)": [[3, "network_gym_client.envs.network_slicing.Adapter.get_reward"]], "adapter (class in network_gym_client.envs.nqos_split)": [[4, "network_gym_client.envs.nqos_split.Adapter"]], "get_action_space() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_policy"]], "get_reward() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.get_reward"]], "netowrk_util() (in module network_gym_client.envs.nqos_split.adapter)": [[4, "network_gym_client.envs.nqos_split.Adapter.netowrk_util"]], "adapter (class in network_gym_client.envs.qos_steer)": [[5, "network_gym_client.envs.qos_steer.Adapter"]], "calculate_wifi_qos_user_num() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.calculate_wifi_qos_user_num"]], "get_action_space() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_policy"]], "get_reward() (in module network_gym_client.envs.qos_steer.adapter)": [[5, "network_gym_client.envs.qos_steer.Adapter.get_reward"]], "adapter (class in network_gym_client.envs.rmcat)": [[6, "network_gym_client.envs.rmcat.Adapter"]], "get_action_space() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_action_space"]], "get_observation() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_observation"]], "get_observation_space() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_observation_space"]], "get_policy() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_policy"]], "get_reward() (in module network_gym_client.envs.rmcat.adapter)": [[6, "network_gym_client.envs.rmcat.Adapter.get_reward"]], "env (class in network_gym_client)": [[7, "network_gym_client.Env"]], "action_space (network_gym_client.env attribute)": [[7, "network_gym_client.Env.action_space"]], "adapter (network_gym_client.env attribute)": [[7, "network_gym_client.Env.adapter"]], "northbound_interface_client (network_gym_client.env attribute)": [[7, "network_gym_client.Env.northbound_interface_client"]], "observation_space (network_gym_client.env attribute)": [[7, "network_gym_client.Env.observation_space"]], "reset() (in module network_gym_client.env)": [[7, "network_gym_client.Env.reset"]], "step() (in module network_gym_client.env)": [[7, "network_gym_client.Env.step"]], "northboundclient (class in network_gym_client)": [[8, "network_gym_client.NorthBoundClient"]], "connect() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.connect"]], "process_measurement() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.process_measurement"]], "recv() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.recv"]], "send() (in module network_gym_client.northboundclient)": [[8, "network_gym_client.NorthBoundClient.send"]], "configure (class in network_gym_env)": [[10, "network_gym_env.Configure"]], "run() (in module network_gym_env.configure)": [[10, "network_gym_env.Configure.run"]], "dummysim (class in network_gym_env)": [[11, "network_gym_env.DummySim"]], "generate_dummy_measurement() (in module network_gym_env.dummysim)": [[11, "network_gym_env.DummySim.generate_dummy_measurement"]], "run_one_interval() (in module network_gym_env.dummysim)": [[11, "network_gym_env.DummySim.run_one_interval"]], "start_simulation() (in module network_gym_env.dummysim)": [[11, "network_gym_env.DummySim.start_simulation"]], "southbound_connect() (in module network_gym_env.southbound_interface)": [[12, "network_gym_env.southbound_interface.southbound_connect"]]}}) \ No newline at end of file