Skip to main content

Optimal solution of the MAPC (C-SR) problem for IEEE 802.11 networks

Project description

Optimal solution for IEEE 802.11 MAPC Coordinated Spatial Reuse (C-SR) problem

mapc-optimal is a tool for finding the optimal solution of the Multi-Access Point Coordination (MAPC) scheduling problem with coordinated spatial reuse (C-SR) for IEEE 802.11 networks. It provides a mixed-integer linear programming (MILP) solution to find the upper bound on network performance. A detailed description can be found in:

  • TODO

Features

  • Calculation of optimal scheduling: Calculate the best transmission configurations and the corresponding time division that enhance the network performance.
  • Two optimization criteria: Find the optimal solution for two optimization criteria: maximizing the sum of the throughput of all nodes in the network and maximizing the minimum throughput of all nodes in the network.
  • Modulation and coding scheme (MCS) selection: Select the optimal MCS for each transmission.
  • Transmission power selection: Set the appropriate transmission power to maximize network performance.
  • Versatile network configuration: Define network settings by specifying network nodes, available MCSs, and transmission power levels.

Installation

The package can be installed using pip:

pip install mapc-optimal

Usage

The main functionality is provided by the Solver class in mapc_optimal/solver.py. This class manages the process of finding the optimal solution. Example usage:

from mapc_optimal import Solver

# Define your network
# ...

solver = Solver(stations, access_points)
configurations, rate = solver(path_loss)

where stations and access_points are lists of numbers representing the stations and access points (APs) in the network, respectively. The path_loss is an $n \times n$ matrix representing the path loss between each pair of nodes in the network. The solver returns calculated configurations and the total throughput of the network. The Solver class can be further configured by passing additional arguments to the constructor. The full list of arguments can be found in the documentation.

Additionally, the solver can return a list of the pricing objective values for each iteration. It can be useful to check if the solver has converged. To do so, set the return_objective argument to True when calling the solver.

configurations, rate, objectives = solver(path_loss, return_objective=True)

For a more detailed example, refer to the test case in test/test_solver.py.

Note: The underlying MILP solver can significantly affect the performance of the tool. By default, the solver uses the CBC solver from the PuLP package. However, we recommend using a better solver, such as CPLEX.

Repository Structure

The repository is structured as follows:

  • mapc_optimal/: The main package of the tool.
    • constants.py: Default values of the parameters used in the solver.
    • main.py: The formulation of the main problem solving the selection and division of configurations.
    • pricing.py: The pricing algorithm used to propose new configurations for the main problem.
    • solver.py: The solver class coordinating the overall process of finding the optimal solution. It initializes the solver, sets up the network configuration, and manages the iterations.
    • utils.py: Utility functions, including the function for calculation of the path loss from node positions using the TGax channel model.
  • test/: Unit tests with example usage of the tool.

How to reference mapc-optimal?

TODO

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mapc_optimal-0.1.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

mapc_optimal-0.1.1-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file mapc_optimal-0.1.1.tar.gz.

File metadata

  • Download URL: mapc_optimal-0.1.1.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for mapc_optimal-0.1.1.tar.gz
Algorithm Hash digest
SHA256 37bf8568822bacc93e20592c5eeb8a49eb3103cb0fb84ce07353bb3663c76282
MD5 e6a8067c279fc9287a5136df095a5591
BLAKE2b-256 28cc1b05335d767a69899f8969ff42cda60139f671586bcfa168ad5dd96efa1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mapc_optimal-0.1.1.tar.gz:

Publisher: pypi.yml on ml4wifi-devs/mapc-optimal

Attestations:

File details

Details for the file mapc_optimal-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mapc_optimal-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for mapc_optimal-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1844894243b2a63d3c32f1c07dfa9773857363776620977847f9a6b2a6e4bef5
MD5 91c77c9a8b8b0ca1639f1a1c81bfe632
BLAKE2b-256 811bff7de60eb6f19fbf8f0fa70b676f6de38ddecae795b4d711b93a58457479

See more details on using hashes here.

Provenance

The following attestation bundles were made for mapc_optimal-0.1.1-py3-none-any.whl:

Publisher: pypi.yml on ml4wifi-devs/mapc-optimal

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page