Skip to main content

View on GitHub

Open this notebook in GitHub to run it yourself
Radio Access Network (RAN) is an important part of network communication systems, responsible for connecting used devices such as smartphones and radio machines to a wireless network. Optimizing the Radio Access Network involves various tasks that make it challenging to optimize a network efficiently. These tasks include resource allocation, locating transmission devices, such as antennas, to enhance coverage according to the overall consumption. Ideally, the optimization of a RAN will maximize the resource utilization of the network, save operational costs to the owner of the network. In this case of RAN, the solution is the positions of the set of antennas we have in a region that that has consumers spread in various locations. Finding good positions of antennas with a limited number of antennas is very complex to optimize and find a good solution in polynomial time.

  1. Define problem classically with pyomo
  • We have a limited number of antennas defined by NN.
  • We have a set of potential locations: {1,2,3,...,M}\{1,2,3,...,M\}, where M>NM>N
  • We limit certain locations with an overlap, not to use 2 antennas.

Mathematical definition

Each location is a binary variable xix_{i} that is 1 if we put antenna there and 0 if we don’t put in that location. Each location is charachterized with certain consumption cic_{i}. Mathematically, it is translated into objective function which aims to maximized its coverage: maxxicixi\max_{x} \sum_{i} c_{i}x_{i} Now, we add the constraints, such as the number of antennas: ixiN\sum_{i} x_{i} \leq N We can also add a constraint that prevent an ovelap between antennas. All sets of neighboring antenna sites {n0,n1,...,nk}\{n_{0},n_{1},...,n_{k}\} will have only 1 anntenna on the ground: ikxni==1\sum_{i}^{k} x_{n_{i}} == 1

Defining Pyomo model

Define QAOA parameters and synthesize

In order to solve the Pyomo model defined above, we use the Classiq combinatorial optimization engine. For the quantum part of the QAOA algorithm (QAOAConfig) - define the number of repetitions (num_layers) and the penalty_energy to get results that satisfy your constraints. Be careful! large enrgy also can bring you away from the optimized solution:
For the classical optimization part of the QAOA algorithm we define the maximum number of classical iterations (max_iteration).
Lastly, we load the model, based on the problem and algorithm parameters, which we can use to solve the problem:
We also set the quantum backend we want to execute on:
We can now synthesize and view the QAOA circuit (ansatz) used to solve the optimization problem:
Output:
Output:

Executing the hybrid algorithm

We now solve the problem using the generated circuit by using the execute method:
We can check the convergence of the run:
output

Analyze results

We can also examine the statistics of the algorithm:
Output:
output