2010-06-05 11 views
8

Próbowałem robić trochę badań na następujące tematy bez powodzenia. Pomyślałem, że zapytam tutaj, na wypadek, gdyby ktoś go wcześniej spotkał.Szukam algorytmu szeregowania reklam radiowych/przykład/doświadczenie

Pomagam w prowadzeniu wolontariatu z potrzebami technologicznymi. Jedną z głównych rzeczy, które pojawiły się, jest to, że chcą zaplanować swoje reklamy programowo.

Istnieje wiele zgrabnych i złożonych mechanizmów reguł reklamowych, ale wszystko, czego potrzebujemy, to coś bardzo prostego (wraz z każdym doświadczeniem, o którym warto pomyśleć).

Chciałbym napisać coś w języku SQL, jeśli to możliwe, aby poradzić sobie z tymi jednostkami. Idealnie, gdyby ktoś napisał coś takiego na innych nośnikach reklamowych (w sieci itp.), Byłby naprawdę pomocny.

podmioty:

  • Ads
  • Ad kategorii (składających się z kategorii, liczby sztuk dziennie, datę, datę zakończenia lub stałe odtwarzanie start) (Restauracja, zdrowie, sklep spożywczy, itd.)

Aby uprościć problem, będzie to elegancki komunikat SQL. Dotarcie tam ... :)

Chciałbym być w stanie wygenerować playlistę dziennie stosując powyższe dwa podmioty gdzie:

  • żadne dwie reklamy w tej samej kategorii są odtwarzane w ciągu x liczba ogłoszeń siebie nawzajem.
  • (miło mieć) reklamy wysokiej promocyjne można wcisnąć

W tej chwili nie ma „boksy reklamowe” do wypełnienia. Nie ma kwestii "pory dnia".

Mamy kolejce reklam na dzień i przejść przez nich między utworami/pokazy itp Wiemy, ile za godzinę mamy do wypełnienia, itp

wszelkie myśli/pomysły/linki/przykłady? Będę dalej patrzył i mam nadzieję, że natknę się na coś, zamiast uczyć się go długo.

+1

Głosuję, aby zamknąć, ponieważ, choć prawdopodobnie interesujące, nie ma tutaj problemu * programistycznego *. –

+4

Oczywiście, że jest, powiedział, że chce to zrobić w SQL. brzmi jak problem programowania. –

+0

Szukam rozwiązania w SQL, procedura przechowywana itp., Jeśli to możliwe. –

Odpowiedz

1

Bardzo interesujące pytanie, SMO. Teraz wygląda na problem z programowaniem ograniczeń, ponieważ nie szukasz optymalnego rozwiązania, tylko takiego, które spełnia wszystkie określone ograniczenia. W odpowiedzi na tych, którzy chcieli zamknąć pytanie, powiedziałbym, że muszą trochę sprawdzić programowanie więzów. Jest znacznie bliżej do stackoverflow, że wszelkie witryny badań operacyjnych.

Sprawdź programowanie i harmonogramowanie ograniczeń - Założę się, że znajdziesz analogiczny problem, który jest słodki!

Wysyłajcie nam informacje o swoich postępach, proszę.

+0

Dzięki, programowanie z ograniczeniami brzmi jak coś, co mogę przeczytać na pewno .. http://www.google.ca/search?hl=en&safe=off&client=safari&rls=en&q=constraint+programming+for+scheduling&aq=f&aqi=&aql= & oq = & gs_rfai = Nie jestem fanem ponownego kodowania rzeczy, kiedy zdaję sobie z tego sprawę. Doceniam to! –

+0

Masz to SMO - często pojawia się. Zrób nam przysługę i dodaj do swojego pytania tag programowania ograniczającego. – Grembo

+0

Pozdrawiam, myślę, że to może być dobra droga do zejścia ... jest trochę wstępnej pracy nad poznaniem koncepcji i myślę, że znalazłem dobrą bibliotekę Java, która wydaje się dość prosta. Zastanawiam się, próbując celowo zawieść i napisać to za pomocą SQL po raz pierwszy, aby nauczyć się punktów bólu ... co o tym myślisz? Dzięki! –

0

Ignorując prośby T-SQL dla tej chwili, ponieważ to jest mało prawdopodobne, aby być najlepszym językiem napisać to w ...

Jeden z moich ulubionych podchodzi do problemów trudnych „Layout” jak to Simulated Annealing. To dobre podejście, ponieważ nie musisz myśleć W JAKI SPOSÓB rozwiązać rzeczywisty problem: wszystko, co zdefiniujesz, jest miarą tego, jak dobry jest bieżący układ (wynik, jeśli chcesz), a następnie pozwalasz na losowe zmiany, które albo zwiększają się, albo zmniejszają. ten wynik.W wielu iteracjach stopniowo zmniejszasz prawdopodobieństwo przejścia na gorszy wynik. To podejście "symulowanego wyżarzania" zmniejsza prawdopodobieństwo utknięcia w lokalnym minimum.

Tak więc w twoim przypadku funkcja punktowania dla danego układu może być oparta na odległości do następnej reklamy w tej samej kategorii i odległości do innej reklamy z tej samej serii. Jeśli później masz czas na rozważania, możesz łatwo dodać je do funkcji oceny.

Początkowo przydzielasz reklamy sekwencyjnie, równomiernie lub losowo w obrębie ich okna czasowego (tak naprawdę nie ma znaczenia, które). Teraz wybierasz dwa miejsca i zastanawiasz się, co stanie się z wynikiem, gdy zmienisz zawartość tych dwóch slotów. Jeśli którekolwiek z reklam przekroczy dopuszczalny zakres, możesz natychmiast odrzucić zmianę. Jeśli oba są nadal w zasięgu, czy to przenosi cię na lepszy ogólny wynik? Początkowo zmieniasz losowo, nawet jeśli gorzej, ale z biegiem czasu zmniejszasz prawdopodobieństwo, że tak się dzieje, że na koniec poruszasz się monotonnie w kierunku lepszego wyniku.

łatwe do wdrożenia, łatwe dodawanie nowych „zasad”, które wpływają na wynik, można łatwo dostosować run-time do zaakceptowania „wystarczająco dobre” odpowiedź ...

Innym rozwiązaniem byłoby wykorzystanie algorytmu genetycznego , zobacz to podobne pytanie: Best Fit Scheduling Algorithm jest to prawdopodobnie trudniejsze do zaprogramowania, ale prawdopodobnie będzie się szybciej zbierać z dobrą odpowiedzią.

+0

-1 za wbicie gwoździa za pomocą wózka widłowego –

+0

To młotek pod względem wykorzystania procesora, ale mały młotek pod względem ilości kodu wystarczy, aby uzyskać odpowiedź "wystarczająco dobrą". Jest to również rozwiązanie, które jest * bardzo * elastyczne pod względem nowych reguł biznesowych (które na pewno nadejdzie, np. Reklamodawca Y preferuje poranki, ...). Ma również możliwość znalezienia rozwiązania wystarczająco dobrego nawet wtedy, gdy nie istnieje idealne rozwiązanie (na przykład zbyt wielu reklamodawców w jednej konkretnej kategorii). –

+0

To wygląda na fajny pomysł. Dla czasu i zasobów wolontariusza, które mam dostępne, chciałem użyć sql, ponieważ nie wymaga on wiązania ani nie wynajduje żadnej nowej technologii.Czy istnieją jakieś pakiety oprogramowania/biblioteki open source, które mogą pomóc w odretwieniu niektórych odkryć koła? –