Each base station also has a linked list, which keeps track of the index of reachable potential subscribers. The benefit of doing so is to lower the computation complexity in simulated annealing. When adding or removing a base station, with the given index of that base station, we only have to go through the potential subscribers. Server is declared as possible base station where lasers are installed. Annealer is a simulated annealing computation drive.
List is a linked list for each server to keep track reachable users.
Heap is a priority queue implemented with heap sort. Its usage is to sort out all fixed base stations. There is also a simply program that generates topology information based on area range and the number of the potential subscribers. As mentioned before, simulated annealing only finds the near best solution. In order to verify the accuracy of the implementation of simulation annealing algorithm, I applied the implementation to a mini model with known best solution.