2010-06-05 19 views
8

Ho provato a fare un po 'di ricerca su ciò che segue senza fortuna. Ho pensato di chiedere qui nel caso in cui qualcuno lo abbia mai incontrato prima.Sto cercando un algoritmo di pianificazione pubblicitaria radiofonica/esempio/esperienza

Aiuto una stazione radio gestita da volontari con le loro esigenze tecnologiche. Una delle cose principali che sono venute fuori è che vorrebbero programmare la pubblicità a livello di programmazione.

Ci sono un sacco di motori di regole accurati e complessi là fuori per la pubblicità, ma tutto ciò di cui abbiamo bisogno è qualcosa di piuttosto semplice (insieme a qualsiasi esperienza che vale la pena di pensare).

Mi piacerebbe scrivere qualcosa in SQL, se possibile, per gestire queste entità. Idealmente, se qualcuno ha scritto qualcosa del genere per altri mezzi pubblicitari (web, ecc.) Sarebbe davvero d'aiuto.

Entità:

  • annunci
  • annuncio Categoria (che consistono di una categoria, # di giochi al giorno, la data, la data di fine o di gioco permanente START) (Ristorante, Salute, negozio di alimentari, ecc)

Per semplificare eccessivamente il problema, questa sarà un'elegante istruzione sql. Come arrivare ... :)

Mi piacerebbe essere in grado di generare una playlist al giorno utilizzando queste due entità in cui:

  • Non ci sono due annunci nella stessa categoria sono giocati entro x numero di annunci di ciascun altro.
  • (bello avere) annunci alta promozione può essere spinto

In questo momento, non ci sono "spazi pubblicitari" da riempire. Non ci sono considerazioni sul "momento della giornata".

Abbiamo la fila gli annunci per il giorno e passare attraverso di loro tra i brani/spettacoli, ecc Sappiamo quanti per ora dobbiamo compilare, ecc

tutti i pensieri/idee/link/Esempi? Continuerò a guardare e spero di imbattermi in qualcosa invece di impararlo a lungo.

+1

Sto votando per chiudere perché, anche se discutibilmente interessante, qui non sembra esserci un problema * di programmazione *. –

+4

certo che c'è, ha detto che vuole farlo in SQL. sembra un problema di programmazione per me. –

+0

Sto cercando di risolvere questo in SQL, stored procedure, ecc, se possibile. –

risposta

1

Domanda molto interessante, SMO. In questo momento sembra un problema di programmazione dei vincoli perché non stai cercando una soluzione ottimale, solo una che soddisfi tutti i vincoli che hai specificato. In risposta a coloro che volevano chiudere la domanda, direi che devono controllare un po 'la programmazione dei vincoli. È molto più vicino allo stackoverflow che qualsiasi sito di ricerca operativa.

Controlla la programmazione e la programmazione dei vincoli - Scommetto che troverai un problema analogo molto dolce!

Tienici informati sui tuoi progressi, per favore.

+0

Grazie, la programmazione dei vincoli suona come qualcosa che posso leggere di sicuro .. http://www.google.ca/search?hl=it&safe=off&client=safari&rls=en&q=constraint+programming+for+scheduling&aq=f&aqi=&aql= & oq = & gs_rfai = Non sono un fan di ricodificare le cose quando me ne rendo conto. Apprezzalo! –

+0

Hai capito SMO - questo succede spesso. Facci un favore e aggiungi un tag di programmazione vincolo alla tua domanda. – Grembo

+0

Cheers, penso che questo potrebbe essere un buon modo per andare giù ... c'è un po 'di lavoro in anticipo per familiarizzare con i concetti e penso di aver trovato una buona libreria Java che sembra abbastanza diretta. Sto pensando di provare a fallire intenzionalmente e scriverlo con sql la prima volta per imparare i punti deboli ... cosa ne pensi? Grazie! –

0

Ignorando la richiesta di T-SQL per il momento dato che è improbabile che sia il miglior linguaggio per scrivere questo in ...

Uno dei miei preferiti approcci ai problemi duri 'Layout' come questo è Simulated Annealing. È un buon approccio perché non hai bisogno di pensare a COME risolvere il vero problema: tutto ciò che definisci è una misura di quanto è buono il layout corrente (un punteggio se vuoi) e quindi permetti cambiamenti casuali che aumentano o diminuiscono quel punteggio.In molte iterazioni si riduce gradualmente la probabilità di passare a un punteggio peggiore. Questo approccio di "ricottura simulata" riduce la probabilità di rimanere bloccati al minimo locale.

Quindi nel tuo caso la funzione di calcolo del punteggio per un determinato layout potrebbe essere basata sulla distanza dal prossimo annuncio nella stessa categoria e sulla distanza di un altro annuncio della stessa serie. Se in seguito hai delle considerazioni sull'orario del giorno, puoi facilmente aggiungerle alla funzione Punteggio.

Inizialmente si assegnano gli annunci in sequenza, in modo uniforme o casuale all'interno della loro finestra temporale (non importa quale). Ora scegli due slot e considera cosa succede al punteggio quando cambi il contenuto di quei due slot. Se uno degli annunci esce dal range consentito puoi rifiutare immediatamente il cambiamento. Se entrambi sono ancora a portata, ti portano a un punteggio complessivo migliore? Inizialmente si prendono le modifiche casualmente anche se peggiorano le cose, ma con il tempo si riduce la probabilità che ciò accada in modo che alla fine si stia muovendo monotonicamente verso un punteggio migliore.

facile da implementare, facile aggiungere nuove 'regole' che influenzano il punteggio, possibile regolare facilmente run-time di accettare una risposta 'abbastanza buono', ...

Un altro approccio sarebbe quello di utilizzare un algoritmo genetico , vedi questa domanda simile: Best Fit Scheduling Algorithm questo è probabilmente più difficile da programmare ma probabilmente convergerà più rapidamente su una buona risposta.

+0

-1 per martellare un chiodo con un carrello elevatore –

+0

È un martello in termini di utilizzo della CPU, ma un piccolo martello in termini di quanto codice serve per produrre una risposta "abbastanza buona". È anche una soluzione * molto * flessibile in termini di nuove regole aziendali (che sicuramente arriveranno, ad esempio l'inserzionista Y preferisce la mattina, ...). Ha anche la capacità di trovare una soluzione abbastanza buona anche quando non esiste una soluzione perfetta (ad esempio troppi inserzionisti in una particolare categoria oggi). –

+0

Questa sembra una bella idea. Per quanto riguarda il tempo e le risorse del volontario che ho a disposizione, volevo usare sql perché non richiede di legare o capire alcuna nuova tecnologia.Ci sono pacchetti software/librerie open source che potrebbero aiutare ad allontanare parte della reinvenzione della ruota? –

Problemi correlati