/** @return Zwraca wartość jeżeli nastąpiła poprawa stanu */ protected float getR_stan(Serwer serwer) { float result = 0; Porownanie p = serwer.getReprezentacjaStanu().compare(serwer, poprzedniStan); if (p == Porownanie.Lepszy) { result = c3; } // if(p != Porownanie.NieMoznaPorownac) { // result = c3 * serwer.getReprezentacjaStanu().compareWspolczynnik(serwer, poprzedniStan); // } return result; }
/* * Średnia ważona ilości zgłoszeń * @see pl.wroc.pwr.iis.polling.model.ocena.ModulOceniajacy#ocenaSytuacji(pl.wroc.pwr.iis.polling.model.object.Serwer) */ public double ocenaSytuacji(Serwer serwer) { float r_time = 0; for (int i = 0; i < serwer.getIloscKolejek() - 1; i++) { Kolejka kolejka = serwer.getKolejka(i); double r_time_i = 0; double R = kolejka.getMaxCzasOczekiwania(); // float M = kolejka.getSredniCzasOczekiwania(); double M = kolejka.getCzasOczekiwania(); if (M <= R) { r_time_i = c1 * M / (-3.0 * R * R) + 4.0 / 3.0 * c1; } else { r_time_i = c2 / R * M * -.5; // r_time_i = -0.1*(c2*M/R); } float W = kolejka.getWaga(); r_time += r_time_i * W; } Kolejka kolejka = serwer.getKolejka(serwer.getIloscKolejek() - 1); // float M = kolejka.getSredniCzasOczekiwania(); double M = kolejka.getCzasOczekiwania(); maxR = Math.max(M, maxR); // double d = ((-c4*M/maxR) + c4); double d = -M / (float) c4; r_time += d; float r_stan = getR_stan(serwer); // Zapisanie stanu this.poprzedniStan = serwer.getReprezentacjaStanu().getStan(serwer); return r_time + r_stan; }