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; }