Комментарии 213
У вас есть некий набор параметров, которые должны вычисляться относительно друг друга с разными коэффициентами, + сама формула неизвестно как должна выглядеть.
Но есть точное условие выявления правильной формулы — она должна на длительном прогоне, вне зависимости от стартовых значений, выдавать положительный баланс, и чем выше прибыль тем лучше.
Таким образом, если написать программу, которая будет переставлять стартовые параметры и менять формулы, прогонять её на разных данных и считать итоговый коэффициент успешности формулы, то за несколько тысяч(сотен тысяч, в зависимости от теоретического количества комбинаций) итераций можно найти самый удачный вариант формулы.
ввиду сделанных оговорок, Мужик может и не продать корову, если их у него мало, а шанс встретить клиента побогаче достаточно велик
противоречит
любому, подошедшему к Мужику покупателю из k -го класса, он продает любую из имеющихся у него коров с наценкой xk-тое рублей
Ну и заодно:
появление покупателя каждого класса описывается пуассоновским процессом с неким, характерным для этого класса нагрузочным параметром lk-тое
Можете для тех, кто не в теме, рассказать о характеристиках этого процесса, а именно:
- по какой формуле рассчитывается вероятность появления покупателя того или иного класса в каждой момент времени t?
- может ли в момент t появиться одновременно два покупателя разных классов (и как тогда осуществляется продажа)?
2)Вы правы, забыл уточнить: независимые пуассоновские процессы с непрерывным временем(определение можно посмотреть почти в любой книге по теории вероятностей или математической энциклопедии)
3)Ввиду 2) появление когда либо сразу двух покупателей — событие нулевой вероятности
События все независимы, совместны но некоторые зависимы (и наверное даже — вероятностная зависимость есть и цепочках из n событий) а другие — нет.
Надо понять, какое событие случается в модели чаще всего и тогда можно определится как действовать/решать — так как это событие задаёт поведение всей системы.
Ввиду 2) появление когда либо сразу двух покупателей — событие нулевой вероятности
Это почему?
Вернее как… вероятность того, что между приходами покупателей пройдёт нулевое время — тоже нулевая.
Короче, похоже, вы правильно указали на рассогласования, просто немного не очевидно выразились. Однако я неоднократно и достаточно явно говорил, что имею в виду под моментом, а retain не говорил, что считает момент интервалом. То, что интервал — это сумма моментов в интегральном смысле верно в любом случае.
Интервал — это сумма моментов времени.А не разница ли?
Любое событие происходит мгновенно в момент времени, а пуассоновский процесс определяет вероятность возникновения события на интервале времени. В интервале (любом вещественном диапазоне) бесконечное количество моментов (вещественных точек).
в пуассоновском потоке вероятность появления следующего события через время t
Не «через», а «в течение». Разве нет? Вероятность появления события строго «через» время t по определению нулевая. Потому что dt->0.
http://sernam.ru/book_tp.php?id=114 — начиная со слов «Важной характеристикой потока является закон распределения длины промежутка между соседними событиями...»
Ваша ошибка в том, что вы считаете вероятность попадания в заданную математическую точку нулевой (а значит нулевой в любую точку, а значит вероятность попадания в отрезок, который является суммой математических точек — тоже нулевой… Бред.)
ошибочны вот в этой части:
а значит нулевой в любую точку, а значит вероятность попадания в отрезок, который является суммой математических точек — тоже нулевой… Бред.
Нулевая вероятность попадания в конкретную точку. А в любую на заданном отрезке уже не нулевая.
Я, конечно, могу ошибаться, но пока что явные логические нестыковки именно в ваших рассуждениях. Готов спорить.
Если вас смущает разница между «нулевая» и «стремящаяся к нулю при dt->0». То готов согласиться.
Подытожу. Математическая точка — это не интервал. Вероятность попадания в конкретную математическую точку строго нулевая, а вот вероятность попадания в отрезок стремящийся по длине к нулю уже не нулевая, а стремящаяся к нулю.
UPD. В рамках этой задачи. Чем отличается событие от процесса в физических моделях я знаю.
Если мы оперируем пуассоновскими определениями, то и события надо рассматривать в математическом смысле.
К тому же по условию задачи длительность обработки события не обсуждалась, посему имеет смысл считать его нулевым, как математическую абстракцию.
И, действительно, определение пуассоновского процесса в русской википедии содержит «Свойство ординарности: вероятностью наступления за элементарный промежуток времени более одного события можно пренебречь по сравнению с вероятностью наступления за этот промежуток не более одного события», с чем я спорить не буду.
Определение свойства из другого источника: Поток событий называется ординарным, если вероятность появления двух или более событий в течении элементарного интервала времени Δt есть величина бесконечно малая по сравнению с вероятностью появления одного события на этом интервале.
Про нулевую вероятность не нашел ничего.
Вот только нигде я не нашел определения того, что пуассоновский поток оперирует именно элементарными событиями. Наоборот, везде рассматривают ТОЛЬКО события попадания в некоторый интервал (тут, например, довольно подробно — https://en.wikipedia.org/wiki/Poisson_point_process).
По существу, как я понял мы сошлись. Тем более в классическом паттерне технической реализации подобных систем с «одновременным» приходом покупателей проблем нет. Если таймштампы у них оказались равны, то обрабатываем их по мере поступления запросов. Надо сильно «постараться», чтобы это стало технической проблемой.
Более того, в реальных задачах на operations research есть процесс обработки заявки имеющий конкретную длину и стоимость, а сама заявка — тайм-аут, и стратегия разгребания очереди может очень сильно повлиять на финансовое состояние продавца.
Но да, давайте прекратим.
P.S Вероятность попадания в конкретную точку равна 0
Важно, что она равна не 0, а бесконечно мала. Первый раз мы ведь в эту точку попали, значит вероятность была ненулевая)
Вероятность — это число. Действительное число не может быть бесконечно малым. Бесконечно малыми бывают только последовательности или функции.
Это уже есть в задаче — мужик продаёт коров с наценкой, а этот термин подразумевает ненулевую прибавку к ненулевой денежной сумме себестоимиости (т. е. это все равно что сказать, что у всех классов всегда есть минимальная или большая платежеспособность, равная сумме себестоимости и минимальной наценки).
Поскольку процесс пуассоновский, предсказать появление следующего клиента на основе данных о предыдущих клиентах не получается и делать что-либо «в ожидании богатого клиента» нельзя.
Можно. (делать, а не предсказывать)
Пример: есть 1 корова, пополнение появится через большое время t.
По оценке, самый выгодный тип покупателей придёт раньше чем t c большой вероятностью (Например, 0.9). В таком случае нет смысла прям сейчас продавать корову дёшево.
за их сбыт Мужик сам даст денег
Т. е. на рынке появляются ещё и клоны Мужика — клиенты, которым он дал корову и пообещал дать денег за её сбыт другому клиенту?
Тогда нужно уравнять вероятности получения сопоставимых дохода от продажи коровы и потери от потери клиентов и расходов на содержание у мужика. Другое дело — избавится от потерь совсем и получить всю возможную прибыль — не получится в принципе.
Достаточно словесных рассуждений.
Принимать эмпирический "+ некоторый запас сверх рассчетов." нет смысла так как для этого и предназначен вероятностный расчёт количества коров, и если расчёт вероятности не действует — то его надо править, убирая логический костыль.
Реальные барышники на реальных рынках скота (например — в дореволюционной России, на скотных рынках Аргентины — страна, которая в начале XX века считалась одной из самых процветающих в мире) статистику продаж мусоленным карандашом по обёрточной бумаге наверное вели, а вот обработать её, чтобы избавиться запаса сверх расчётов, не могли — и для этого они не должны были нанимать академика Крылова, достаточно было сообразить заплатить за эту работу бедному учителю математики или студенту тех времён.
Глава 7? (задача напомнила задачу про ковры скомбинированную с потоками в сетях)
а) нужно доказать, что максимум достигается на чистой стратегии (почти очевидно)
б) вычислительная сложность растет по экспоненте от величины обратной к величине шага дискретизации.
Если мужик не продает коров совсем, то прибыль -0, но и убытков 0.
Таким образом, может возникнуть ситуация (например при низкой интенсивности потока покупателей), что стратегия минимизации убытков — не торговать.
Пусть мужик держит на продажу одну корову. Тогда можно построить что-то типа протокола разборчивой невесты.
Дальше пока не придумывается.
при почти бесконечном начальном капитале
Зачем Мужику при почти бесконечном капитале продавать коров?)
Если все условия можно задать в виде линейных неравенств, можно попробовать применить симплекс-метод.
Первое, что нам нужно для себя решить — это оптимальный размер буфера коров, который мы будем держать в резерве (S*). Очевидно, что оно будет зависеть от всех параметров этой задачи. Давайте отложим нахождение этой величины.
Итак, у нас для каждого случая (прихода покупателя; пронумеруем их по i) есть текущий запас коров S_i. Нам нужно:
1. решить, продавать корову этому покупателю или нет;
2. решить, сколько заказать коров из деревни (может быть 0, заказ-то бесплатный и, как я понял из задания, асинхронный? Поправьте меня, автор, если ошибаюсь).
По поводу второго пункта следует заметить, что акт заказа коров, строго говоря, не должен быть привязан к событиям прихода покупателей, то есть не обязательно должен происходить по факту прихода кого-то из них или по факту продажи. Похоже это тоже будет пуассоновский поток событий, параметр которого будет вычисляться из вероятностей потока покупателей. Если вероятности прихода покупателей рассчитаны (даны) верно, то процесс стационарный и, возможно, не придется даже динамически управлять параметром потока заказов. Вернее эффективнее будет не управлять.
Итак. Декомпозиция выявила три вопроса:
1. Каков оптимальный размер буфера (S*)?
2. Продавать ли корову i-му покупателю?
3. С каким интервалом дозаказывать коров?
Забавно, что в случае идеального пуассоновского процесса нам, скорее всего, можно вообще в самом начале определить какие классы обслуживать, а какие нет. И в начале же определить четко интервал времени дозаказа коровы. Очевидно, что при бесплатном асинхронном заказе нет смысла заказывать больше одной за раз.
Ок. С формулами я сейчас уже не осилю, да и тестовый стенд писать уже лень, но предположу, что мы просто откинем некоторые классы покупателей по рентабельности резервирования для них коровы с учетом среднего времени их появления. Остальным продаём корову из буфера, размер которого будет зависеть от вероятного количества обслуживаемых клиентов за время T.
Возможно следует еще оценить вероятностные характеристики убытка при потере клиента и как-то сравнить их с вероятностными характеристиками убытка от over-резервирования. Но это заметно усложнит формулу расчета глубины резерва.
Резюме. Задача похоже стационарна и не требует онлайн-управления процессом.
Мне вот тоже пришла в голову идея, что можно просто посчитать, сколько покупателей какого типа к нам (в среднем, но в долгосрочной перспективе только среднее и интересно) приходит за некий (произвольно взятый) интервал времени Q
. Столько коров нам и нужно (X
). Дальше заказываем по одной корове в Q/X
(а начальный резерв берем как T/(Q/X)
).
если все шло как по часам, а затем случайно целый период T не было продаж, то возможно от лишних коров стоит избавится при первой возможности.
А если 10 раз подряд выпало красное, то нужно ставить на черное?
Согласен с предыдущими ораторами. В силу случайности и полной непредсказуемости все, что происходило до данного момента времени абсолютно неважно. У нас есть только сейчас и будущее. Весь вопрос только в размере буфера. Если буфер забольшой, что приходится продавать корову — значит неправильно посчитан буфер и корову продавать не нужно было.
из-за отсутствия продаж на складе скопилось количество коров выше оптимального.
оптимальное количество не зависит от прошлых продаж/непродаж. Если текущее количество выше/ниже, то его надо вернуть до оптимального.
При любом (!) буфере будут ситуации, когда коров слишком много, и ситуации, когда продавать нечего.
Чувствуете в чем подвох? Если размер буфера больше оптимального, издержки на его содержание растут быстрее, чем прибыль от не упущенных (за счет этого увеличения буфера) клиентов. Если размер буфера меньше оптимального, издержки по статье недополученной прибыли из-за упущенных (из-за этого уменьшения буфера) хороших клиентов будут раст быстрее чем выигрыш (экономия) на прокорме буфера.
Предполагается наличие седловой точки оптимума размера буфера.
Оптимальный размер буфера мы можем в среднем держать за счет установки скорости заказа коров, равной средней скорости сбыта их рентабельным клиентам. Если эта средняя скорость сбыта известна наверняка и точно, то мы всегда будем блуждать около этой точки туда-сюда. Экстренно динамически продавая лишних коров сверх оптимума нерентабельным клиентам вы делаете подстройку только с одной стороны.
Во-первых, почему вы тогда не предлагаете явно дозаказывать динамически коров в ускоренном режиме при перерасходе (то есть когда буфер меньшеоптимального)?
Во-вторых, зачем вообще эта дополнительная инертная обратная связь нужна, когда по условию задачи четко известна средняя скорость сбыта коров? Дёргая динамически буфер туда-сюда, то есть заказывая коров из деревни с непостоянной скоростью и сбывая их иногда нерентабельным клиентам вы лишь уменьшаете добротность системы внося еще один маятник со всеми вытекающими. У нас нет «тренья» в системе и, может быть ваш такой микроменеджмент и не приведёт в среднем ни к профиту ни к издержкам, но зачем усложнять алгоритм?
Полагаю это обосновано было бы только для безопасности на случай внезапного и незадокументированного изменения параметров потока покупателей. А об этом в задаче речи не шло. Потому я и сказал в треде. что на данном этапе хорошо бы уже спуститься в реальность, а не надувать сферического коня в безвоздушном пространстве.
наоборот: если в какой-то момент мы накопили избыточный запас коров, для нас любой клиент внезапно становится рентабельным.
Тогда где остановиться? Характер закона распределения не позволяет нам рассчитывать на 100% от пропуска клиента при любом размере буфера. Да, в какой-то момент вероятность пропуска клиента становится столь малой, что можно пренебречь, но есть же и фиксированная цена заказа коровы a, а условие допускает отрицательную маржинальность. Это делает «любого клиента» ой как нерентабельным.
А если 10 раз подряд выпало красное, то нужно ставить на черное?
Не совсем так.
Совсем не так!
Нет. При любом (!) буфере будут ситуации, когда коров слишком много, и ситуации, когда продавать нечего.
Нет. Если буфер равен 0 или 1 — коров не будет слишком много. Продавать коров нет смысла. Если вы дошли до ситуации, когда продаете корову по дешевке — значит не нужно было ее покупать.
Вы мыслите на классическом обывательском уровне — «редкое событие произошло, значит в ближайшее время вероятность его возникновения понижена».
Понимаю, что для вас это контринтуитивно, но, увы, это не так.
Я говорил об этом:
в таких условиях можно было бы устроить её доставку ближе к середине среднего интервала между двумя клиентами
Я приведу пример. В рулетке вероятность выпадения числа 13 — 1/37. Если выпало 13 — необходимо ли пропустить пару следующих бросков, чтобы приблизиться к следующим 13?
Вот так и тут. От того, что клиент пришел абсолютно нету никакого резона отступать на какой-то промежуток времени — это не дает выгоды, а только затягивает игру.
Ну я так понимаю, вероятность 1/37 говорит о том, что после 37 бросков вероятность выпадения 13 хотя бы 1 раз близка к 1. Но ок, тут может и не так.
А вот распределение Пуассона, насколько я понял, зависит от времени, то есть за определенное время происходит определенное число событий. Получается, чем больше мы ждем, тем число событий ближе к этому определенному. А как только событие произошло, вероятность его повторения в следующий момент времени маленькая, иначе это число событий было бы больше.
Как с автобусом — чем дольше ждешь, тем больше вероятность, что придет нужный номер, и тем меньше причин ехать на другом. И после того, как он пришел, маловероятно, что через полминуты появится еще один такой же.
Ну я так понимаю, вероятность 1/37 говорит о том, что после 37 бросков вероятность выпадения 13 хотя бы 1 раз близка к 1
Вероятность решки на монетке 1/2, следует ли из этого, что при двух бросках вероятность выбросить решку близка к 1?
А как только событие произошло, вероятность его повторения в следующий момент времени маленькая, иначе это число событий было бы больше.
Нет, нет и еще раз нет. Предыдущее событие НИКАК не влияет на следующее. Серьезно. Возьмите монетку. Киньте ее. А потом считайте, сколько раз выпало то же, что и в предыдущий, а сколько раз иной вариант. И вы увидите, что в 50% случаев выпадает тот же вариант, а в 50% случаев вариант меняется. Потому что неважно, что выпало перед этим. Если вы кинули 5 раз подряд орла — шестой раз ровно так же у орла 50% вероятности, как и у решки. Оно не уменьшается от того, что Пуассон вывел свое распределение.
Смотрите. Допустим мы монетку кидаем дважды. Значит у нас есть такие варианты:
(О-О), (О-Р), (Р-О), (Р-Р). Вероятность того, что выпадет два орла всего 25%, но если перед этим уже выпал орел вероятность того, что снова выпадет орел — 50%, понимаете?
Да, с монеткой вы правы. Ну я поэтому и сделал оговорку, что возможно это не так. Просто, как мне кажется, здесь 2 принципиально разные ситуации. В случае с рулеткой и монеткой вероятность зависит от количества вариантов, в случае пуассоновских процессов вероятность рассчитывается по отрезкам времени. Если мы знаем, что за час должно прийти 2 покупателя такого типа, то если за полчаса никто не пришел, то в следующие полчаса вероятность появления выше. А если и за час не пришел, то в следующий час можно ожидать 4. Иначе характеристика была бы не "2 покупателя в час", а "1 покупатель в час". А если стабильно никто не приходит, уже надо говорить о том, что характеристика изменилась.
С автобусами аналогично. Автобусы ходят по графику, но в пределах одной остановки появление следующего номера рассматривается как случайная величина. Вернее, обладающая свойствами случайных. Потому что есть светофоры, пробки, поломки, а также другие автобусы, у которых свое расписание и набор остановок. А вот расписание как раз и означает, что за час на эту остановку должно прийти 3 автобуса с этим номером.
Начнем с автобусов. На них не работает распределение Пуассона. Потому что оно работает только на независимых событиях. А приход автобусов очень даже зависим. Да, есть случайные факторы, которые смещают время прихода в одну или другую сторону, но это не связано с распределением Пуассона.
Дальше.
Если мы знаем, что за час должно прийти 2 покупателя такого типа, то если за полчаса никто не пришел, то в следующие полчаса вероятность появления выше
Нет, не выше. Вы думаете, что за углом стоит Пуассон и считает, сколько именно покупателей к нам заходит и если их меньше чем нужно, то срочно посылает своих агентов? А если пришли 8 вместо 2? То теперь шестеро умрут не выйдя из магазина?
Распределение Пуассона говорит приблизительно следующее. В среднем у нас десять покупателей в час. Следовательно:
11% вероятности, что у нас будет 10 покупателей
10% вероятности, что у нас будет 9 покупателей
9% вероятности, что у нас в ближайший час будет 11 покупателей
и даже 1% вероятности, что у нас будет 20 покупателей за ближайший час.
Все. Больше распределение Пуассона ни о чем не говорит. Только о том с какой вероятностью какой час выпадет. Так вот. Есть 5% вероятности, что придет 5 покупателей и 5% вероятности, что придет 15 покупателей. Если в первые полчаса пришло только двое — может мы попали в неудачные 5%. А если в первые 15 минут пришло 10, то может попали в тот удачный 1% и потом будет еще десять.
Самое главное, что предыдущие события НИКАК не влияют на следующие. То есть пусть у нас предыдущих два часа был полный завал или пустой магазин следующий час с сего момента (и с любого момента) имеет ровно тот же график распределения Пуассона.
Конечно, только в теории и потому с магазином контринтуитивно. Ведь вы ведь знаете — в обед в магазине обуви никого нет, а под вечер просто завал, вот же доказательство. Но нет, это влияние не распределения, а просто рабочего графика среднего класса
А если и за час не пришел, то в следующий час можно ожидать 4.
Ок, почитал комменты ниже, понял, что не прав)
На самом деле, предел 1-(1-1/n)n стремится не к 1, а к 1-1/e, что составляет примерно 0,63
Именно такова будет вероятность получить хотя бы одно число 13 после 37 вращений рулетки.
С выбраковкой классов тоже не стоит спешить: если все шло как по часам, а затем случайно целый период T не было продаж, то возможно от лишних коров стоит избавится при первой возможности.
Во-первых, надо понимать, насколько адекватно у нас заданы условия. Это, я считаю, важно отметить в описнии задачи. Если характеристики случайных величин верны (например случайные величины специально генерируются с указанными параметрами), то онлайн регулирование не требуется, или требуется, но исключительно калибровочное. Мы можем немножко менять скорость выписывания коров или изредка просто сливать лишних как исключение. Для реального мира эти величины скорее всего взяты из статистики и нам постоянно грозят черные лебеди, неучтенные ошибки и изменения на рынке. В этом случае надо более агрессивно держать оптимальный запас.
В любом случае эти параметры тонкой настройки не гарантируют ничего. Это просто рандомная ставка на риски, те или иные — не важно.
Если же ваши ожидания насчет потока клиентов не оправдываются, действительно не стоит заказывать лишних коров
Мои ожидания по поводу потока клиентов основаны на данных из условий задачи. Это вектор l. Если эти ожидания не оправдываются на долгосрочной перспективе, то это значит лишь, что исходные данные (тот самый вектор) не описывает распределение событий. В этом случае мы должны корректировать вектор (например, уточнять его статистикой), или агрессивно подстраивать поток заказов. Но это уже не будет исходной задачей.
Да и на счет "лишних коров", почему вы однобоко подходите к возможным рискам? А если «неоправдавшиеся ожидания» привели к обратной ситуации и коров не хватило, отчего мы потеряли хороших клиентов и недополучили прибыль? Если скорость пополнения буффера и его размер выбраны верно, а «ожидания» соответствуют характеристикам случайной величины, то риски в ту и другую сторону одинаковы.
Ну а вы в данном случае поддались классическому когнитивному искажению отдавая в плане рисков незаслуженный приоритет тому, что имеете по отношению к тому, что могли бы иметь.
Подчеркну для ясности.
как вы правильно заметили, нужно учитывать, какие коровы уже заказаны и что они придут в будущем.
Я не говорил, что это нужно как-то учитывать онлайн-управлением. Это должно быть учтено автоматически в скорости заказа коров из деревни на основе вероятностных зарактеристик потока покупателей.
не должен быть привязан к событиям прихода покупателей, то есть не обязательно должен происходить по факту прихода кого-то из них или по факту продажи
На самом деле, скорее всего, должен. Смотрите.
Допустим, у нас есть состояние (state). В этом состоянии:
1. Вероятность прихода покупателя
2. Текущее количество коров
3. И другая статика типа цены на корову
Решение о покупке (покупать или нет) мы делаем только на основе этого состояния, но не того, что было ДО него. У нас полностью случайный рынок, следовательно ситуация как в казино — приход 10 черных цифр все-еще оставляет равную вероятность прихода каждого цвета. Ждать какое-то время после прихода покупателя — все-равно, что ждать, чтобы выпало еще черное, чтобы ставить на красное.
То есть наш state изменяется исключительно в момент покупки коровы, а потом каждый отрезок времени ничего не меняется.
Значит весь вопрос задачи только в максимальном количестве коров, к которому мы всегда стремимся. Ну и, конечно, определение списка классов, которым мы продаем, но это статика, которая определяется до начала продаж.
— У меня корову только что купили, так что ближашие несколько минут покупателя точно не будет, значит надо немножко подождать, перед тем, как заказывать следующую и плевать на теорию вероятностей.
Если мы возьмем максимум коров М=10, то получим такое распределение:

Если количество коров М=15, то такое распределение:

Для того, чтобы посчитать среднюю прибыль для каждого количества коров необходимо умножить прибыль каждого варианта на вероятность этого варианта и просуммировать.
К примеру, для 15:
... + -550*вероятность(5) + ... + -50*вероятность(10) + ... + 450*вероятность(15)
Уверен, для этого есть формула. К сожалению, по образованию гуманитарий, так что вспомнить ее не могу.
Так вот, таким образом мы получим прибыль для каждого варианта. Увеличивая М на 1 будем получать все большую сумму. (при М=0 — С=0, при М=1 — С=~30). И в какой-то момент эта сумма начнет падать. Вот это число М, которое имеет наибольшую сумму — есть наш буфер для данных чисел.
Расход в случае 5 покупателей: 70 * (15 - 5/2)
Расход в случае 10 покупателей: 70 * (15 - 10/2)
Расход в случае 15 покупателей: 70 * (15 - 15/2)
Может показаться странным, что я не беру в рассчет заказанные коровы, но это неважно. Мы рассчитываем буфер и заказываем новую корову при продаже старой. Следовательно за это время буфер обновится и в среднем для новых 15 коров будет та же выгода.
Не забывайте, что у нас речь идет о симметричном риске с двух сторон: 1) подержать лишних коров какое-то время на довольствии; 2) пропустить ценного клиента при опустевшем буфере.
Пуассоновский характер поступления покупателей даёт нам понимание, сколько в среднем на большом интервале времени их приходит за единицу времени. Этого (вкупе с прочими параметрами) достаточно, чтобы определить строгую регулярную частоту заказа коров, которая в среднем будет покрывать требования покупателей. Увеличение буфера уменьшает количество упущеных покупателей (недополученная прибыль), зато увеличивает расходы на корм. Уменьшение буфера снижает расходы на корм, зато недополученная прибыль на пропущенных клиентах начнет расти.
Простите, не могу комментировать с вашей скоростью, поэтому отвечу здесь.
Я говорю о том, что по факту покупки необходимо покупать сразу корову, все. Продал корову — заказал новую. Если мы сидим с пустым буфером, то значит у нас в заказах уже висит максимальное количество коров. И такое может быть с абсолютно любой выгодной стратегией — пустой буфер, куча коров в ожидании и новый клиент. Вопрос исключительно в том, какой должен быть буфер.
Нельзя заказывать только по факту продажи из-за возможного очень большого лага T. Интуитивно представьте, что наблюдается времнное затишье и покупатели не идут. Если они потом не усилят частоту прихода, значит у нас неверные данные о потоке, а если верные, то потом покупатели пойдут чаще и мы тупо не сформируем лаг. Я настаиваю на том, что данные о потоке однозначно определяют скорость заказов. И это будет работать при любых соотношениях T и среднего времени появления поупателей. А из-за вашего лага придется неоправданно увеличивать буффер терпя издержки на хавчике.
Вопрос лишь в начальном буфере. С каким количество коров необходимо прийти, чтобы максимизировать прибыль?
Увеличение буфера уменьшает количество упущеных покупателей (недополученная прибыль), зато увеличивает расходы на корм. Уменьшение буфера снижает расходы на корм, зато недополученная прибыль на пропущенных клиентах начнет расти
Главный вопрос — как правильно рассчитать буфер, чтобы максимизировать прибыль.
Поигравшись с вероятностями и применив волшебные три сигма по гауссу мы получим хорошие показатели.
Можно заморочиться интегралами и дифурами, конечно, но если задача чисто академиеская, то я лучше спать, а если практическая, то там наверняка не так всё гладко с параметрами потока и лучше сразу строить адативную модель, которая будет инкремнтально уточнять себя по мере накопления данных и даже с учетом их устаревания и инвалидации.
Это тот самый порог, где порой стоит остановиться и решать даьше практическую задачу, вместо сферической в вакууме.
Решение о покупке (покупать или нет) мы делаем только на основе этого состояния, но не того, что было ДО него.
Нам не нужно принимать такие решения по факту покупки. Из-за T, которое может в том числе сильно превышать средний интервал появления клиентов, мы рискуем замешкаться и пропустить покупателей сидя у пустого буфера. При этом мы халатно не используем данные в условии задачи параметры потока клиентов. Вероятностные характеристики потока однозначно определяют скорость наших заказов коров. Попытка рулить онлайн чревата потерями.
По-прежнему настаиваю, что никаких решений онлайн принимать в задаче не надо, если речь идет о достоверно известных параметрах потока (то есть величины генерируются по этим параметрам). Если параметры распределения собраны статистически, то нужно делать предоханители сверху и снизу, а также агрессивную петлю отрицательной обратной связи для борьбы с неполнотой сведений о реальных параметрах случайных величин.
В реальном мире параметры этих случайных величин не могут быть известны достоверно в принципе. А статистика — это заведомо неполная неточная информация.
Нам не нужно принимать такие решения по факту покупки. Из-за T, которое может в том числе сильно превышать средний интервал появления клиентов, мы рискуем замешкаться и пропустить покупателей сидя у пустого буфера
Я говорю о том, что по факту покупки необходимо покупать сразу корову, все. Продал корову — заказал новую. Если мы сидим с пустым буфером, то значит у нас в заказах уже висит максимальное количество коров. И такое может быть с абсолютно любой выгодной стратегией — пустой буфер, куча коров в ожидании и новый клиент. Вопрос исключительно в том, какой должен быть буфер.
- Запрашивать достаточно по одной корове. В любом случае запрос нескольких коров одновременно можно разбить на несколько запросов по одной корове с бесконечно малым промежутком по времени.
И время доставки тоже нормализовать, пересчитав параметры распределения. Минус два параметра.
Sergey_Kovalenko, Мужик платит за содержание коровы, пока её доставляют на склад или нет?
Это может сильно повлиять на стратегию: коровы ещё в пути, а он уже несет убытки.
- Запрашивать достаточно по одной корове. В любом случае запрос нескольких коров одновременно можно разбить на несколько запросов по одной корове с бесконечно малым промежутком по времени.
- Похоже, что все классы покупателей можно рассматривать по-отдельности.
Пусть у нас есть только один класс k1, пусть для него оптимальной будет стратегия S1.
Стратегия,Аналогично, для класса k2 — стратегия S2. Теперь предположим, что нужно решить задачу для двух классов: k1 и k2. Так вот, я утверждаю, что оптимальной будет просто независимая комбинация двух стратегий S1 и S2 (в одной мы ориентируемся только на данные по клиентам первого класса, во второй — только на второго). Если же предположить, что есть более хорошая стратегия, то она даст больше доходности на одном из классов. Тогда для задачи только с одним классом можно применить эту, улучшенную стратегию (урезанную на один класс) и получить большую доходность, а это противоречие.… в моём понимании, это некоторый функционал от всех имеющихся на данный момент данных (о клиентах, о коровах, о запросах и т.д.) и времени, который принимает значение 0 или 1. 0 означает, что в этот момент времени мы ждём, 1 — запрашиваем корову.
Немного сумбурно и не очень строго, но надеюсь, понятна мысль. - Можно считать, что параметры распределения известны. Так как интересует матожидание доходности, то любым начальным отрезком времени (конечным) можно пренебречь. А за этот начальный отрезок можно с любой заданной точностью найти параметры распределения.
Таким образом, как мне кажется, задача сводится к одному классу клиентов с известным параметром l, и это уже значительно более поддающаяся решению задача.
Не будет у B дефицита и вероятности отказа, потому что ту корову, которую он будет отдавать обратно, он закажет дополнительно.
Если кто-то начинает заказывать коров вне очереди, значит где-то должно быть накопление коров и отклонение от оптимума — либо у А, либо у B. Заказ дополнительной коровы для покрытия кредита эквивалентен экстренному заказу дополнительной коровы для покрытия внезапного опустошения буфера в сценарии объединённого буфера.
Смотрите еще раз:
- А отдал Б корову
- Б продал корову и заказал новую
- Б получил корову и вернул ее А
Где тут нарушился баланс-то?
1) А продал единственную корову первому миллионеру
2) А отказал второму миллионеру
3) А некоторое время не заказывает новую корову, потому что по его оптимальной стратегии делать это ещё рано: средний поток миллионеров мал, и если заказывать корову немедленно, то её придётся долго кормить. А должен поддерживать достаточно низкий поток коров. Делать это он может лишь меняя частоту заказов (он не может заказывать пол-коровы)
Но в случае с кредитованием Б приносит А корову через день, и теперь у А больше коров, чем его оптимум, и он тратит деньги на корм, хотя, возможно, следующего миллионера после двух первых придётся ждать очень долго. Эффективная частота заказов увеличилась из-за Б, и на бесконечно большом промежутке времени А проиграет примерно столько, сколько выиграл.
Прошу прощения, в последнем абзаце напутал чутка. Б даёт корову А немедленно. После этого А заказывает и отдаёт корову Б, а также должен решить, заказывать ли корову для себя или нет. Если он закажет, то эффективная частота заказов будет выше оптимума, и он будет терять на корме. Оптимальной стратегией будет пропустить один запланированный заказ, чтобы скомпенсировать незапланированное увеличение потока заказов — но это увеличивает риск отказа. На бесконечном промежутке времени… и т.д.
Вот вам простейший пример. Допустим, есть два типа покупателей. Первый покупает задорого (например, за миллион), но настолько редко, что для него выгодно держать только 1 корову. Второй покупает чаще, но с наценкой всего в 1 рубль.
Допустим, первый покупатель пришел два раза подряд. В таком случае выгодно отдать ему корову, которую держали для второго покупателя — потому что одна его покупка выгодна так же, как миллион покупок второго покупателя.
Что позволяет из двух нерентабельных классов сделать один рентабельный.
Докажите что так можно делать.
В случае с бесконечным временем нет проблем подождать своего покупателя хоть ещё миллиард лет — так как средний поток покупателей неизменен, то на длинном промежутке все отказы из-за дефицита коровы будут скомпенсированы удачными продажами сразу после прибытия новой коровы (без необходимости кормить её слишком долго).
Ваша задача происходит из экономики. И решается, как правило не математически, а организационным-экономическим путем, с помощью новых вводных.
В общем виде задача сводится к уменьшению количества связанного капитала. Или пропускной способности предприятия. Классическая книжка по теме: Голдрейт, Цель.
Кстати, если вам интересны экономические задачи. То я как раз занимаюсь проектом по решению более общей задачи: организацией разделения труда и вычислением требуемого количества капитала, для его существования. На основе модели Рикардо.
Здесь капитал явно указан неограниченным
Задача просто максимизировать прибыль
Зачем максимизировать то, что даётся по условию в неограниченном количестве? Без ограничения по капиталу задача не имеет смысла в принципе. Экономика должна быть экономной, иначе это не экономика. Вы же не будете продавать людям снег зимой, и стараться просто максимизировать прибыль от этого занятия..?
процентная ставка подразумевается нулевой
в реальной жизни ставка уже давно отрицательная, лишь бы клиент нашелся, что бы было на кого риски спихнуть))
Очень похоже что так и есть, но хотелось бы доказательство того факта, что оптимальная стратегия всегда заказывает новую корову в момент продажи старой.
не верно.
Аргументируйте
Но предвосхищу возражения и патчи алгоритма любителей интуитивных оптимизаций.
Они скажет, что заказывать надо только по факту прихода хорошего клиента независимо от того продали мы ему корову или нет.
На это возразить будет сложнее.
Сморите. Клиенты приходят в среднем раз в минуту, а это эквивалентно 60 раз в час.
Представьте, что так уж вышло, что пол часа было затишье, а потом они на какое-то время повалили быстрее. Вполне вероятная ситуация для пуассоновского процесса.
Фишка в том, что все эти пол часа мы не заказывали коров, но это никак не отразилось на размере буфера. Получасовое затишье в приходе коров произойдёт аж через месяц, а все эти пол часа приходили коровы, которые были заказаны месяц назад. То есть, мы зачем-то отодвинули затишье на месяц вперёд, когда оно может и не наступить, а может через месяц напротив на это получасовое затишье придет наплыв клиентов.
Понятно, что в среднем мы на этом потеряем не так много, но определённо потеряем. И бессмысленно усложним процесс закупки. Вместо заказов раз в минуту будем делать заказы именно в момент продажи.
Что это. как не суеверная интуитивная «оптимизация» (в кавычках, потому что нет, не оптимизация это).
Черт, классный пример. Как говорится, вместо тысячи слов. При заказе только по факту продажи мы будем продавать корову раз в месяц, а при ежеминутном раз в минуту начиная через месяц.
Плохой пример. Он проигнорировал необходимость буфера, который как раз на это и рассчитан. Мы берем столько коров, чтобы за этот месяц «ожидания» получить максимальную прибыль. Ровно так же, как и закупая их случайным образом. Необходим одинаковый буфер для обоих случае и число заказов для обоих случаев будет в среднем одинаковым.
Они скажет, что заказывать надо только по факту прихода хорошего клиента независимо от того продали мы ему корову или нет.
Глупость какая-то. Заказывать необходимо по факту продажи.
Под словом «пример» я подразумевал интервалы: минута и месяц. Это позволяет сделать проблему более интуитивно понятной.
Буфер делать в этом примере можно и нужно.
Давайте рассмотрим стационарную ситуацию.
Клиенты приходят примерно раз в минуту, коровы добираются по месяцу и буфер,, скажем, из 10 коров полон. Также в пути дофигища коров, они поступают тоже со скоростью примерно раз в минуту.
Рассмотрим ваш вариант. Пуассоновский процесс допускает вероятность, что случится «затишье» на пол часика, когда ни один клиент не придет, хотя мат-ожидание 1 минута.
Все эти пол часа ни одной коровы не вызвано из деревни. Ровно через месяц выдаются пол часа, когда коровы не приходят из деревни. За это время пусть пришло примерно 30 человек. Первые 10 выбрали пул, остальные 20 ушли. Это не прогноз, а просто один из вполне вероятных вариантов развития событий.
Теперь представьте, что при прочих равных коров мы заказываем строго раз в минуту, это значит, что пул вырастет за пол часа тишины на 30 коров (получится их 40 у нас), потом они постепенно будут рассасываться неопределенно долгое время. Но через месяц не будет полу часа без коров. Всё будет в штатном режиме.
Ваша схема фактически апрещает рост пула сверх некоторого числа, а моя никак не ограничивает его, но за счет фиксированного интервала заказа равного мат-ожиданию прихода покупателей скорость прихода коров получается в среднем равной скорости их сбыта.
Теперь возьмем ваш пример, но инвертированный. В первые полчаса пришли 60 клиентов, разобрали всех коров и следующие полчаса никогда не было. В следующий час снова в первые полчаса пришли 60 клиентов. Если мы заказывали коров сразу после покупки, то смогли обслужить всех 60 клиентов, а если равномерно, то вторая половина коров не получит, ибо пришли до их прихода.
Обратно работает и для равнораспределенного варианта — можно придумать кучу гипотетических ситуаций, когда он выгоден.
Допустим с монеткой. Можно ставить на орел, а можно ставить на решку. Например в случае если из трех раз орел выпадет три раза, или два раза, то выгоднее ставить на орла. А если же нет, то выгоднее ставить на решку.
Но в перспективе они одинаковые. Потому что как вы считаете среднее количество коров в час? Берете всех покупателей и делите на время. А я просто беру всех покупателей.
И если за час приходит в среднем 60 покупателей, то за 1000 придет приблизительно 60000 покупателей. И за 1000 часов и вы и я закажем и продадим приблизительно 60000 коров.
Не очень понятно откуда 1/60. А насчет ситуации, когда ща 40 минут придет много клиентов, которые обычно ходят с мат-ожиданием раз в час, то вероятность (вернее частота) таких ситуаций довольно мала. И ее надо сравнивать с настолько же неудобными и вероятными случаями для вашей стратегии.
Короче, надо либо формулы уже начинать писать, либо имитационную модель для статистической проверки стратегий.
Не очень понятно откуда 1/60
В среднем у нас не будет коров в течении 1 минуты каждый час. То есть смотрите. Следовательно в 1/60 случаев прихода клиентов у нас не будет коровы.
За 40 минут вполне может прийти 2-3 клиента, но в долгосрочной перспективе у нас также не будет коров, чтобы обслужить каждого 60-ого клиента)
Под словом «пример» я подразумевал интервалы: минута и месяц. Это позволяет сделать проблему более интуитивно понятной.
Буфер делать в этом примере можно и нужно.
Давайте рассмотрим стационарную ситуацию.
Клиенты приходят примерно раз в минуту, коровы добираются по месяцу и буфер,, скажем, из 10 коров полон. Также в пути дофигища коров, они поступают тоже со скоростью примерно раз в минуту.
Рассмотрим ваш вариант. Пуассоновский процесс допускает вероятность, что случится «затишье» на пол часика, когда ни один клиент не придет, хотя мат-ожидание 1 минута.
Все эти пол часа ни одной коровы не вызвано из деревни. Ровно через месяц выдаются пол часа, когда коровы не приходят из деревни. За это время пусть пришло примерно 30 человек. Первые 10 выбрали пул, остальные 20 ушли. Это не прогноз, а просто один из вполне вероятных вариантов развития событий.
Теперь представьте, что при прочих равных коров мы заказываем строго раз в минуту, это значит, что пул вырастет за пол часа тишины на 30 коров (получится их 40 у нас), потом они постепенно будут рассасываться неопределенно долгое время. Но через месяц не будет полу часа без коров. Всё будет в штатном режиме.
Ваша схема фактически апрещает рост пула сверх некоторого числа, а моя никак не ограничивает его, но за счет фиксированного интервала заказа равного мат-ожиданию прихода покупателей скорость прихода коров получается в среднем равной скорости их сбыта.
Вполне вероятная ситуация для пуассоновского процесса.
Фишка в том, что все эти пол часа мы не заказывали коров, но это никак не отразилось на размере буфера
И не должно. От того, что полчаса никто не приходил вероятность прихода клиента далее осталась такой же, как и была.
Поймите, распределение пуассона не говорит, что если первые полчаса никто не приходил, то все ожидаемые клиенты повалят во вторые полчаса. Оно говорит о том, что если мы в час ожидаем в среднем 10 клиентов, то можем за этот час получить и 1 и 25.
Я просто сказал, что в бесконечном пуассоновском потоке с указанными характеристиками наверняка (100%) когда-то случаится такой час, когда в первой половине никого, а во творой 60. Вероятность, что следующий час будет именно таким не нулевая. Я просто привел это как пример. Если кто-то с вами не согласен, надо допускать всё же что это вы чего-то не поняли, а не собеседник тупит.
У вас есть пул касс, клиенты приходят по пуассоновскому потоку. Время обслуживания на одной кассе Т.
У вас есть пул коров, вы заказываете новую сразу после продажи. Клиенты приходят по пуассоновскому потоку. Время доставки новой коровы Т.
Я думаю это одно и то же.
Вы привели аналогию, в которой пул касс фиксирован, их не становится больше, а должно становиться, чтобы не пропускать клиентов через T после «затишья».
Вы забываете, что поток пуассоновский и описывается грубо говоря средним количеством на 1 времени. Это 1 в минуту = 60 в час и т.д., но интервалы между приходам это случайные величины и существует ненулевая вероятность сколь угодно долгого "затишья" независимо от мат ожидания. По затишье я имею в виду, что обычно люди идут 60 в час, но может статься, что и в течении получаса никто не появится. Почитайте мой коммент выше про это. Там про месячную доставку и ежеминутный поток.
Размышляя в этом направлении пришел к мысли о существовании нерентабельных клиентов, то есть таких, которые в среднем за промежуток времени приносят денег меньше чем корова съедает.
Если заказывать коров независимо от покупок равномерно со скоростью их потока, то получится эффективнее. Могу доказать, если еще сами не поняли.
Могу доказать, если еще сами не поняли.
не можете, потому что предположение ошибочно.
И да, я хочу пример стратегии с нефиксированным пулом, с доказательством того что он не хуже. И пример случая, недопустимого в моем варианте.
Мы постоянно заказываем коров со средней скоростью потока, то есть если средняя скорость потока 1/мин, то и коров мы заказываем по одной строго каждую минуту. Одно исключение. не заказываем очередную корову, если случилось, что пул опустел и клиент ушел без коровы, Очевидно, что если средняя скорость потока верна, то буфер в среднем будет держаться около N. Иногда он будет пустеть и мы будем пропускать клиентов, а иногда будет вырастать, возможно очень сильно больше N/
Пусть у вас на некотором сколь угодно малом интервале, отличном от нуля пул меньше N
Это почему?
Дв и не так важен сам факт наличия расходов, или прибыли, как их положительный баланс. Его нужно максимизировать. Пул можно зафиксировать только сверху. Снзу его невозбранно время от времени будут расхватывать клиенты. Если пул ограниен сверху,, то больше вероятность опустошения пула.
Вопрос что перевесит, недополученная прибыль при лишних опустошениях или расходы на кормёжку.
Вернее вопрос в том, как найти оптимальный средний размер пула, чтобы макимизировать баланс.
Что вы преподаете, если не секрет?
Вы забываете, что поток пуассоновский и описывается грубо говоря средним количеством на 1 времени. Это 1 в минуту = 60 в час и т.д., но интервалы между приходам это случайные величины и существует ненулевая вероятность сколь угодно долгого «затишья» независимо от мат ожидания
Вы неправильно понимаете. Распределение Пуассона не говорит, что если мы ожидаем в среднем 1 клиента в минуту, то нам придет ровно 60 в час, но непонятно в какой момент. Для 1 человека в минуту в час может прийти и 1 (с очень маленькой вероятность) и 150 человек (с еще меньшей вероятностью). И оно говорит лишь нам о вероятности именно такого числа, а не распределении количества людей по времени.
Я отлично понимаю распределение Пуассона.
- Изоляция. Мы можем один раз передать в деревню интервал и не слать больше сигналов туда, коровы сами пойдут.
- Равномерность и предсказуемость нагрузки на дереаню. Ъотя этот плюс компенсруется непредсказуемостью роста (пусть даже краткосрочно и маловероятно) буфера, что, явно, минус
В принуипе можно и в вашей стратегии найти плюсы. Типа, поток один и постоянно спит между прерываниями от клиентов.
Но ок. Что там, что там доводы не решающие. Ценность их зависит от конкретной задачи и реализации.
Размер буфера:
- чем он больше, тем меньше вероятность пропустить клиента, зато больше издержки на корм;
- чем он меньше, тем больше вероятность пропустить клиента, но меньше издержки на корм
Очевидно, что заказывать коров надо со средней скоростью сбыта (не больше и не меньше)
Ввиду Пуассоновского процесса наш реальный размер буфера будет топтаться около оптимума время от времени с ненулевой вероятностью то упираясь в ноль, то улетая в плюс. Беда в том, что упираясь в ноль мы теряем клиентов, а вылезая в плюс терпим перерасход на содержание скота.
Закупка следующей скотины только по факту продажи, а не когда пришло среднее время закупки толкает нас к нулю и потере клиентов в худшем случае на одну корову, в среднем на пол коровы (в коровах мы буфер измеряем).
Кстати, размер буфера вполне может быть нецелым. Эта мысль только что пришла. То есть седловая точка может попасть, скажем, на 10.5 коров в буфере. Процесс ламинарный по времени и если отвязать закупку коров от продажи эвентуально, то вполне можно держать дробное кол-во коров в буфере.
Закупка следующей скотины только по факту продажи, а не когда пришло среднее время закупки толкает нас к нулю и потере клиентов в худшем случае на одну корову, в среднем на пол коровы (в коровах мы буфер измеряем).
Не толкает. Смотрите. Если клиенты приходят равномерно — оба варианта равны. Если клиентов было сначала больше, потом меньше, то больше коров будет, если заказывать сразу после покупки. А если клиентов пришло сначала меньше, а потом больше, то больше коров будет в случае равномерной закупки. В среднем на долгосрочной перспективе оба варианта абсолютно идентичны.
Надо тестовый стендик закодить для статистической проверки на днях.
Но я теперь знаю какую задачу задать студентам=).
Впрочем причины не важны. Просто есть контр пример.
Где?
И как тогда заказывать?
Интервал заказов может чуть-чуть отличаться, я не помню точное значение, но он точно больше 1/3.
Впрочем, я мог ошибиться, нужен независимый контроль.
Получилось что получилось.
Надеюсь вы понимаете что контрпример нужен один.
Если посчитали — как? Формулы, код программы.
Конечно, если выгоды от продаж коров нету, то в таких случаях закупки вообще быть не должно.
Таким образом, мы выбираем только клиентов, которых считаем выгодными, продаем только им и заказываем сразу после продажи.
Все, что между этими двумя значениями — исключительно гэмблинг — авось я угадаю, когда выгодно заказать корову.
А почему вы решили взять число 1.16?
Есть еще такое соображение, при равномерном заказе у вас будут промахи, когда коровы еще не пришли, а клиенты уже есть. Это дает в среднем вероятность отказа отличную от нуля. Но тогда интенсивность продаж меньше интенсивности прихода клиентов. А значит коров нужно заказывать реже. Заказываете реже, растет вероятность отказа, падает доход, но при этом падают расходы на коровник.
Потому что я ошибся в одном месте (потом исправил) получил несоответсвие и стал подгонять модели. Так обнаружил что в указанном выше примере прибыль больше если заказывать реже.
Похоже, что вы ошиблись не в одном месте, а т.к. код свой не показываете — понимаете, что это очень вероятно.
Есть еще такое соображение, при равномерном заказе у вас будут промахи, когда коровы еще не пришли, а клиенты уже есть
Конечно, всегда будут вероятности отказа, если только не с бесконечным буфером.
Но тогда интенсивность продаж меньше интенсивности прихода клиентов. А значит коров нужно заказывать реже
Что? Как у вас получилось вывести второе из первого? У нас недостаточно коров, а значит их нужно заказывать еще меньше?
В случае достаточной наценки нет никакого смысла заказывать коров меньше, чем среднестатистических приход клиента. Регулировать расход на коровник нужно исключительно размером буфера.
Но я по-моему по прежнему вижу проблему. Похоже, что возникнет положительная обратная связь: больше отказов — меньше заказов; меньше заказов — больше отказов. Хорошо бы сформировать отрицательную обратную связь. Это сильно сложнее, но можно рассчитать, например, оптимальный поток заказов с учетом вероятности отказов из-за конечного буфера. Именно с такой фиксированной скоростью и следует делать равномерный заказ. Это сформирует отрицательную обратную связь. При отказах формируется избыток коров и это влечет уменьшение отказов, что, в свою очередь уменьшает избыток, отчего растут отказы и так все саморегулируется.
Резюмирую гипотезу:
1) заказ по факту продажи формирует положительную обратную связь, ведущую к росту отказов;
2) заказ со скоростью потока клиентов формирует положительную обратную связь, приводящую к постоянному росту буфера;
3) наверно можно вычислить фиксированную скорость заказов, при которой буфер будет в среднем одной длины.
4) наверно можно сформулировать закон адаптивного изменения скорости регулярных заказов на основе текущей статистики процесса, чтобы эта скорость регулировалась отрицательной обратной связью.
Какие ваши соображения, коллеги?
больше отказов — меньше заказов; меньше заказов — больше отказов
Как-то непонятно. У нас есть буфер и (количество коров в буфере+количество заказанных коров) всегда константно. Больше продаж — больше заказов. Отказы, конечно, могут быть, но размером буфера мы балансируем так, чтобы получать максимальную прибыль.
Зачем вы раз за разом все усложняете без причины?
В питоновском пакете numpy нашел такую штуку:
import numpy
print(numpy.random.poisson(100))
Вроде даёт интервалы с мат-ожиданием 100.
Вопроса сразу два:
- Почему оттуда целые числа сыпятся? Я думал там вещественные числа должны быть.
- Как правильно смешивать пуассоновские потоки?
По второму пункту я полагаю как-то так:
- взять из каждого потока по интервалу и отсортировать по неубыванию (сформировать кучу);
- извлечь и выдать минимальный интервал (из вершины кучи) и сгенерировать следующий интервал для потока, чей интервал только что извлекли;
- вычесть извлеченный из всех интервалов кучи;
- поместить новый интервал в кучу;
- повторять бесконечно от пункта 2...
Система эквивалентна системе массового обслуживания с отказами.
Число коров в пуле равно числу коров находящихся на рынке плюс коровы в пути.
Заказывать коров надо по факту продажи, другие идеи не оптимальны.
На рынке корову мужик продавал