Главная страница
Навигация по странице:

  • Факультет физико-математических и естественных наук Кафедра прикладной информатики и теории вероятностей ОТЧЕТ

  • МОСКВА 2021 г.Цель работы: Ознакомление с общей моделью на основе случайных полей и статической модели блокировкиВыполнение работы

  • Листинг

  • Отчет по лабораторной работе 6 дисциплина Моделирование беспроводных сетей


    Скачать 200.11 Kb.
    НазваниеОтчет по лабораторной работе 6 дисциплина Моделирование беспроводных сетей
    Дата16.01.2022
    Размер200.11 Kb.
    Формат файлаdocx
    Имя файлаLab6.docx
    ТипОтчет
    #332834

    РОССИЙСКИЙ УНИВЕРСИТЕТ ДРУЖБЫ НАРОДОВ

    Факультет физико-математических и естественных наук

    Кафедра прикладной информатики и теории вероятностей
    ОТЧЕТ

    по лабораторной работе № 6

    дисциплина: Моделирование беспроводных сетей

    Студент: Байрамов Рустам
    Группа:НФИмд-02-21


    МОСКВА

    2021 г.

    Цель работы:

    Ознакомление с общей моделью на основе случайных полей и статической модели блокировки

    Выполнение работы

    Задание. В круге радиуса R, центром которого является целевой приемник, распределены согласно Пуассоновскому равномерному точечному процессу с интенсивностью B интерферирующие устройства. На целевом приемнике расположена всенаправленная антенна, а интерферирующие устройства оборудованы направленными антеннами с углом диаграммы направленности γ. Предполагается, что все антенны сориентированы случайным образом и постоянно излучают сигнал с мощностью P. При этом применяется модель распространения сигнала Cone (аналог модели Free Space Path Loss с поправкой на коэффициент диаграммы направленности). В этом же круге согласно Пуассоновскому равномерному точечному процессу с интенсивностью A распределены блокирующие объекты радиуса D. Для упрощения интерферирующие устройства не считать блокирующими объектами. В случае если сигнал от интерферирующего передатчика до целевого приемника проходит через блокирующий объект, то он не создает помех на целевом приемнике. Аналогично, если целевой приемник не попадает в сектор диаграммы направленности интерферирующего передатчика, то соответствующий интерферирующий сигнал тоже не создает помех. На основе полученной модели построить графики среднего значения интерференции как функции от направленности антенн γ, интенсивности Пуассоновского поля источников интерферирующих устройств B, интенсивности Пуассоновского поля блокирующих объектов A. При построении графиков использовать как минимум 1000 реализаций.

    Листинг:

    import numpy as np

    import matplotlib.pyplot as plt

    import scipy.stats

    import math

    from numpy.linalg import norm

    from numpy import arccos, dot, pi, cross
    def plot_circle(x,y,r): #функция отрисовки круга

    angles=np.linspace(0,2*np.pi,50)

    x_cir=x+r*np.cos(angles)

    y_cir=y+r*np.sin(angles)

    plt.plot(x_cir,y_cir,'red')
    def plot_zone(x,y,distance,angle,fixang): #Функция отрисовки интерферирующих объектов

    x1=x+distance*np.cos(angle) #подсчёт координат направления сектора

    y1=y+distance*np.sin(angle)

    x2=x+distance*np.cos(angle+fixang)

    y2=y+distance*np.sin(angle+fixang)

    plt.plot([x,x1],[y,y1], '-.b') # отрисовка лучей, иллюстрирующих сектор

    plt.plot([x,x2],[y,y2], '-.b')
    def poisson_point_process(lambda0,R,area_size): #функция инициализации пуасоновского распределения точек

    N = np.random.poisson(lambda0*area_size**2)

    x1=[]

    y1=[]

    while len(x1)!=N:

    x = np.random.uniform(0,area_size)

    y = np.random.uniform(0,area_size)

    if ((x-x0)**2+(y-y0)**2<=R*R):

    x1.append(x)

    y1.append(y)

    return x1,y1
    guard_size = 10 #размер зоны

    guard_radius=4 #радиус сигнала антенны

    poisson_lam_block = 0.1 #интенсивность для распределения блокирующих устройств

    poisson_lam_int = 0.07 #интенсивность для распределения интерферирующих устройств

    radius = 0.3 #радиус блокирующих устройств

    distance = 1 #длина луча для отрисовки сектора

    fixang = np.pi/4 #угол сектора интерферирующих устройств

    list_point=np.array #массив для дальнейшей функции
    x0=guard_size/2 #координаты расположения антены

    y0=guard_size/2
    #инициализация бокирующих и интерферирующих устройств

    x_block, y_block=poisson_point_process(poisson_lam_block, guard_radius, guard_size)

    x_int, y_int=poisson_point_process(poisson_lam_int, guard_radius, guard_size)

    angle1 = np.random.uniform(0,2*np.pi,size=len(x_int)) #массив углов поворота для каждого интерфирирующего устройства
    #инициализация точек окружности – зоны сигнала антенны

    circle_angels=np.linspace(0, 2*np.pi, 100)

    circle_x=x0+guard_radius*np.cos(circle_angels)

    circle_y=y0+guard_radius*np.sin(circle_angels)
    plt.figure(dpi=100, figsize=(8,8), facecolor='olive')

    plt.title('Coverage area')

    plt.plot(x_block,y_block,'.', alpha=0.7,label='fist',lw=5,mec='r',mew=3,ms=10)

    for i in range(len(x_block)): #отрисовка блокирующих объектов

    plot_circle(x_block[i],y_block[i], radius)

    plt.plot(x_int,y_int,'.', alpha=0.7,label='fist',lw=5,mec='b',mew=2,ms=10)

    for i in range(len(x_int)): #отрисовка интерферирующих объектов и их секторов

    plot_zone(x_int[i],y_int[i],distance,angle1[i],fixang)

    plt.plot(x0,y0,'.', alpha=0.7,label='fist',lw=5,mec='g',mew=2,ms=10) #отрисовка антены

    plt.plot(circle_x,circle_y,'green') #отрисовка круга
    plt.xlim(0,guard_size) #границы рисунка

    plt.ylim(0,guard_size)

    plt.savefig('plot_1.png')
    def distance(x1,y1,x2,y2):

    return np.sqrt((x2-x1)**2+(y2-y1)**2)
    def check_pol(line_d1, line_d2,angle,fixang): #функция проверки нахождения антены

    x1, y1 = line_d1 #коордитаны первой точки #в зоне действия интерф.устройств

    x2, y2 = line_d2 #координаты второй точки #из 5 лаб.работы

    atan1=math.atan2((y2-y1),(x2-x1))

    if atan1<0:

    atan1=2*np.pi+atan1

    d1= atan1>angle and atan1<(angle+fixang)

    if d1==True:

    return True

    else:

    return False
    def check_distance(A,B,C): #проверка блокировки из 4 лаб. работы

    CA=(C-A)/norm(C-A)

    BA=(B-A)/norm(B-A)

    CB=(C-B)/norm(C-B)

    AB=(A-B)/norm(A-B)

    if arccos(dot(CA,BA))>1:

    return norm(C-A)

    if arccos(dot(CB,AB))>1:

    return norm(C-B)

    return norm(cross(A-B,A-C))/norm(B-A)
    def crossing(x1,y1,x2,y2,x,y,radius):

    circle_point=[]

    point_1=[]

    point_2=[]

    point_1.extend([x1,y1])

    point_2.extend([x2,y2])

    for i in range(len(x)):

    circle_point.append([x[i],y[i]])

    for i in range(len(x)):

    if (np.round(check_distance(list_point(point_1), list_point(point_2), list_point(circle_point[i])),1)<=radius):

    return True
    def interf(x0,y0,x_int,y_int,P,fixang): # функция подсчёта интерференции

    rastoyanie=distance(x0,y0,x_int,y_int) # по формуле

    G=2/(1-np.cos(fixang/2))

    prx=P*G/(4*np.pi*rastoyanie**2)

    return prx

    P=2

    num_experiments = 1000
    #функция для иммитациооного моделирвоания и подсчёта значений для графиков

    #отличается от 5той лаб. работы подсчётом интерференции

    def immit(num_experiments,P,fixang,poisson_lam_block,poisson_lam_int,guard_radius,guard_size):

    Interf=[] #инициализация пустого массива

    for j in range (num_experiments):

    Inter1=0 #обнуление значения интерференции

    x_block, y_block=poisson_point_process(poisson_lam_block, guard_radius, guard_size)

    x_int, y_int=poisson_point_process(poisson_lam_int, guard_radius, guard_size)

    angle1 = np.random.uniform(0,2*np.pi,size=len(x_int))

    for i in range((len(x_int))):

    if check_pol([x_int[i],y_int[i]],[x0,y0],angle1[i],fixang)==True and crossing(x0,y0,x_int[i],y_int[i],x_block,y_block,radius) == None:

    Inter1=Inter1+interf(x0,y0,x_int[i],y_int[i],P,fixang) #суммирование значений интерференции для каждого устройства, в секторе которого находится антена и нет блокирующих объектов

    Interf.append(Inter1) #добавление значения к массиву

    return np.mean(Interf) #возврат среднего значения по массиву
    #Для угла

    num_experiments = 1000

    Interf_fi=[]

    fixang=0

    fixang_int=[]

    shag=10

    for l in range(shag):

    fixang=fixang+np.pi/shag #изменение угла

    fixang_int.append(fixang) #добавление угла к массиву углов для последующего построения графика

    Interf_fi.append(immit(num_experiments,P,fixang,poisson_lam_block,poisson_lam_int,guard_radius,guard_size)) # подсчёт среднего значения интерференции и добавление его к массиву
    plt.figure(dpi=100)

    plt.title('Interferencia by angle')

    plt.plot(fixang_int,Interf_fi)

    plt.xlabel('Угол')

    plt.ylabel('Значение интерференции')

    plt.savefig('plot_lab6_2.png')
    #построение графика с изменением лямбды для интерферирующих устройств(аналогично)

    Interf_fi=[]

    fixang=np.pi/4

    poisson_lam_int = 0

    poisson_lam_int_op = []

    #2PI/(PI/6)

    for l in range(shag):

    poisson_lam_int=poisson_lam_int+0.01

    poisson_lam_int_op.append(poisson_lam_int)

    Interf_fi.append(immit(num_experiments,P,fixang,poisson_lam_block,poisson_lam_int,guard_radius,guard_size))
    plt.figure(dpi=100)

    plt.title('Interferencia by B')

    plt.plot(poisson_lam_int_op,Interf_fi)

    plt.xlabel('Интенсивность распределения интерферирующих устройств')

    plt.ylabel('Значение интерференции')

    plt.savefig('plot_3.png')
    #построение графика с изменением лямбды для блокирующих устройств(аналогично)

    Interf_fi=[]

    fixang=np.pi/4

    poisson_lam_int = 0.07

    poisson_lam_block = 0

    poisson_lam_block_op = []

    for l in range(shag):

    poisson_lam_block=poisson_lam_block+0.01

    poisson_lam_block_op.append(poisson_lam_block)

    Interf_fi.append(immit(num_experiments,P,fixang,poisson_lam_block,poisson_lam_int,guard_radius,guard_size))
    plt.figure(dpi=100)

    plt.title('Interferencia by A')

    plt.plot(poisson_lam_block_op,Interf_fi)

    plt.xlabel('Интенсивность распределения блокирующих устройств')

    plt.ylabel('Значение интерференции')

    plt.savefig('plot_4.png')
    Результат:








    Заключение.

    Я ознакомилcя с общей моделью на основе случайных полей и статической модели блокировки


    написать администратору сайта