2009-02-20 7 views
16

Sono nel bel mezzo del tentativo di definire i requisiti di un cliente per un motore di determinazione dei prezzi in un ambiente di vendita al dettaglio. Abbiamo definito il motore dei prezzi come operativo su una serie di regole di determinazione del prezzo che stabiliscono nuovi punti di prezzo per gli articoli acquistati in base agli articoli già presenti nel carrello.Schemi e algoritmi di progettazione per applicare regole ai fatti

Una semplice regola del prezzo potrebbe essere OTTENERE UNA CAMICIA SCONTO DEL 40%. Una regola più complessa potrebbe essere OTTENERE UNA CAMICIA GRATUITA QUANDO ACQUISTA 2 PANTALONI E SPENDERE ALMENO 30 $.

La prassi generale dell'industria per l'applicazione di queste regole sembra essere il miglior prezzo finale per il cliente, ma è emerso che potrebbe esserci bisogno di un'opzione di classificazione e un'opzione di impilamento.

Classifica consentirà una regola che altrimenti perderà per vincere. L'impilamento consente di vincere più regole.

Ho esaminato molti dei post qui su SO per quanto riguarda i motori di regole e ho bisogno di aiuto per determinare se dovrei guardare uno di questi strumenti come parte del mio progetto o se no quali schemi di progettazione e algoritmi potrebbero essere applicabili a il design.

È chiaro che questo è potenzialmente un problema di NP e il numero di elementi (fatti) con i quali avrò a che fare potrebbe superare i 100+ per transazione con necessità di repricing ogni volta che viene aggiunto un nuovo articolo.

+1

Curioso quale metodo hai fatto a finire andare con? È stata la scelta giusta? –

+0

Abbiamo creato il nostro motore di regole che ha finito per utilizzare una varietà di tecniche per risolvere il problema. Non ho informazioni da condividere qui perché questo è stato risolto e implementato più di 7 anni fa. Abbiamo finito per utilizzare una sorta di approccio di localizzazione e applicare una ponderazione alle localizzazioni. Abbiamo quindi utilizzato un tipo di algoritmo di routing meno costoso per determinare la migliore combinazione di offerte di prezzo. Il lavoro finito si è rivelato uno dei miei progetti preferiti: lo abbiamo scritto come un modulo indipendente che potrebbe essere utilizzato in altri luoghi. Regole + set di input -> set di output a prezzo prefissato. – Bill

risposta

2

Un motore di regole è molto adatto. Se il motore delle regole è affidabile, si inserisce nel resto della tua architettura/applicazione ed è necessario per una funzionalità di base della tua applicazione.

Se il motore di regole è solo una piccola parte dell'applicazione o anche peggio: è un codice, che non è lo stesso linguaggio di programmazione del resto dell'applicazione ... quindi è necessario riconsiderare. Ogni parte dell'applicazione, che è esterna al tuo applicaton principale (anche il database è esterno a un'applicazione java) è un rischio.

Quindi ci sono due possibilità: programmare un motore di regole semplice da solo o utilizzare la strategia o il modello di stato.