Ich bin dabei, die Anforderungen eines Kunden nach einer Preisfindungs-Engine in einer Einzelhandelsumgebung zu ermitteln. Wir haben die Pricing-Engine so definiert, dass sie nach einer Reihe von Preisregeln arbeitet, die neue Preispunkte für gekaufte Artikel basierend auf vorhandenen Artikeln, die sich bereits im Warenkorb befinden, festlegen.Entwurfsmuster und Algorithmen zum Anwenden von Regeln auf Fakten
Eine einfache Preisregel könnte sein HEMDEN 40% OFF. Eine komplexere Regel könnte sein ERHALTEN SIE EIN FREIES SHIRT, WENN SIE 2 HOSEN KAUFEN UND MINDESTENS $ 30 SPENDEN.
Die allgemeine Praxis für die Anwendung dieser Regeln scheint der endgültige Bestpreis für den Kunden zu sein, aber es hat sich gezeigt, dass es möglicherweise eine Ranking-Option sowie eine Stapeloption sein muss.
Ranking wird eine Regel erlauben, die sonst verlieren würde zu gewinnen. Durch das Stapeln können mehrere Regeln gewonnen werden.
Ich habe viele der Beiträge hier auf SO in Bezug auf Regel-Engines überprüft und ich brauche Hilfe bei der Bestimmung, ob ich eines dieser Tools als Teil meines Designs betrachten sollte oder wenn nicht, welche Designmuster und Algorithmen anwendbar sein könnten das Design.
Es ist klar, dass dies möglicherweise ein NP-Problem ist, und die Anzahl der Artikel (Fakten), die ich behandeln werde, könnte mehr als 100 pro Transaktion mit Repricing jedes Mal, wenn ein neues Element hinzugefügt wird.
Neugierig, welche Methode haben Sie am Ende gehen mit? War es die richtige Wahl? –
Wir haben unsere eigene Regel-Engine erstellt, die eine Vielzahl von Techniken zur Lösung des Problems verwendet hat. Ich habe hier keine Informationen, die ich aus dem Stegreif teilen könnte, da dies vor über 7 Jahren gelöst und umgesetzt wurde. Wir verwendeten einen Lokalisierungsansatz und gewichteten die Lokalisierungen. Wir haben dann einen Algorithmus mit der geringsten Kostenverteilung verwendet, um die beste Kombination von Preisabschlüssen zu ermitteln. Die fertige Arbeit stellte sich als eines meiner Lieblingsprojekte heraus - wir schrieben es als eigenständiges Modul, das auch an anderen Orten verwendet werden konnte. Regeln + Eingabesatz -> Preisgesteuerter Ausgabesatz. – Bill