示例#1
0
        /// <summary>
        /// Wyznacza nowy zagregowany rozkład na podstawie istniejącego oraz nowej klasy zgłoszeń
        /// </summary>
        /// <param name="klasa">Nowa, agregowana klasa zgłoszeń</param>
        /// <returns></returns>
        public override Rozklad zagregujKlase(trClass klasa)
        {
            if (zagregowaneKlasy.Count == 0)
            {
                return(new rGammaYc2(wiazka, klasa));
            }

            rGammaYc2 wynik = new rGammaYc2(this);
            Rozklad   p     = new Rozklad(wiazka, klasa, true);

            // Wyznaczanie średniej liczby obsługiwanych zgłoszeń
            liczYspl(wiazka.sigmy, wiazka.V);

            //Operacja splotu

            double[][] prDopKomb = rGammaYc2.wyznGamma(this, p, klasa, wiazka.sigmy, V, yi);
            double[]   stany     = new double[V + 1];
            double     suma      = 0;

            for (int n = 0; n <= V; n++)
            {
                for (int lC = 0; lC <= n; lC++)
                {
                    double tmp = this[lC] * p[n - lC] * prDopKomb[lC][n - lC];
                    suma     += tmp;
                    stany[n] += tmp;
                }
            }

            for (int n = 0; n <= V; n++)
            {
                wynik[n] = stany[n] / suma;
            }

            // Uaktualnianie rozkładów pomocniczych

            wynik.pi = new Rozklad[zagregowaneKlasy.Count + 1];
            for (int i = 0; i < zagregowaneKlasy.Count; i++)
            {
                wynik.pi[i] = this.pi[i];
            }
            wynik.pi[zagregowaneKlasy.Count] = p;

            wynik.Pmi = new Rozklad[zagregowaneKlasy.Count + 1];
            for (int i = 0; i < zagregowaneKlasy.Count; i++)
            {
                wynik.Pmi[i] = Pmi[i].zagregujKlase(klasa);
            }
            wynik.Pmi[zagregowaneKlasy.Count] = Pmi[0].zagregujKlase(wiazka.ListaKlasRuchu[0]);

            wynik.zagregowaneKlasy.Add(klasa);

            return(wynik);
        }
示例#2
0
 /// <summary>
 /// Konstruktor kopiujący
 /// </summary>
 /// <param name="rozklad">Rozkład kopiowany</param>
 public rGammaYc2(rGammaYc2 kopiowany)
     : base(kopiowany)
 {
     pi  = kopiowany.pi;
     Pmi = kopiowany.Pmi;
 }