Нестинг
Она принимает значение цены в первом периоде и выполняет поиск оптимального вектора цен для второго периода с учетом всех возможных отклонений.
Ассоциация «ЛЕСТЕХ»: [email protected]
Кажется, что-то пошло не так.
Страница, которую вы запрашиваете, не существует.
Возможно она устарела, была удалена, или был введён неверный адрес в адресной строке.
Данный график позволяет учитывать убытки как от пустых кресел, так и от упущения потенциальных клиентов, которым не хватило кресел (потенциальная прибыль). В предыдущей статье мы учитывали их, но следует отметить, что их учет необходим, только если мы можем менять емкость самолета — заменить его на другой тип или перераспределять емкость его отдельных классов обслуживания. Сейчас мы учитываем только среднюю прибыль, но данная информация о распределении заполняемости позволяет добиться гораздо большего количества решения задач по расстановке флота и формирования расписания. Обычно эти задачи решают в детерминированной форме и используют только наиболее вероятные значения — в нашем случае мы бы взяли значение 36 или 38. В стохастической постановке же мы должны использовать все представленные на графиках распределения целиком.
Прежде чем взглянуть на то, к чему приводит использование предложенного типа нестинга, давайте воспользуемся немного другими значениями субоптимальных квот — это позволит лучше продемонстрировать их влияние на процесс продаж. Возьмем для подкласса D квоту, равную 7, а для подкласса C — квоту, равную 15. Выглядит как жульничество, но можно выполнить код при других значениях и убедиться, что все верно.
В то же время есть сотни других случайных факторов, которые будут влиять на спрос, такие как: погода в пункте прибытия или резкое изменение курса валют. Таким образом, спрос гораздо лучше описывается некоторой регрессионной моделью — детерминированной, но зашумленной функцией.
Поскольку используемая для примера модель спроса не так сложна, то можно вычислить значения средней прибыли для всех возможных значений квот при оптимальных ценах:
Так будет выглядеть заполняемость соответствующих подклассов:
Время окончания второго периода продаж сильно отдалилось от даты вылета, что объясняется наличием жесткой квоты для подкласса C.
Из-за смещения распределения средняя прибыль очень сильно возросла, при этом также видно, что квота действительно сработала. В данном случае лучшая квота для количества билетов, продаваемых в первом периоде по цене 1.2, составляет 25 кресел.
Общая задача оптимизации нестинга
Квоты помогают отсечь длинные хвосты распределений спроса, но, поскольку отклонения случайны и могут сильно отклоняться как вверх, так и вниз, то квоты могут быть исчерпаны не полностью. В нашем примере используется всего два периода продаж, а если периода будет уже три, то эти остатки нужно как-то перераспределять и делать это нужно также — оптимально.
В этой статье, как и в предыдущей, не рассматривались методы создания прогнозных моделей. Данные модели являются регрессионными и могут быть получены с помощью вероятностного программирования. Более того, они могут включать в себя такие данные как: скидки, цены конкурентов и т.д. В будущем планируется подготовка статьи о том, как вероятностное программирование может применяться для создания моделей спроса, а также оценки перспективности того или инного типа нестинга для него.
Задача состоит в том, чтобы найти такую иерархию подклассов и алгоритм перерасчета, при которых случайные и фиксированные количества доступных мест в подклассах будут наилучшим образом соотноситься со случайными отклонениями спроса в них.
Как видим, дифференциальная модель, которая рассматривает каждого отдельного потенциального клиента, действительно может быть использована для моделирования массовых явлений. В конечном итоге, если изобразить зависимость от цены в каждом периоде, то получатся кривые спроса:
Аналогичным образом определяются ограничения для подклассов Z и I:
Для третьего периода, который займет оставшееся время, имеем следующую картину:
Простейшие варианты нестинга и его оптимизация
О едва заметной пользе введения квот можно сказать только в том случае, если в первом периоде используется цена 1.1. Во всех остальных случаях любое ограничение возможных отклонений приводит лишь к явному снижению средней прибыли.
Нестинг известен давно, при этом попыток его оптимизации вместе с ценами и квотами никогда не предпринималось. Показанный в статье результат был бы невозможен без стохастического програмирования, которое наиболее естественным образом подходит для ситуаций с неопределенностью, и даже он был бы невозможен без оптимизации методом кросс-энтропии. В статье неоднократно говорилось, что этот метод может быть улучшен самыми разными способами, но не говорилось как именно. Можно заметить, что в последнем представленном коде для оптимизации и моделирования появились некоторые необговоренные функции, и одна из них — это софтмакс Тейлора:
Поскольку какие-то цены могут быть не использованы вовсе, значит, что квоты соответствующих подклассов вообще не будут использованы. В данном случае нужно применять какие-то правила перерасчета мест и всего этих правил — три:
Чем меньше цена (и больше ), тем хуже аппроксимация. Это связано с зависимостью вероятности покупки билета от времени. В случае, если предполагается использование только очень низких цен, то это проблема. Однако крайне трудно представить такую ситуацию, поэтому можно вполне уверенно полагаться на распределение Пуассона.
Поскольку подкласс J находится в самом верху иерархии, то продажи билетов по цене данного подкласса могут приводить к перерасчету мест во всех нижестоящих подклассах:
Теперь предположим, что некоторая авиакомпания обладает только что полученной интегральной моделью и решила провести оптимизацию продаж на ее основе. Пусть будет всего три подкласса бронирования: J, C и D, где J — самый дорогой подкласс, D — самый дешевый, а в самолете всего 40 мест.
Заключение
Отличие оптимизации в данном случае заключается только в том, что необходимо учитывать возможные значения , так что в использованные выше функции придется внести лишь небольшие изменения:
где и . Данная функция полезна тем, что позволяет регулировать дискриминацией классов, а в нашем случае дискриминацией отдельных решений. При очень сильной дискриминации алгоритм может придавать больший вес тем решениям, которые показали большое значение средней прибыли лишь из-за случайного отклонения.
Чтобы разобраться с нестингом, необходимо большее количество подклассов — пусть теперь их будет пять, например: J, C, D, I, Z. Если проранжировать все подклассы от самого дорогого — J к самому дешевому — Z, то иерархия подклассов может выглядеть так:
На гистограммы нанесены точки, соответствующие пуассоновскому распределению с (средней интенсивностью), равной среднему значению всех возможных значений спроса. Отклонения хорошо аппроксимируются Пуасоновским распределением, что неудивительно, так как каждая гистограмма показывает распределение возможного числа покупок билетов за фиксированный период времени .
Эта система ограничений показывает, что продажи билетов подкласса C теперь приводят к перерасчету количества мест в подклассах C и D. Определяется это правилом Up-Sell — сначала вычитаются места из подкласса D, а в случае, если их не хватает, то затем вычитаются из подкласса C.
Проделаем то же самое для второго периода, который будет занимать время с 3-го по 1-й день до вылета:
В числе экспертов Ассоциации:
Поскольку введена квота , то теперь общее количество доступных к продаже билетов можно записать как:
Функция софтмакса может быть произвольной, например, такой:
Конечно, в случае двух периодов риск прогадать довольно велик. Если периодов больше, то он будет становиться меньше. Если в каком-то периоде спрос отклонится вниз, то появившийся остаток достаточно отдать в тот период, где кривая спроса выше и в котором он может быть исчерпан. Именно нестинг лучше всего подходит для такой стратегии.
График показывает, что за 9 дней до вылета вероятность покупки при большой цене практически равна 0, в то время как за один день до вылета — достаточно велика. Однако, поскольку один из параметров в этом распределении зависит от времени, то приведенная интегральная модель покажет, что за все 10 дней продаж распределение количества покупателей, готовых купить по определенной цене, будет выглядеть несколько неожиданным образом:
Можно предположить, что для разных параметров спроса лучшим будет тот или иной тип нестинга. Однако проверка этого предположения потребует большого объема вычислений. Вместо этого попробуем убедиться в том, что результат будет зависеть от величины разброса количества доступных мест. Для этого сначала сравним параллельную и комбинированную иерархию, каждая из которых будет использована с правилом Up-Sell и уже затем сравним эти результаты с динамическим ценообразованием, в котором не используется нестинг, но учитывается и компенсируется с помощью цены любая наблюдаемая невязка. Поскольку подклассов теперь стало 5, то количество подпериодов продаж увеличим до 5, а количество цен из доступного интервала до 9: [1.00, 1.05, 1.10, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40].
Данную модель в дальнейшем будем использовать для моделирования «реальности», поскольку она действительно является порождающей интегральную. Пусть первый период будет занимать интервал времени от 10 до 3-х дней до вылета, в котором проверим, какие могут быть отклонения спроса при разных ценах:
4. Квоты
Обозначим квоту для первого периода символом и предположим, что значение квоты может быть равно одному из возможных значений спроса . Пусть равен 2, т.е. соответствует квоте в 19 кресел. А значения и будут теми же, что использовались в примере выше, т.е. оптимальные.
Увеличение параметра от итерации к итерации будет приводить к постепенному увеличению дискриминации и способствовать наиболее плавному сужению перспективных областей для поиска решений.
Вышесказанное звучит вполне логично, но имеет свои нюансы. Квоты позволяют задать жесткое ограничение, т.е. ограничить количество продаваемых билетов некоторым числом. Цены при этом можно рассматривать как слабое ограничение — ведь если есть опасения продать большое количество билетов по дешевой цене, то можно просто увеличить цену. В этом случае ограничение будет вероятностным. Что будет, если попробовать совместить жесткие и слабые ограничения?
Если известно количество потенциальных покупателей, а также сколько из них покупает билет по определенной цене, то благодаря вероятностному программированию возможно определить вероятность покупки билета, которая будет зависеть не от периода продаж и цены, а от времени продажи и цены. Эта зависимость может быть выражена бетабиномиальным распределением :
Если используется цена подкласса C, то количество проданных билетов по данной цене будет определяться следующим ограничением:
Первый график показывает, что вероятность появления покупателя за 10 дней до вылета гораздо меньше, чем за 5, и крайне высока за несколько часов до него. Второй график показывает, что количество потенциальных покупателей в разные интервалы времени может выглядеть совершенно по-разному. В данном случае показано распределение потенциальных покупателей для рейса, по которому желает лететь в среднем 100 человек.
Михаил Тарасенко
В дальнейшем будем полагать, что все распределения используемые в модели спроса являются унимодальными.
Разумеется, такой исторический экскурс не следует воспринимать буквально, но стоит признать, что в какой-то степени все так и было. Главное, что поиск лучшего типа нестинга может быть построен на вполне разумных субъективных суждениях: знаниях + логике. Если субъективные суждения возникают в условиях неопределенности, то вероятностное программирование становится самым надежным инструментом.
Шум может приводить к так называемой невязке — различию между тем, что ожидалось и тем, что наблюдается. Задача состоит в том, чтобы учитывать такие невязки только по мере их появления, но обязательно с учетом имеющегося прогноза. Фраза «корректирующая цена» (или «корректирующий план») как раз и означает действие, которое направлено на то, чтобы компенсировать наблюдаемую невязку. «Планирование продаж» означает, что нужно планировать цены с учетом всех возможных отклонений спроса, но не всех возможных невязок.
Например, зависимость вероятности появления потенциального покупателя от времени до вылета самолета может быть задана некоторым распределением. Для простоты возьмем гамма распределение:
Предположим, что прогноз спроса выглядит следующим образом:
Информация о том, сколько человек интересовались покупкой билета и сколько из них его купили, имеет особую важность для создания дифференциальных моделей. Дифференциальные модели во многом лучше и могут даже рассматриваться как порождающие интегральные модели.
Генеральный директор ООО «Профи» ТМ Proto
Использование корректирующих цен не увеличивает средней прибыли, но снижает дисперсию итоговой заполняемости мест. В нашем примере используется всего два периода продаж, а если их будет больше? Многоэтапное стохастическое программирование зачастую показывает, что неоптимальные решения на первых этапах позволяют добиться значительно лучших результатов на последующих или заключительных этапах. В нашем случае возникает вполне естественный вопрос: могут ли отличаться оптимальные цены для первого этапа, найденные с корректирующими ценами и без них? Это возможно, но только в том случае, если распределения вероятностей на каком-то из этапов перестают быть унимодальными.
В статье при этом не рассматривалась задача о вероятностных распределениях для случайных разбиений всей доступной емкости по подклассам. В коде представлены необходимые для этого функции, но объяснение всех нюансов, связанных со случайными разбиениями и их совместимостью с концепцией кросс-энтропии, выходит далеко за рамки этой статьи.
Сама фраза «планирование продаж», также как и «корректирующие цены» легко может сбить с толку: по сути планировать цены на весь период продаж приходится только потому, что продается ограниченное количество билетов. Если нет прогноза на весь или оставшийся период продаж, то подобрать наилучшие цены не получится вообще. Однако это не значит, что необходимо искать решения для абсолютно всех возможных комбинаций отклонений в отдельных подпериодах.
Еще одна особенность связана с тем, что модель зависит от интервалов времени, а не от времени. Именно по этой причине эта модель и была названа интегральной. Создание интегральной модели — отнюдь непростая задача, ведь цены и квоты цензурируют наблюдения, а границы периодов продаж из-за квот также будут испытывать отклонения. Однако благодаря вероятностному программированию можно создать дифференциальную модель спроса — она показывает, как вероятность покупки билета отдельным потенциальным клиентом зависит от цены и времени.
Это ограничение показывает, что цена подкласса D может использоваться неоднократно, но при этом количество проданных билетов по данной цене не может превышать квоту или количество доступных мест в данном подклассе.
Байесовский вывод работает с неопределенностью спроса косвенно. В фреквентистском подходе параметры модели имеют четкое значение, в байесовском они сами рассматриваются как случайные величины с собственными распределениями. Это решает проблему объема данных, которых потребуется гораздо меньше.
3. Корректирующие цены и их оптимизация
Ранее было показано, что и обеспечивают практически одинаковые средние прибыли, и сейчас это наблюдается повторно. Теперь взглянем на оптимальные векторы корректирующих цен:
Следует также упомянуть, что в стохастическом программировании решением часто становятся не числа, а функционалы — из-за чего разные решения могут приводить к практически неразличимым результатам. Квоты для двух подклассов Z и I могут принимать разные значения: например, 13 и 8 или 10 и 11, но при этом приводить к одинаковым значениям средней прибыли. Однако, если провести моделирование, то эти значения не могут быть абсолютно произвольными, но будут давать в сумме фиксированное количество мест (например, 21).
Ради справедливости стоит отметить, что бимодальность все-таки действительно возможна. Например, если в первом периоде возможные отклонения спроса подчиняются распределению Пуассона с , а квота , то будет наблюдаться следующее:
Другая особенность модели связана с тем, что авиакомпания не может себе позволить эксперименты с ценами, чтобы получить больше данных для уточнения модели. Фреквентистский подход в данном случае — это плохая идея. Он плох тем, что оперирует неопределенностью напрямую, посредством обработки экспериментов: чем больше экспериментов, тем лучше информация о неопределенности (распределении возможных отклонений спроса). Информация о неопределенности спроса при этом — это главное «топливо» для последующей оптимизации.
Если принять иерархию подклассов одной на рисунке выше комбинированной, а в качестве правила перерасчета выбрать правило Up-Sell, то можно составить систему ограничений, которые должны учитываться в каждом периоде продаж. Например, для подкласса D будет работать следующее ограничение:
Создание модели спроса — это задача машинного обучения, качество которой зависит от данных. Тут действует старое правило: мусор на входе — мусор на выходе. Плохая модель может свести на нет все попытки последующей оптимизации.
Источники:
https://habr.com/ru/articles/786628/&rut=963c11504996d20cef9e08fd188e973be9e44e5fc13ad2e8a520ea55115dd04d
https://www.emfa.ru/tpost/b84hv4mf21-nesting-v-detalyah-chto-eto-takoe-i-est&rut=b440116faf09c1f7c911017821d830419ee08b8eddae0d0f5b7500da74f4d2ed
https://deepnest.io/&rut=c5bff1effa5bafdc75e01761d87330e735802e0ff163306d18975caef2453350
https://www.youtube.com/watch?v=y8J3c8YKCJk&rut=42eadce6d5784627d284ede38f8dbc3a33354c4735aaabf3bf372c865a281e7e
https://www.stankoff.ru/blog/post/787&rut=9679fbeabe4565be0eb160cf77e4584fc4bf03bf9dc419f75258749335a289d1
https://www.youtube.com/watch?v=0Aim4OuQKrM&rut=53c4a54de174b4ec2031600981522c09461e0363cc1c3de3ca73c83064b13da1
https://arsenalmeb.ru/baza-znanij/tekhnologii/tekhnologiya-nesting&rut=42666354d187c730357118c6d55e61d8f798287c4afd2187599a6debf9a1ad4b
https://alestech.ru/library/press-215-tehnologia-nesting-plusy-i-minusy&rut=4ec4cf2c0e99ddf7455a8aa49940208a11277e0796b9376e569661d65fd44014
https://stankoteam.ru/info/articles/tekhnologiya-nesting-nesting/&rut=78d8432cb2a5547ef5aede6437ed156aebf55f3e09943d73705ab6abae560989