Individual assignment for the Data Analytics & Data Driven Decisions course.
This project is a set covering problem for unmanned aerial vehicle (UAV) to cover a set of targets. The problem is formulated as a mixed integer linear programming (MILP) model and solved by Gurobi solver.
Based on the Paper Unmanned aerial vehicle set covering problem considering fixed-radius coverage constraint, the model is extended to only consider the fixed-radius coverage constraint.
The idea behind this problem is to asssit in a region during disaster recovery. Where demand_points
are people in need of aid within a certain region, how many UAVs are required to cover all demand points, based on the radius of the UAVs (coverage_radius
).
The following packages are required to run the code:
- Gurobi (you also need a licence)
- NetworkX
- Matplotlib
You should also have some sort of Python environment manager installed, such as Anaconda.
The scp.ipynb
file manages all aspects of solving this problem. It starts by generating a set of demand points within a networkx graph, based on the specified regiion width & height, and the number of demand points.
Each demand point is plotted randomly on the graph, the output looks something like this:
Secondly, we define decision variables, the objective function (to minimize the number of UAVs required), and the constraints, based on the model in the paper:
-
$N$ = set of demand points -
$M$ = set of flight position of UAVs
-
$b^x_j$ = flight position of UAV$j$ on x-coordinate -
$b^y_j$ = flight position of UAV$j$ on y-coordinate -
$\alpha_{ij}$ = binary feasibility of UAV$j$ covering demand point$i$
Distance between each demand point is calculated using the Euclidean distance formula:
Finally, the model is solved using Gurobi solver, and the output looks something like this:
In this particiular case, 5 UAVs are required to cover all demand points.
Note: You may notice the number of UAVs flucuate between each run. This is because the demand points are randomly generated within the region every time, and the solver may find a different solution each time.