Алгоритм распределения Пуассона для заказов товаров? Здравствуйте.
В тестовом задании столкнулся с требованием реализовать поступление заказов с помощью распределения Пуассона.
К сожалению, раньше с этим не сталкивался, никак не могу понять, как это распределение применить?
Нашел библиотеку MathPHP
Там есть такая функция:// Poisson distribution
$λ = 2; // average number of successful events per interval
$k = 3; // events in the interval
$poisson = new Discrete\Poisson($λ);
$pmf = $poisson->pmf($k);
$cdf = $poisson->cdf($k);
Сама задача:Заказы поступают случайным образом с интервалом 1-30 мин и имеют распределение
Пуассона. Заказ имеет следующие свойства:
1. номер заказа;
2. время поступления (начинается с 0);
3. время готовки (10-30 мин);
....
Сгенерировать N заказов согласно свойствам. (N=10...100);

21 Авг 2019 в 06:05
285 +1
0
Ответы
1

Для реализации поступления заказов с помощью распределения Пуассона с учетом указанных свойств, вы можете использовать следующий алгоритм:

Задайте параметр λ (среднее количество заказов за определенный интервал времени, например, за диапазон от 1 до 30 минут).Создайте экземпляр класса Poisson из библиотеки MathPHP с указанным параметром λ.Для каждого заказа от 1 до N:
a. Сгенерируйте случайное время поступления заказа в интервале от 0 до 30 минут.
b. Сгенерируйте случайное время готовки заказа в интервале от 10 до 30 минут.
c. Сгенерируйте номер заказа.
d. Рассчитайте время выполнения заказа как сумму времени поступления и времени готовки.
e. Сохраните номер заказа, время поступления, время готовки и время выполнения.

Пример кода для генерации N заказов с использованием распределения Пуассона:

use MathPHP\Probability\Distribution\Discrete\Poisson;
lambda=2;//среднееколичествозаказовзаинтервалвремениlambda = 2; // среднее количество заказов за интервал времени
lambda=2;//среднееколичествозаказовзаинтервалвремени
poisson = new Poisson(lambda);lambda);
lambda);
N = 100; // количество заказов
for (i=1;i = 1; i=1;i <= N;N; N;i++) {
timearrival=mtrand(0,30);//случайноевремяпоступлениязаказаtime_arrival = mt_rand(0, 30); // случайное время поступления заказа
timea rrival=mtr and(0,30);//случайноевремяпоступлениязаказа
cook_time = mt_rand(10, 30); // случайное время готовки заказа
ordernumber=order_number = ordern umber=i; // номер заказа
completiontime=completion_time = completiont ime=time_arrival + cooktime;//времявыполнениязаказа//сохранитеинформациюозаказе,например,вмассивилиБДecho"Ordercook_time; // время выполнения заказа
// сохраните информацию о заказе, например, в массив или БД
echo "Order
cookt ime;//времявыполнениязаказа//сохранитеинформациюозаказе,например,вмассивилиБДecho"Order
order_number - Time of Arrival: timearrivalmin,CookingTime:time_arrival min, Cooking Time: timea rrivalmin,CookingTime:cook_time min, Completion Time: $completion_time min\n";
}

Этот код поможет вам создать N заказов с учетом указанных свойств и распределения Пуассона. Не забудьте подключить библиотеку MathPHP и настроить окружение для ее использования.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир