2010-06-05 2 views
8

Пробовал немного исследовать следующее, не повезло. Думал, что я попрошу здесь, если кто-то встретит это раньше.Я ищу алгоритм планирования рассылки радиоприемника/пример/опыт

Я помогаю волонтерской радиостанции с их технологическими потребностями. Одна из главных вещей, которые возникли, это то, что они хотели бы запланировать свою рекламу программно.

Существует много опрятных и сложных правил для рекламы, но все, что нам нужно, это что-то очень простое (наряду с любым опытом, о котором стоит подумать).

Я хотел бы написать что-то в SQL, если возможно, иметь дело с этими объектами. В идеале, если кто-то написал что-то подобное для других рекламных носителей (веб и т. Д.), Это было бы очень полезно.

Сущность:

  • Ads (состоящий из категории # игр в день, дата начала, дата окончания или постоянное воспроизведения) Ad
  • Категории (рестораны, здоровье, Продовольственный магазин и т.д.)

Чтобы упростить задачу, это будет изящная инструкция sql. Как там ... :)

Я хотел бы иметь возможность создавать список воспроизведения в день с использованием вышеуказанных двух объектов, где:

  • Нет двух объявлений в одной и той же категории играются в х количество объявлений друг друга.
  • (приятно иметь) объявления высокого продвижения может быть выдвинут

В настоящее время нет «рекламного места» для заполнения. Нет соображений «времени суток».

Мы очереди объявлений в течение дня и пройти через них между песнями/шоу и т.д. Мы знаем, сколько за час мы должны заполнить и т.д.

Любые мысли/идеи/ссылки/примеры? Я собираюсь продолжать искать и, надеюсь, что-то натолкнуться, а не изучать его до конца.

+1

Я голосую, чтобы закрыть, потому что, хотя это, возможно, интересно, здесь не проблема * программирования *. –

+4

уверен, что есть, он сказал, что хочет сделать это в SQL. звучит как проблема программирования для меня. –

+0

Я ищу, чтобы решить это в SQL, хранимой процедуре и т. Д., Если это возможно. –

ответ

1

Очень интересный вопрос, SMO. Прямо сейчас это похоже на проблему программирования ограничений, потому что вы не ищете оптимальное решение, просто такое, которое удовлетворяет всем указанным ограничениям. В ответ на тех, кто хотел закрыть вопрос, я бы сказал, что им нужно немного проверить программирование ограничений. Это гораздо ближе к stackoverflow, чем любые сайты исследований операций.

Посмотрите на программирование ограничения и планирование - я готов поспорить, вы найдете аналогичную проблему, чтобы сделать сладкий!

Держите нас в курсе событий, пожалуйста.

+0

Спасибо, программирование ограничения звучит как-то, что я могу прочитать наверняка. Http://www.google.ca/search?hl=ru&safe=off&client=safari&rls=ru&q=constraint+programming+for+scheduling&aq=f&aqi=&aql= & oq = & gs_rfai = Я не поклонник перекодировки вещей, когда понимаю. Ценить это! –

+0

У вас это SMO - это часто появляется. Сделайте нам одолжение и добавьте тег программирования ограничения на ваш вопрос. – Grembo

+0

Приветствия, я думаю, что это может быть хорошим путем, чтобы спуститься ... есть немного работы по ознакомлению с концепциями, и я думаю, что нашел хорошую библиотеку Java, которая кажется достаточно прямой. Я подумываю о том, чтобы попытаться умышленно провалиться и написать его с помощью sql в первый раз, чтобы узнать болевые точки ... что вы думаете? Благодаря! –

0

Игнорирование запроса на T-SQL на данный момент, так что вряд ли будет лучший язык, чтобы написать это в ...

Один из моих любимых подходов к решению проблемы Tough «Формат», как это Simulated Annealing. Это хороший подход, потому что вам не нужно думать, КАК решить реальную проблему: все, что вы определяете, является мерой того, насколько хорош текущий макет (оценка, если вы это сделаете), а затем вы разрешаете случайные изменения, которые либо увеличиваются, либо уменьшаются это оценка.По многим итерациям вы постепенно уменьшаете вероятность перехода к худшему счету. Этот подход «имитированный отжиг» снижает вероятность застревания в локальном минимуме.

Так что в вашем случае функция подсчета очков для данного макета может основываться на расстоянии до следующего объявления в той же категории и расстоянии до другого объявления той же серии. Если у вас возникнут соображения со временем, вы можете легко добавить их в функцию оценки.

Первоначально вы выделяете рекламные объявления последовательно, равномерно или произвольно в пределах своего временного окна (на самом деле не имеет значения, какой из них). Теперь вы выбираете два слота и рассматриваете, что происходит со счетом, когда вы переключаете содержимое этих двух слотов. Если любое объявление выходит из разрешенного диапазона, вы можете немедленно отклонить это изменение. Если оба они все еще находятся в радиусе действия, это приведет вас к лучшей общей оценке? Первоначально вы произвольно меняете изменения, даже если они делают это хуже, но со временем вы уменьшаете вероятность этого, так что к концу вы монотонно двигаетесь к лучшему счету.

Простота внедрения, легко добавлять новые «правила», которые влияют на счет, можно легко корректировать во время выполнения, чтобы принять «достаточно хороший» ответ ...

Другой подход заключается в использовании генетического алгоритма , см. этот похожий вопрос: Best Fit Scheduling Algorithm это, вероятно, сложнее программировать, но, скорее всего, сходится быстрее на хороший ответ.

+0

-1 для забивания гвоздя с помощью вилочного погрузчика –

+0

Это кувалда с точки зрения использования процессора, но небольшой молоток с точки зрения количества кода для получения «достаточно хорошего» ответа. Это также решение, * очень гибкое с точки зрения новых бизнес-правил (что, безусловно, произойдет, например, рекламодатель Y предпочитает утро, ...). Он также имеет возможность найти достаточно хорошее решение, даже если не существует идеального решения (например, слишком много рекламодателей в одной конкретной категории сегодня). –

+0

Это выглядит как крутая идея. Для волонтерского времени и ресурсов, которые у меня имеются, я хотел использовать sql, потому что он не требует привязки или определения какой-либо новой технологии.Существуют ли какие-либо программные пакеты/библиотеки с открытым исходным кодом, которые могли бы помочь абстрагировать некоторые из переосмысления колеса? –