示例#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 rGammaYc1(wiazka, klasa));
            }

            rGammaYc1 wynik = new rGammaYc1(this);
            Rozklad   q     = new Rozklad(wiazka, klasa, true);

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

            //Operacja splotu

            double[][] prDopKomb = rGammaYc1.wyznGamma(this, q, 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] * q[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.qi = new Rozklad[zagregowaneKlasy.Count + 1];
            for (int i = 0; i < zagregowaneKlasy.Count; i++)
            {
                wynik.qi[i] = this.qi[i];
            }
            wynik.qi[zagregowaneKlasy.Count] = q;

            wynik.Qmi = new rGammaYc1[zagregowaneKlasy.Count + 1];
            for (int i = 0; i < zagregowaneKlasy.Count; i++)
            {
                wynik.Qmi[i] = Qmi[i].zagregujKlase(klasa) as rGammaYc1;
            }
            wynik.Qmi[zagregowaneKlasy.Count] = this;

            wynik.zagregowaneKlasy.Add(klasa);

            return(wynik);
        }
示例#2
0
        public rGammaYc1(Wiazka rWiazka, trClass klasa) : base(rWiazka, klasa, true)
        {
            zagregowaneKlasy = new List <trClass>();
            zagregowaneKlasy.Add(klasa);
            this.wiazka = rWiazka;

            qi     = new Rozklad[1];
            qi[0]  = new Rozklad(rWiazka, zagregowaneKlasy[0], true);
            Qmi    = new rGammaYc1[1];
            Qmi[0] = new rGammaYc1(rWiazka); //Ten rozkład jest pusty.
        }
示例#3
0
 /// <summary>
 /// Konstruktor kopiujący
 /// </summary>
 /// <param name="rozklad">Rozkład kopiowany</param>
 public rGammaYc1(rGammaYc1 kopiowany) : base(kopiowany)
 {
     qi  = kopiowany.qi;
     Qmi = kopiowany.Qmi;
 }