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 mapc_optimal.Solver
class.
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 mapc_optimal.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
.
How to reference mapc-optimal
?¶
TODO