Estoy tratando de determinar los requisitos de un cliente para un motor de fijación de precios en un entorno minorista. Hemos definido el motor de fijación de precios como operando en un conjunto de reglas de fijación de precios que establecen nuevos puntos de precio para los artículos comprados basados en los artículos existentes que ya están en el carrito de compras.Patrones de diseño y algoritmos para aplicar reglas a los hechos
Una regla de precio simple podría ser OBTENER UNA CAMISETA 40% DE DESCUENTO. Una regla más compleja podría ser OBTENGA UNA CAMISA GRATUITA AL COMPRAR 2 PANTALONES Y GASTAR AL MENOS $ 30.
La práctica general de la industria para la aplicación de estas normas parece ser definitiva mejor precio para el cliente, pero ha llegado que podría existir la necesidad de ser una opción de clasificación, así como una opción de apilamiento.
Clasificación permitirá una regla que de lo contrario perderá salir a ganar. El apilamiento permitiría ganar múltiples reglas.
He revisado muchas de las publicaciones aquí en SO sobre motores de reglas y necesito ayuda para determinar si debería mirar una de estas herramientas como parte de mi diseño o si no qué patrones de diseño y algoritmos podrían ser aplicables a el diseño.
Está claro que esto es potencialmente un problema de NP, y la cantidad de elementos (hechos) con los que trataré podría exceder de 100+ por transacción con recargos necesarios cada vez que se agrega un nuevo artículo.
curioso método que acabaste con ir? ¿Fue la elección correcta? –
Creamos nuestro propio motor de reglas que terminó usando una variedad de técnicas para resolver el problema. No tengo información para compartir aquí, ya que esto se resolvió e implementó hace más de 7 años. Terminamos usando algún tipo de enfoque de localización y aplicando una ponderación a las localizaciones. Luego usamos un tipo de algoritmo de enrutamiento de menor costo para determinar la mejor combinación de ofertas de precio. El trabajo terminado resultó ser uno de mis proyectos favoritos, lo escribimos como un módulo independiente que podría usarse en otros lugares. Reglas + conjunto de entrada -> conjunto de salida con precio. – Bill