Вариации Пуассона, связь λ и скорости прибытия, моделирование сети Java

Я разрабатываю сетевой симулятор, в котором события для прибытия пакетов и попыток передачи следуют распределению Пуассона. У меня есть адаптация алгоритма Кнута:

public class Poisson {

    private double λ;
    private Random rand;

    /** Creates a variable with a given mean. */
    public Poisson(double λ) {
        this.λ = λ;
        rand = new Random();
    }

    public int next() {
        double L = Math.exp(-λ);
        double p = 1.0;
        int k = 0;

        do {
            k++;
            p *= rand.nextDouble();
        } while (p > L);

        return k - 1;

    }
}

В моих спецификациях указано, что узлы случайным образом перераспределяют этажи с помощью процесса Пуассона. Среднее время между поступлениями распределено экспоненциально со средним значением Ts = 2,5 мс. Правильно ли я использую λ = 2,5?

Когда я хочу создать новое событие прибытия, я делаю что-то вроде:

Event evt = new Event(EventType.ARRIVAL_EVENT,
    MasterClock.getTime + poisson.next());
eventList.add(evt);

Предполагается, что симулятор запускается несколько раз, каждый раз с повышенной нагрузкой для измерения производительности. Сначала я думал, что скорость поступления равна λ, но чем больше λ, тем меньше пакетов в секунду я получаю. Какова связь между скоростью прибытия и λ? Прошу прощения за очень длинный пост, но я действительно разочарован поиском во множестве университетских книг и по всему Интернету без действительного источника для моделирования сети...

Спасибо заранее за вашу помощь.


person Giorgos Kritsotakis    schedule 04.10.2011    source источник
comment
И люди говорят, что в Java нет лямбда-выражений.   -  person Dave Newton    schedule 05.10.2011


Ответы (2)


Это может показаться странным, но для вашего процесса Пуассона вам нужно не распределение Пуассона, а экспоненциальное распределение. Посмотрите на википедию.

Время прибытия, которое вы моделируете в своем коде, соответствует экспоненциальному распределению параметра lambda = 1/2,5 (лямбда обратна среднему). Вы можете легко получить случайную экспоненциальную переменную с помощью -Math.log(1.0 - rand.nextDouble())/лямбда.

Существует два представления процесса Пуассона: Представление, описанное выше, сохраняет количество событий фиксированным (1), а временной интервал варьируется. В другом представлении временной интервал остается фиксированным, но количество событий в этом интервале является случайной величиной (и следует распределению Пуассона).

person toto2    schedule 05.10.2011
comment
Большое спасибо за ответ, вы были очень полезны. Наконец-то это имеет смысл :) - person Giorgos Kritsotakis; 06.10.2011

Тс = 2,5 мс. Правильно ли я использую λ = 2,5?

Нет. Ts – это время. λ – коэффициент прибытия в единицах в секунду. См. Уильям Столлингс, Анализ очереди.

person user207421    schedule 05.10.2011
comment
Большое спасибо за ответ. PDF-файл тоже отличный, он ответил на другой вопрос, который у меня был о предложенной загрузке. - person Giorgos Kritsotakis; 06.10.2011