An easier solution might be to use the starting area as the best and optimize from there, rather than starting with infinite area and optimizing what it can. That is, assuming the starting area is already free of conflicts, it should know a working solution exists from the get go.