Я пытаюсь прикрыть требования от клиента для механизма ценообразования в розничной среде. Мы определили механизм ценообразования как действующий по набору правил ценообразования, который устанавливает новые ценовые точки для купленных товаров на основе существующих товаров, уже находящихся в корзине покупок.
Простое правило цены может быть ПОЛУЧИТЬ РУЧКУ 40% ВЫКЛ. Более сложное правило может быть ПОЛУЧИТЬ БЕСПЛАТНУЮ ШИРИНУ, КОГДА ВЫ ПОКУПАЕТЕ 2 ПАНТЕРА И ПОСЛУШАТЬ МЕНЬШЕ $30.
Общая отраслевая практика применения этих правил, по-видимому, является конечной лучшей ценой для клиента, но пришло к выводу, что, возможно, потребуется вариант ранжирования, а также вариант укладки.
Ранжирование позволит использовать правило, которое иначе проиграло бы, чтобы выиграть. Stacking позволит нескольким правилам выиграть.
Я рассмотрел многие из сообщений здесь о SO, касающихся механизмов правил, и мне нужна помощь в определении того, следует ли мне рассматривать один из этих инструментов как часть моего проекта, или если нет, какие шаблоны проектирования и алгоритмы могут быть применимы к дизайн.
Понятно, что это потенциально проблема NP, и количество предметов (фактов), с которыми я буду иметь дело, может превышать 100+ за транзакцию с переоценкой, требуемой при каждом добавлении нового элемента.