forum.vnstele.com

Вітруальне навчальне середовище телекомунікацій - Форум підтримки
Сьогодні: 28 березня 2024, 23:03

Часовий пояс UTC + 2 годин [ DST ]




Створити нову тему Відповісти  [ 8 повідомлень ] 
Автор Повідомлення
ПовідомленняДодано: 27 березня 2012, 17:14 
Офлайн
Аватар користувача

З нами з: 19 січня 2012, 18:50
Повідомлення: 31
Звідки: Львів
Питання розрахунку першої формули Ерланга ми уже торкалися в темі Завдання для виконання курсової роботи.
В цій темі я пропоную детальніше обговорити проблеми розрахунку першої формули Ерланга.

В багатьох студентів виникають проблеми при розраховуванні імовірнсоті втрат за дпомогою першої формули Ерланга.
Якщо вас цікавить чому виникають такі проблеми, і як їх в прицнипі можна вирішити, то рекомендую почитати Обговорення розрахунку формули Пуассона.

Я запропоную свій варіант функції яка обчислює імовірності втрат за допомогою першої формули Ерланга(функція написана в MATLAB):
Код:
function mass=firstErlang(Y,V)
for v=0:V
    for k=0:v
    if k==0
        erlang=(Y^k)/factorial(k);
    else
        erlang=(erlang*Y)/k;
    end
    mass1(k+1)=erlang;
    end
    mass(v+1)=mass1(v+1)/sum(mass1);
end
return

Вхідними значеннями для цієї функції є інтенсивність поступаючого навантаження Y, та кількість ліній V які це навантаження обслуговують.
Повертає ця функція масив з V+1 елементів:
Елемент масиву з індексом (1) рівний імовірності втрат при обслуговуванні поступаючого навантаження пучком з V=0 ліній. Елемент масиву з індексом (2) рівний імовірності втрат при обслуговуванні поступаючого навантаження пучком з V=1 ліній, і так аж до: елемент з індексом (V+1) рівний імовірності втрат при обслуговуванні поступаючого навантаження пучком з V ліній. ( це V і є тим вхідним значенням кількості ліній яке ви задаєте).

Якщо хочете дізнатись як користуватись цією функцією, то я рекомендую почитати Як користуватись функцією написаною користвувачем в MATLAB?

Також, я запропуную алгоритм який будує графік за допомогою цієї функції:
Код:
%######## Вихідні дані ##########
ac=4.1; % середня кількість викликів від абонента за одиницю часу;
at=250/3600; % середня тривалість зайняття викликом КС;
N=717; % кількість джерел навантаження
Pb=0.01; % допустима імовірність втрат( це буде як бонус: якщо ви введете тут своє значення, то одразу ще й попудується лінія з ординатою рівною %вашій допустимій імовірності втрат);
V=1000;
Y=ac*at*N;
%################################

mass=firstErlang(Y,V);
for k=0:V
    if mass(k+1)>=0.10
       ymax=mass(k+1);
    else
        xmin=k-1;
        break
    end
end
for k=0:V
    if mass(k+1)>=0.001
       ymin=mass(k+2);
    else
        xmax=k;
        break
    end
end
V=0:V;
graf=plot(V, mass);
axis([xmin,xmax,ymin,ymax]);
set(graf,'LineWidth',2,'Color',[1 0 0]);
hold on;

%#### Цього не слід писати якщо не хочете будувати прямої яка #####
%######## відповідає вашій допустимій імовірності втрат ###########
Pb=[Pb,Pb]; x=[xmin,xmax];
graf1=plot(x,Pb);
set(graf1, 'LineWidth',1,'Color',[0 0 1]);
%##################################################################

xlabel('V, кількість ліній'); ylabel('Ev(Y), імовірність втрат');
title('Графік залежності Ev(Y) від кількості ліній V'); grid on;

Особливістю побудованого графіка буде те, що межі побудови виберуться автоматично з міркувань реальних втрат КС, тобто діапазон імовірностей втрат на цьому графіку буде рівний 10%-0.1%. Це придумано для того, щоб легше було користуватись графічним методом розрахунку куількості ліній, які забезпечують потрібну якість обслуговування. Якщо вам все ж не потрібно такого, то просто в тексті програми знайдіть рядок "axis([xmin,xmax,ymin,ymax]);" без лапок та видаліть його. Доречі, якщо ви відмовляєтесь від встановлення цих меж, то вам слід відмовитись і від побудови лінії, яка відповідатиме вашій допустимій імовірності втрат, принаймні, запропонованим мною методом. :)

Для того, щоб переконати всіх, що все працює, наведу отриманий результат:
Приєднання файлів:
Ev(Y) від V.png
Ev(Y) від V.png [ 22.65 Кб | Переглянуто 4209 разів ]

П.С. Бажаю всім успішного виконання курсової роботи. ;)

_________________
Зображення


Догори
 Профіль  
 
ПовідомленняДодано: 28 березня 2012, 17:14 
Офлайн
Адміністратор сайту

З нами з: 11 січня 2011, 15:00
Повідомлення: 181
Звідки: Львів
Невеличке доповнення до вище сказаного:
Функція, що повертає масиви кількості ліній і імовірності втрат при фіксованому навантаженні Y, обчислене за І формулою Ерланга. Дозволяє обчислювати значення імовірності втрат навіть для дуже великих значень кількості ліній і інтенсивності навантаження.
Код:
% Обчислення за першою формулою Ерланга (рекурентне співвідношення)
% Повертає два масиви значень:
% Перший масив - кількість ліній, другий масив - імовірність втрат (при Y=const)
% Вихідні дані: v - кінцеве значення кількості ліній, Y - інтенсивність навантаження

function [vv Ev] = ErlangI_rec (v, Y)
vv = 1:v;           % Записуємо значення кількості ліній в масив 1.
Ev(1,1)=Y/(1+Y);    % Значення імовірності втрат для v=1, заданого Y.

for k = 2:v         % Цикл по кількості ліній
    Ev(k,1)=1/(1+(k/Y/Ev(k-1,1)));  % Запис значення імовірності
end
return;

Використання функції наступне:
Код:
[v1 EvR] = Erlang_rec (v, Yn);

І графічна інтерпритація результату:
Код:
plot (v1, EvR, 'r*');

Ну а для більш наглядного і коректного виведення графіка Микола запропонував рішення :)


Догори
 Профіль  
 
 Тема повідомлення: Визначення кількості ліній
ПовідомленняДодано: 28 березня 2012, 22:03 
Офлайн

З нами з: 19 лютого 2012, 15:29
Повідомлення: 4
Євген Михайлович скажіть будьласка чому при вирахуванні p(k) в мене виходить 0 ? (N=1455)
А також, вираховуючи кількість ліній в мене виходить E(v)=1 (при v=1, 10, 50…), а при v=0, то E(v)=7,8*10^-7 ?


Приєднані файли:
Без імені.png
Без імені.png [ 10.55 Кб | Переглянуто 4209 разів ]
Догори
 Профіль  
 
 Тема повідомлення: Re: Визначення кількості ліній
ПовідомленняДодано: 29 березня 2012, 13:23 
Офлайн
Адміністратор сайту

З нами з: 11 січня 2011, 15:00
Повідомлення: 181
Звідки: Львів
Шановна Оксана, у Вас так виходить, туму що Ви припустилися грубої помилки :) .
Інтенсивність навантаження від одного абонента не може бути більше 1 Ерл., а у Вас всі 288 Ерл.
Вам потрібно перерахувати Y=Nct (всі величини привести до одного масштабу часу, бажано до години).


Догори
 Профіль  
 
 Тема повідомлення: Re: Визначення кількості ліній
ПовідомленняДодано: 29 березня 2012, 18:19 
Офлайн

З нами з: 19 лютого 2012, 15:29
Повідомлення: 4
echern написав:
Шановна Оксана, у Вас так виходить, туму що Ви припустилися грубої помилки :) .
Інтенсивність навантаження від одного абонента не може бути більше 1 Ерл., а у Вас всі 288 Ерл.
Вам потрібно перерахувати Y=Nct (всі величини привести до одного масштабу часу, бажано до години).



Якщо перевести все в години, тоді N=1455, c=3.6год., t=245секунд=4,08год. і, шукаючи Y=N*c*t=21371,04 Ерл


Догори
 Профіль  
 
 Тема повідомлення: Re: Визначення кількості ліній
ПовідомленняДодано: 29 березня 2012, 19:12 
Офлайн
Адміністратор сайту

З нами з: 11 січня 2011, 15:00
Повідомлення: 181
Звідки: Львів
Oksana написав:
Якщо перевести все в години, тоді N=1455, c=3.6год., t=245секунд=4,08год. і, шукаючи Y=N*c*t=21371,04 Ерл

Ха-ха-ха. Якщо 245 секунд - це чотири години, то далі можна нічого і не рахувати. (Хоча с - викликів/годину, а не години.)


Догори
 Профіль  
 
ПовідомленняДодано: 11 квітня 2012, 19:53 
Офлайн

З нами з: 21 січня 2012, 20:21
Повідомлення: 3
не вдається скористатися поданим алгоритмом,вибиває помилку
??? Undefined function or method 'firstErlang' for input arguments of type 'double'.
підкажіть що робити :|


Догори
 Профіль  
 
ПовідомленняДодано: 11 квітня 2012, 21:14 
Офлайн
Адміністратор сайту

З нами з: 11 січня 2011, 15:00
Повідомлення: 181
Звідки: Львів
В робочій папці має бути створений файл firstErlang.m, в якому і реалізована дана функція. А далі, як звичайно, виклик функції з аргументами в дужках.


Догори
 Профіль  
 
Відображати повідомлення за:  Сортувати за  
Створити нову тему Відповісти  [ 8 повідомлень ] 

Часовий пояс UTC + 2 годин [ DST ]


Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 4 гостей


Ви не можете створювати нові теми у цьому форумі
Ви не можете відповідати на теми у цьому форумі
Ви не можете редагувати ваші повідомлення у цьому форумі
Ви не можете видаляти ваші повідомлення у цьому форумі
Ви не можете додавати файли у цьому форумі

Знайти:
Вперед:  
cron
POWERED_BY
Український переклад © 2005-2010 Українська підтримка phpBB