Ich suche nach einem Radio Advertising Scheduling Algorithmus / Beispiel / Erfahrung

8

Ich habe versucht, ein bisschen Nachforschungen über das Folgende zu machen, ohne Glück. Ich dachte, ich würde hier fragen, falls jemand schon einmal darauf gestoßen ist.

Ich helfe einer von Freiwilligen betriebenen Radiostation bei ihren technologischen Anforderungen. Eines der wichtigsten Dinge, die auftauchen, ist, dass sie ihre Werbung programmatisch planen möchten.

Es gibt viele nette und komplexe Regel-Engines für Werbung, aber alles, was wir brauchen, ist etwas ziemlich Einfaches (zusammen mit jeder Erfahrung, an die es sich zu denken lohnt).

Ich möchte etwas in SQL schreiben, wenn es möglich ist, mit diesen Entitäten umzugehen. Im Idealfall, wenn jemand so etwas für andere Werbemittel (Web, etc.) geschrieben hat, wäre es sehr hilfreich.

Entitäten:

  • Anzeigen (bestehend aus einer Kategorie, Anzahl der Spiele pro Tag, Startdatum, Enddatum oder permanentes Spiel)
  • Anzeigenkategorie (Restaurant, Gesundheit, Lebensmittelgeschäft, etc.)

Um das Problem zu vereinfachen, wird dies eine elegante SQL-Anweisung sein. Hinkommen ...:)

Ich möchte in der Lage sein, eine Playlist pro Tag zu erstellen, indem ich die oben genannten zwei Entitäten verwende:

  • Es werden keine zwei Anzeigen derselben Kategorie innerhalb einer x Anzahl von Anzeigen voneinander wiedergegeben.
  • (nice to have) hohe Promotion-Anzeigen können geschoben werden

Derzeit sind keine "Anzeigenflächen" zum Ausfüllen vorhanden. Es gibt keine "Tageszeit" Überlegungen.

Wir stellen die Anzeigen für den Tag in Gang und durchlaufen sie zwischen Liedern / Shows usw. Wir wissen, wieviele pro Stunde wir füllen müssen, usw.

Irgendwelche Gedanken / Ideen / Links / Beispiele? Ich werde weiter schauen und hoffentlich auf etwas stoßen, anstatt es auf lange Sicht zu lernen.

    
Smooth Operator 05.06.2010, 02:14
quelle

2 Antworten

1

Sehr interessante Frage, SMO. Im Moment sieht es wie ein Constraint-Programmierproblem aus, weil Sie nicht nach einer optimalen Lösung suchen, sondern nur nach einer Lösung, die alle von Ihnen festgelegten Einschränkungen erfüllt. Als Reaktion auf diejenigen, die die Frage schließen wollten, würde ich sagen, dass sie die Constraint-Programmierung ein wenig überprüfen müssen. Es ist viel näher an stackoverflow, dass jede Operationen Forschungsstellen.

Schauen Sie sich die Programmierung und Planung von Constraints an - ich wette, Sie werden ein analoges Problem finden, das nicht süß ist!

Bitte halten Sie uns über Ihre Fortschritte auf dem Laufenden.

    
Grembo 05.06.2010, 02:39
quelle
0

Ignorieren Sie die T-SQL-Anfrage für den Moment, da dies wahrscheinlich nicht die beste Sprache ist, um dies zu schreiben ...

Einer meiner Lieblingsansätze für schwierige "Layout" -Probleme wie dieses ist Simulated Annealing . Es ist ein guter Ansatz, weil Sie nicht überlegen müssen, wie Sie das eigentliche Problem lösen können: Sie definieren nur, wie gut das aktuelle Layout ist (ein Score, wenn Sie wollen), und dann erlauben Sie zufällige Änderungen, die entweder zunehmen oder abnehmen diese Punktzahl. Über viele Iterationen verringern Sie allmählich die Wahrscheinlichkeit, zu einem schlechteren Ergebnis zu gelangen. Dieser "Simulated Annealing" -Ansatz reduziert die Wahrscheinlichkeit, in einem lokalen Minimum stecken zu bleiben.

In Ihrem Fall könnte die Bewertungsfunktion für ein bestimmtes Layout auf der Entfernung zur nächsten Anzeige in der gleichen Kategorie und der Entfernung zu einer anderen Anzeige der gleichen Serie basieren. Wenn Sie zu einem späteren Zeitpunkt Zeitpunkte haben, können Sie diese einfach zur Bewertungsfunktion hinzufügen.

Zunächst ordnen Sie die Anzeigen sequenziell, gleichmäßig oder zufällig innerhalb ihres Zeitfensters zu (egal, welches). Jetzt wählst du zwei Slots aus und überlegst, was mit der Punktzahl passiert, wenn du den Inhalt dieser beiden Slots wechselst. Wenn sich eine Anzeige außerhalb des erlaubten Bereichs bewegt, können Sie die Änderung sofort ablehnen. Wenn beide immer noch in Reichweite sind, bringt es Sie zu einer besseren Gesamtpunktzahl? Am Anfang nehmen Sie Änderungen zufällig, auch wenn sie es noch schlimmer machen, aber im Laufe der Zeit reduzieren Sie die Wahrscheinlichkeit, dass dies passiert, so dass Sie sich am Ende monoton zu einem besseren Ergebnis bewegen.

Einfach zu implementieren, einfach neue Regeln hinzuzufügen, die den Punktestand beeinflussen, können die Laufzeit leicht anpassen, um eine "gut genug" Antwort zu akzeptieren, ...

Ein anderer Ansatz wäre, einen genetischen Algorithmus zu verwenden, sehen Sie diese ähnliche Frage: Best-Fit-Scheduling-Algorithmus Dies ist wahrscheinlich schwieriger zu programmieren, wird aber wahrscheinlich schneller auf eine gute Antwort konvergieren.

    
Ian Mercer 05.06.2010 02:59
quelle