mapc_optimal.tabu

Classes

TabuPricing

The pricing problem solved with heuristic tabu search instead of the MILP model. The configurations

Module Contents

class mapc_optimal.tabu.TabuPricing(n_steps=500, n_candidates=25, tabu_size=80, n_restarts=4, tx_power_levels=6, seed=42, evaluator=None, n_draws=8, **kwargs)

The pricing problem solved with heuristic tabu search instead of the MILP model. The configurations are evaluated either with the model of the pricing problem, i.e., with the same channel model and SINR thresholds as in mapc_optimal.pricing.Pricing, or with an evaluator given by the user, e.g., a network simulator.

Parameters:
  • n_steps (int, default 500) – The number of tabu search steps in a single run.

  • n_candidates (int, default 25) – The number of neighbors generated in each step.

  • tabu_size (int, default 80) – The number of the recently visited configurations which cannot be revisited.

  • n_restarts (int, default 4) – The number of runs of the search, each starting from a random configuration. The best configuration found in all the runs is returned.

  • tx_power_levels (int, default 6) – The number of transmission power levels, equally spaced in the logarithmic scale between the minimum and the maximum transmission power.

  • seed (int, default 42) – The seed of the random number generator.

  • evaluator (Callable, default None) – Function evaluator(confs) -> rates evaluating all the candidates of a search step at once, where confs is a list of dictionaries mapping a transmitting link to a tuple with its transmission power (in the linear scale) and its MCS, and rates is a list of dictionaries mapping the links to their rates (in Mb/s), with the links which cannot transmit omitted or given a zero rate. The whole batch is passed in one call, so the function can be vectorized. If it is not set, the rates are calculated with the model of the pricing problem.

  • n_draws (int, default 8) – The number of calls to the evaluator whose rates are averaged. For a deterministic evaluator, it should be set to 1.

  • **kwargs – The arguments of mapc_optimal.pricing.Pricing.

n_steps = 500
n_candidates = 25
tabu_size = 80
n_restarts = 4
mcs_data_rates
tx_power_set = ()
evaluator = None
n_draws = 8
rng
initial_configuration(links, link_path_loss, configurations=None)

Generates the initial configurations as mapc_optimal.pricing.Pricing does, but, if the evaluator is set, draws the MCS of the links at random and takes their rates from the evaluator, so that all the configurations passed to the main problem are evaluated in the same way.

__call__(dual_alpha, dual_beta, stations, access_points, links, link_node_a, link_node_b, link_path_loss, max_interference, configuration)

Searches for a configuration which improves the solution of the main problem. The signature is the same as in mapc_optimal.pricing.Pricing.