12  Антени за мобилни услуги

През последните две десетилетия мобилните технологии се развиват изключително бързо, а търсенето на мобилни услуги непрекъснато нараства. Тези услуги се предоставят чрез мрежа от клетъчни кули, които обикновено се управляват от мобилни оператори.

Изграждането на антени е свързано с разходи, затова операторите трябва да преценят къде да разположат антените, така че да осигуряват оптимално покритие, като същевременно броят им да е възможно най-малък.

Пример за антена за мобилни комуникации

В тази задача разглеждаме ситуация, в която операторът е определил 6 площадки, на които може да построи антени. Всяка площадка има различен разход за изграждане и местоположението определя кои от общо 9 региона ще бъдат покрити от антената там (Таблица 12.1). Целта на оператора е да избере на кои площадки да построи антени, така че да осигури покритие за възможно най-голям брой жители, като същевременно разходите не надвишават наличния бюджет от 20 милиона лева.

Excel файл

Покажи
import pandas as pd

loc_reg_data = [
    ["Площадка 1", 1, 1, 0, 0, 0, 1, 0, 0, 0],
    ["Площадка 2", 1, 0, 0, 0, 0, 0, 0, 1, 1],
    ["Площадка 3", 0, 0, 1, 1, 1, 0, 1, 0, 0],
    ["Площадка 4", 0, 0, 1, 0, 0, 1, 1, 0, 0],
    ["Площадка 5", 1, 0, 1, 0, 0, 0, 1, 1, 1],
    ["Площадка 6", 0, 0, 0, 1, 1, 0, 0, 0, 1]
]

regions = ["Регион 1", "Регион 2", "Регион 3", "Регион 4", "Регион 5", "Регион 6", "Регион 7", "Регион 8", "Регион 9"]

lr = pd.DataFrame(loc_reg_data, columns=["Локация"] + regions)
lr.set_index("Локация", inplace=True)

pop_data = [523, 690, 420, 1010, 1200, 850, 400, 1008, 950]
pop = pd.Series(
    pop_data, 
    name="Жители",
    index=regions
)

# pop.to_frame()
Покажи
lrxl = lr.copy()

lrxl.loc[pop.name] = pop
costs = [4.2, 6.1, 5.2, 5.5, 4.8, 9.2]
lrxl["Разходи"] = [*costs, None]

lrxl.to_excel("./excel/cell_towers.xlsx")
lrxl
Таблица 12.1: Данни за покритието на всяка от 6-те площадки и броя жители във всеки от 9-те региона и разходи за изграждане на антена на всяка от площадките (в милиони евро). Покритие на площадките: 1 - покрива региона, 0 - не покрива региона.
Регион 1 Регион 2 Регион 3 Регион 4 Регион 5 Регион 6 Регион 7 Регион 8 Регион 9 Разходи
Локация
Площадка 1 1 1 0 0 0 1 0 0 0 4.2
Площадка 2 1 0 0 0 0 0 0 1 1 6.1
Площадка 3 0 0 1 1 1 0 1 0 0 5.2
Площадка 4 0 0 1 0 0 1 1 0 0 5.5
Площадка 5 1 0 1 0 0 0 1 1 1 4.8
Площадка 6 0 0 0 1 1 0 0 0 1 9.2
Жители 523 690 420 1010 1200 850 400 1008 950 NaN