A non-transitory computer-readable medium embodying a set of computer-executable instructions, which, when executed in connection with a system comprising a central processing unit, a localization signal receiver and a memory, cause the system to perform a method comprising:
- a. using the central processing unit for determining an optimal number of beacons in a plurality of beacons to be placed in an environment to achieve an optimal localization, wherein the optimal number of beacons is determined based on a first cost function, which combines a beacon coverage requirement and a beacon spread requirement to determine the optimal number of beacons, wherein determining an optimal number of beacons comprises starting with a number of beacons and iteratively adding one beacon;
- and
- b. using the central processing unit for determining an optimal placement of the beacons from the plurality of beacons in the environment to achieve the optimal localization, wherein the optimal placement of the beacons is determine by iteratively solving a best global position for the beacons using a second cost function, which combines the beacon coverage requirement and the beacon spread requirement to determine the optimal placement of the beacons.