public SimClassErlang(trClass badana, SimGroup sWiazka, agenda listaZd, aSimulation algSym)
            : base(badana, sWiazka, listaZd, algSym)
        {
            processSym nowy = new processErlang(listaZd, this.czNowegoZgl, this);

            listaZd.DodajProces(nowy);
        }
        public SimClassPascal(trClassPascal badana, SimGroup sWiazka, agenda listaZd, aSimulation algSym)
            : base(badana, sWiazka, listaZd, algSym)
        {
            _S     = badana.S;
            _gamma = badana.PodajIntZgl(0) / _S;

            if (badana.progiKlasy == null)
            {
                maxLzr = sWiazka.V / badana.t + _S;
            }
            else
            {
                maxLzr = sWiazka.V / badana.tMin + _S;
            }
            zrodla = new processCall[maxLzr];
            for (int i = 0; i < maxLzr; i++)
            {
                zrodla[i] = null;
            }

            for (int zgl = 0; zgl < _S; zgl++)
            {
                zrodla[zgl] = new processPascal(listaZd, this.czNowegoZgl, this, zgl);
                listaZd.DodajProces(zrodla[zgl]);
            }
        }
 protected bool symulowac(SimGroup wiazka)
 {
     if ((wiazka.WarWyjscia <= 0) || (wiazka.WarWyjscia2 <= 0))
     {
         return(false);
     }
     return(true);
 }
 public SimSubGroup(int Vi, int Qi, SimGroup sWiazka)
 {
     _n = 0;
     _v = Vi;
     _q = Qi;
     //RozklZaj = new decimal[_v + 1];
     _glWiazka = sWiazka;
 }
 public SimClassEngset(trClassEngset badana, SimGroup sWiazka, agenda listaZd, aSimulation algSym)
     : base(badana, sWiazka, listaZd, algSym)
 {
     _S     = badana.S;
     _gamma = badana.PodajIntZgl(0) / _S;
     for (int zgl = 0; zgl < _S; zgl++)
     {
         processSym nowy = new processEngset(listaZd, this.czNowegoZgl, this);
         listaZd.DodajProces(nowy);
     }
 }
 /// <summary>
 /// Inicjacja nowego badania w eksperymencie symulacyjnym.
 /// Wykonujemy tylko przed pierwszą seria.
 /// </summary>
 /// <param name="aOf">Wartość ruchu oferowanego pojedynczej PJP</param>
 /// <param name="nrBadania">Numer badania</param>
 protected override void InicjacjaNowegoBadaniaSymulacji(double aOf, int nrBadania)
 {
     lZdarzen[nrBadania] = new agendaTyp5(this);
     sWiazka[nrBadania]  = new SimGroup(aWiazka);
     foreach (trClass kOfer in aWiazka.ListaKlasRuchu)
     {
         kOfer.ObliczParametry(aOf, aWiazka.sumaPropAT, aWiazka.V);
         kOfer.InicjacjaKolejnegoBadaniaSymulacji(sWiazka[nrBadania], lZdarzen[nrBadania], this, nrBadania);
         kOfer.sigmyStanow = new SigmaStruktury(aWiazka.V + 1);
         kOfer.sigmyStanow.wyczysc();
     }
     lZdarzen[nrBadania].czasOczekiwania = aWiazka.CzStartu;
 }
 public SimClass(trClass badana, SimGroup sWiazka, agenda listaZd, aSimulation algSymulacji)
 {
     klasaRuchu    = badana;
     Symulacja     = algSymulacji;
     this._sWiazka = sWiazka;
     lZdarzen      = listaZd;
     generator     = new Random(badana.GetHashCode());
     _lambda       = badana.PodajIntZgl(0);
     if (badana.progiKlasy == null)
     {
         _mu = badana.mu;
     }
     _uprzyw         = badana.uprzywilejowana;
     lStraconychZgl  = 0;
     lObsluzonychZgl = 0;
 }
        protected override void SymulujWiazke(int nrBadania, int nrSerii)
        {
            agendaType1 agendaSym = lZdarzen[nrBadania] as agendaType1;
            SimGroup    wiazka    = sWiazka[nrBadania];

            agendaSym.zajeta.WaitOne();
            NowaSeria(nrBadania, false);
            while (symulowac(wiazka))
            {
                processSym pierwszy = agendaSym.PobierzPierwszy();
                if (pierwszy.czas < 0)
                {
                    if (pierwszy.czas > -0.00001)
                    {
                        pierwszy.czas = 0;
                    }
                    else
                    {
                        throw new Exception(string.Format("Ujemny czas {0}", pierwszy.czas));
                    }
                }

                double staryCzas = agendaSym.czas;
                agendaSym.czas = pierwszy.czas;
                double deltaT = agendaSym.czas - staryCzas;

                if (agendaSym.zapStatystyk)
                {
                    wiazka.Podlicz(deltaT);
                }
                else
                {
                    agendaSym.czasOczekiwania -= deltaT;
                }
                pierwszy.Obsluz();
            }

            KoniecSerii(nrBadania, nrSerii);
            lZdarzen[nrBadania].zajeta.ReleaseMutex();
            ZapiszWynikiSerii(nrBadania, nrSerii);
            aWiazka.DodPost();
        }
 public ChooseArbiterOccupancyProportional(SimGroup wiazkaArbitra)
     : base(wiazkaArbitra)
 {
     losGen = new Random();
 }
 public ChooseArbitrRandom(SimGroup wiazkaArbitra)
     : base(wiazkaArbitra)
 {
     losGen = new Random();
 }
 public ChooseArbiterRR(SimGroup wiazkaArbitra)
     : base(wiazkaArbitra)
 {
 }
 public ChooseArbiterSequence(SimGroup wiazkaArbitra)
     : base(wiazkaArbitra)
 {
 }
 public ChooseArbiter(SimGroup wiazkaArbitra)
 {
     _arbWiazka = wiazkaArbitra;
 }