Эффективный способ генерации сценария ios с распределением Пуассона в Java - PullRequest
0 голосов
/ 16 июня 2020

В моем коде я использую набор сценариев ios, чтобы проверить, выполняется ли что-то или нет. Предположим, у меня есть 4 клиента, и я хотел бы знать, какова вероятность того, что общий спрос этих клиентов превысит определенную вероятность. Спрос покупателей распределен по Пуассону с разными средними значениями. Я знаю, что в этом конкретном случае c я могу суммировать средние значения (лямбды) каждого клиента и использовать их для получения вероятности. Однако на более позднем этапе я также рассмотрю различные распределения, которые не будут обладать этим аддитивным свойством. Поэтому я хотел бы использовать подход, который подходит для всех распределений вероятностей.

Моя текущая реализация выглядит следующим образом. Сначала я определяю объект распределения для каждого покупателя с соответствующим значением лямбда. Обратите внимание, что фактические значения лямбды здесь не имеют значения.

List<PoissonDistribution[]> poissonCustomerPerSE = new ArrayList<>();
poissonCustomerPerSE.add(new PoissonDistribution[l1]);
poissonCustomerPerSE.add(new PoissonDistribution[l2]);
poissonCustomerPerSE.add(new PoissonDistribution[l3]);
poissonCustomerPerSE.add(new PoissonDistribution[l4]);

Затем я создаю сценарий, проверяю, ниже ли оно определенного значения, увеличиваю счетчик, если это так, и использую этот счетчик для вычисления вероятность. То, как я вычисляю эту вероятность, пока не имеет значения, я добавил здесь упрощенную версию только для идеи.

n = 0;
x = 0;
while (some condition not satisfied){
    n++;
    for (int i = 0; i < poissonCustomerPerSE.length; i++){
        totDemand += poissonCustomerPerSE.get(i).sample();
    }

    if (totDemand <= threshold){
        x++;
    }
}

Теперь вопрос в том, можно ли сделать это for-l oop более эффективно, потому что в настоящее время он требует много времени вычислений по сравнению с другими частями моего кода, так что если это можно быть сделано более эффективно, что было бы здорово. Я думал о создании группы реализаций спроса для каждого клиента в одном go, вместо того, чтобы вызывать метод sample () для каждой отдельной реализации, но это невозможно с PoissonDistribution.

I открыт для предложений!

...