Esempio n. 1
0
        public void logSigmy()
        {
            if (mWiazka.systemProgowy)
            {
                mWiazka.wypDeb("Progi dla poszczególnych klas\n");
                foreach (trClass kl in mWiazka.ListaKlasRuchu)
                {
                    if (kl.progiKlasy != null)
                    {
                        mWiazka.wypDeb(string.Format("Klasa {0}\n{1}", kl.ToString(), kl.progiKlasy.wypiszSigmyProgow(mWiazka.V)));
                    }
                }
            }
            sigmaPrzyjmZgl sigmyTemp = new sigmaPrzyjmZgl(mWiazka);

            if (_logSigmaStr)
            {
                mWiazka.wypDeb("Sigma Struktury systemu dla poszczególnych klas\n");
                mWiazka.wypDeb(sigmyTemp.wypiszSigmaStrukturySystemu());
            }
            if (_logSigmaStrat)
            {
                mWiazka.wypDeb("Sigma Strategii przyjmowania zgłoszeń w systemie dla poszczególnych klas\n");
                mWiazka.wypDeb(sigmyTemp.wypiszSigmaPolPrzyjmowaniaZlg());
            }
        }
 public delta(Wiazka mWiazka)
 {
     aWiazka    = mWiazka;
     sStruktury = new sigmaPrzyjmZgl(mWiazka);
     oszacowana = false;
     _Y         = new liczbaY(mWiazka);
 }
        public void ObliczWartosciBF(Rozklad R, sigmaPrzyjmZgl sigmyStruktury)
        {
            maksBladY = 0;
            double staryY;

            for (int i = 0; i < aWiazka.m; i++)
            {
                trClass tempKlasa = aWiazka.ListaKlasRuchu[i];
                int     tStart    = (tempKlasa.progiKlasy == null) ? tempKlasa.t : tempKlasa.progiKlasy[0].t;

                //for (int n = aWiazka.V; n >= tStart; n--)
                for (int n = tStart; n <= aWiazka.V; n++)
                {
                    staryY  = y[i, n];
                    y[i, n] = 0;
                    if (tempKlasa.progiKlasy == null)
                    {
                        int    t = tempKlasa.t;
                        double a = aWiazka.ListaKlasRuchu[i].a;
                        switch (tempKlasa.typ)
                        {
                        case trClass.typKlasy.ERLANG:
                            y[i, n] = R[n - t] / R[n] * a * aWiazka.ListaKlasRuchu[i].sigmaZgl(y[i, n - t]) * sigmyStruktury[i, n - t];
                            break;

                        case trClass.typKlasy.ENGSET:
                            y[i, n] = R[n - t] / R[n] * a * aWiazka.ListaKlasRuchu[i].sigmaZgl(y[i, n - t]) * sigmyStruktury[i, n - t];
                            break;

                        case trClass.typKlasy.PASCAL:
                            y[i, n] = R[n - t] / R[n] * a * aWiazka.ListaKlasRuchu[i].sigmaZgl(y[i, n - t]) * sigmyStruktury[i, n - t];
                            break;
                        }
                    }
                    else
                    {
                        for (int prNr = 0; prNr < tempKlasa.progiKlasy.liczbaPrzedziałow; prNr++)
                        {
                            int t       = tempKlasa.progiKlasy[prNr].t;
                            int popStan = n - t;
                            if (tempKlasa.progiKlasy.nrPrzedzialu(popStan) == prNr)
                            {
                                double a = tempKlasa.atProgi(popStan) / t;
                                y[i, n] += R[popStan] / R[n] * a * aWiazka.ListaKlasRuchu[i].sigmaZgl(y[i, popStan]) * sigmyStruktury[i, popStan];
                            }
                        }
                    }

                    double bladY = Math.Abs((y[i, n] - staryY) / y[i, n]);
                    if (bladY > maksBladY)
                    {
                        maksBladY = bladY;
                    }
                }
            }
        }