Я считаю, что покрытие одной вышки это окружность с заданным радиусом. Располагаю их случайным образом. Высчитываю какой процент они покрывают. Выбираю ту выборку где процент максимальный. Ее модифицирую, смотрю какие модификации выигрывают и дальше сними то же самое.
Guzh: Здесь нужно "пузырьковое" заполнение с пересечением 3-х соседних окружностей в одной точке (R=const) ИЛИ пересечением 4-х, 3 из которых касаются друг друга (Rmax), а перекрывающая - в центре (Rmin).
Начинать нужно от произвольной точки, лежашей на любом отрезке периметра многоугольника, вписанного в зону, которую пытаемся покрыть и по-спирали к центру: при пересечении 2-х окружностей, одна из точек пересечения должна быть точкой касания к этому многоугольнику (с внутр. стороны, соотв.).
Guzh: Какой-нибудь из алгоритмов поиска условного экстремума функционала. Вы бы сначала банальность решили из вашего ночного вопроса, а потом приступали к реальным задачкам.