Задать вопрос

А не поможете с прогнозированием продаж?

Имеем необходимую нам плановую выручку, допустим, 1 000 000 рублей. Имеем список товаров, допустим, из 1000 позиций, у каждого из которых есть цена и «легкость продаваемости» (т.е. этот товар легче продать, а вот этот сложней), имеем товарный остаток (вот этого товара 100 штук, а этого 30). Каким алгоритмом воспользоваться, чтобы посчитать необходимое для продаж количество различных товаров для достижения плановой выручки?
  • Вопрос задан
  • 2777 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 1
vanxant
@vanxant
У вас классическая задача на методы оптимизации (man методы оптимизации).

Сначала введите обозначения:
Goal — плановая выручка
для i-того товара
price[i] — цена
qty[i] — остаток на складе
w[i] — сложность продаваемости
plan[i] — искомый план

Дальше советую начать со случая двух товаров, так это всё очень наглядно. Как разберетесь с двумя — разберетесь и с любым количеством.
Берете ручку, рисуете график.
По оси x у вас plan[1], по оси y — plan[2].
Рисуете две прямых и помечаете области под ними:
plan[1]<=qty[1]
plan[2]<=qty[2]
Рисуете еще одну прямую и заштриховываете область НАД ней
plan[1]*price[1] + plan[2]*price[2] >= Goal

Заштрихованный треугольник, который получился — это ваше пространство потенциальных решений. Если треугольника не получилось, значит при ваших исходных данных решить задачу вообще нельзя (нужно или снижать хотелку, или повышать запасы на складах).

Часть углов может иметь дробные координаты — округляем их до целых так, чтобы новые координаты лежали внутри пространства решений.

Для случая трёх товаров у вас получится не треугольник, а пирамидка из 4 точек, для 1000 товаров — 1001-мерная «пирамидка» из треугольников.

Дальше выписываете вашу целевую функцию:
Ф(plan[]) = plan[1]*w[1] + plan[2]*w[2] (… + plan[i]*w[i] + ....)
Вам нужно найти точку в пространстве решений, в котором ваша функция будет иметь минимум. Таким образом вы найдете миниальный план продаж, при котором выполняются все ваши ограничения.

Вы халявщик, потому что ваша целевая функция Ф — линейная. Можно доказать, что её минимум будет лежать в одном (или нескольких) углах треугольника/пирамидки. Поэтому вам нужно просто посчитать значения Ф во всех углах и выбрать среди них те, где значене Ф() будет минимальным.
Почему возможно несколько минимальных решений — ну если например у вас два товара с одинаковой ценой и одинаковой сложностью, то вам без разницы, продать один или другой.
Собственно всё, задача решена.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Juggler
@Juggler
Я писал статью на Хабре по управлению запасами. Там есть алгоритм, но цель у него немного иная — делать закупки для обеспечения определенного гарантированного уровня сервиса — вероятности того, что человек найдет искомый товар в наличии.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы