Prawdopodobieństwa dla systemu M/M/1 - projektowanie sieci komputerowych

0

Mam problem z pewnym zadaniem - chodzi o obliczenie prawdopodobieństw
stacjonarnych dla systemu M/M/1 z czasem dyskretnym. Mam podany elegancki wzór,
oraz co ozn. poszczególne zmienne: p - prawdopodobieństwo przyjścia pakietu,
q - prawdopodobieństwo obsługi pakietu, N - ile prawdopodobieństw obliczyć.

wzór:

P(1) = p/qP(0)
P(n+1) = P(n)
(1-2p+p/q)-P(n-1)(p/q), dla n > 0

Na początku ustalam dowolne P(0), a potem normalizuję prawdopodobieństwa pozostałe,
czyli: (jest to taka normalizacja)

for(int i=0; i<N; i++)
P[i] /= P(0);

gdzie P[i] = zawiera i-te prawdopodobieństwo.

Problem mój polega nie na zaimplementowaniu wzroru, bo jest wprost śmieszny, ale to,
że otrzymuję ujemne prawdopodobieństwa (wtf?)

Być może jest jakiś błąd we wzorze? Siedzę nad tym już drugi tydzień i nic, wie
ktoś, co tu poprawić?

Nie bardzo mogę podać kod, ale powiem po krótce, co w nim robię:

  1. tworze tablice P o rozmiarze N, zeruję ją
  2. ustalam P(0), obliczam P(1), wrzucam je do tablicy P
  3. w pętli for(int i=1; i<N-1; i++) mam dokładnie ten wzór, który podałem wyżej, czyli P(n+1) = P(n)(1-2p+p/q)-P(n-1)*(p/q)
  4. wykonuję normalizację wartości z tablicy P, o tak: for(int i=0; i<N; i++)
    P[i] /= P(0);

Proszę o pomoc:(

0

Dzięki za odpowiedź. No właśnie tak podejrzewałem, ale spr. tylko dla p i q != 1, więc to chyba nie to - przykładowo, dla wartości p = 0.2 i q = 0.667 oraz N = 800 też otrzymuję ujemne prawdopodobieństw.

Ktoś wie może, jak poprawić ten wzór?

Dodam może jeszcze do tych danych, że P[n] ozn. że w chwili t w systemie jest n pakietów, może to coś ułatwi ....

0

Dla podanych p=0.2 i q=0.667 już P(2) jest ujemne, więc wzór jest skopany.

P[n] ozn. że w chwili t w systemie jest n pakietów, może to coś ułatwi ....

To niczego nie ułatwi: w podanych wzorach nie ma żadnego t, P[n] musi oznaczać coś innego.

0

Nie, oznacza dokładnie to, co napisałem -> po przejściu na system dyskretny pozbywam się dolnego indeksu t, który powinien być przy każdym P (po znaku równości, po prawej jego stronie jest ściślej mówiąć t-1). W sumie to nie ma znaczenia, to t;) Może inaczej: przed rozwinięciem wzór wygląda tak: P[n] = pP[n-1] + qP[n+1] + ((1-p)(1-q)+pq)P[n], gdzie pP[n-1] ozn., że pakiet przyszedł, qP[n+1], że pakiet obsłużono, a ((1-p)*(1-q)+pq)*P[n] że pakiet wszedł i od razu został obłsużony, czyli niby nic się nie zmieniło, (stan systemu), ale jednak coś się stało.

0

Imo, źle rozumujesz. Dyskretny czas oznacza, że rozpatrujesz stan w chwili 0, w chwili 1,....Niech k oznacza numer chwili. Powinieneś rozpatrywać P[n][k] oznaczające prawdopodobieństwo, że w chwili k jest n nieobsłużonych pakietów.

0

Co to w takim razie zmienia we wzorze? Tablice 2 wymiarowa musze dac? Czy zmiany sa jeszcze wieksze?

0

P[n][k] = prawdopodobieństwo tego, że w chwili k jest n nieobsłużonych pakietów,
p = prawdopodobieństwo, że w chwili k dotrze pakiet,
q = prawdopodobieństwo, że w chwili k pakiet zostanie obsłużony.
P[0][0] = (1 - p) + pq //pakiet nie dotarł lub dotarł i został obsłużony
P[1][0] = p
(1 - q) //pakiet dotarł i nie został obsłużony
P[n][0] = 0 dla n>=2
P[n][k+1] = ((1 - p)(1 - q) + pq)P[n][k] + p(1 - q)*P[n-1][k]+(1 - p)qP[n+1][k]

  • pierwszy składnik opisuje taką sytuację: w poprzedniej chwili było n pakietów i nic nie dotarło i nic nie zostało obsłużone lub coś dotarło i coś zostało obsłużone,
  • drugi składnik: było n-1 pakietów, dotarł nowy i żaden nie został obsłużony,
  • trzeci składnik: było n+1 pakietów, żaden nie dotarł, jeden został obsłużony
    //Edit, poprawiłem pierwszy składnik
    //Edit, poprawiłem trzeci składnik przez co pytanie w poniższym poście jest dość tajemnicze.
0

Dziękuję:) Chyba o to chodziło. A czy w tym trzecim składniku nie powinno być (1 - p)*q****P[n+1][k] zamiast (1 - p)q+**P[n+1][k] ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1