Final project of the subject "Systems Optimization" from the Graduate Program in Electrical Engineering and Industrial Informatics (CPGEI) from UTFPR, Brazil. It consists on the use of the GUSEK tool to solve a Binary Integer Programming Problem that can determine the deployment coordinates for RSUs in a Vehicular Network.
This project is heavily inspired by:
P. -C. Lin, "Optimal roadside unit deployment in vehicle-to-infrastructure communications," 2012 12th International Conference on ITS Telecommunications, 2012, pp. 796-800, doi: 10.1109/ITST.2012.6425291, Available in: https://ieeexplore.ieee.org/document/6425291.
Given a certain urban environment where V2X (vehicle-to-everything) communication is desired, it is important to efficiently guarantee that the actors (cars, pedestrians, cyclists, etc) are aware of the position, speed and heading of each other to ensure the safety of all the users. Since it is unreasonable to suppose that all these actors will have compatible V2X devices, one way to provide the detection of multiple people is with the use of Roadside Units (RSUs).
RSUs are infrastructure nodes that are placed alongside the urban environment and are equipped with sensors and wireless communication devices. One of the most common uses of these nodes is to monitor crosswalks in order to ensure the safety of pedestrians that intend on crossing the street.
This work aims to provide an algorithm capable of defining the optimal deployment location for Roadside Unit nodes in a urban environment using the least amount of RSUs in order to not waste resources. The simulated area is composed of the coordinates
These coordinates can either be a location that must be covered by an RSU, a candidate for RSU placement or an unavailable location. It is also important to note that in this project every RSU is capable of providing coverage in a circular radius of 1 unit of lenght (
Since the decision to deploy a RSU in a given pair of integer coordinates is boolean, this study case is a Binary Integer Programming Problem. In order to solve the proposed network models, the program GUSEK (https://gusek.sourceforge.net/gusek.html) was utilized. It is an open source project based on the GLPK solver that can handle diverse types of optimization problems, including the one presented in this work.
As mentioned, the coordinates are given by a set of integer coordinates where the maximum value for the vertical
The matrix
Similarly,
The decision to deploy or not an RSU in a coordinate is a boolean variable
In order to enforce that the unavailable positions
Given all these conditions, the objective function is given by:
The restriction of the model is given by the fact that all the available nodes must be covered by at least one RSU
. This verification is done by using a parameter
Thus, the restriction of the optimization problem can be described by:
The presented .mod file contains a 4x5 and a 10x9 network examples, but it can can be edited to use different network grid shapes.
After the program is executed, GUSEK will first find an optimal solution in a Linear Programming approach through several iterations. From there, it will iterate once again, but using Branch-and-bound techniques to find the optimal Integer solution for the problem.
Note that the bigger the grid, the longer the program will take to reach an optimal solution.
After a succesfull run, the recommended coordinates for RSU placement will be printed in the GUSEK results terminal:
Along with the optimization model, two sets of configurations are present at the end of the source .mod file as examples on how to setup a network model. In both of the examples it is considered that
The first example contains a grid with 4 rows and 5 columns where the coordinates (1,4) and (3,2) are unavailable.
From the 18 available positions, the solver indicated that 5 RSUs were necessary and that they should be placed in [(1,1); (2,3); (2,5); (4,1); (4,4)] resulting in the model below:
The second example is pretty much identical, but using a grid with 10 rows and 9 columns where the coordinates [(2,5); (3,1); (4,8); (6,4); (8,7)] are not to be used.
From the 85 available positions, 22 RSUs are needed in the coordinates [(1,1); (1,6); (2,3); (2,4); (2,8); (2,9); (3,5); (4,2); (4,7); (5,4); (5,9); (6,1); (6,6); (7,2); (7,3); (7,8); (8,5); (9,1); (9,5); (9,9); (10,3); (10,7)] resulting in: