Попробованное проведение небольшого количества исследования на следующем без удачи. Мысль, которую я спросил бы здесь в случае, если кто-то столкнулся с нею прежде.
Я помогаю управляемой волонтером радиостанции с их технологическими потребностями. Одно из главного, которое подошло, они хотели бы запланировать свою рекламу программно.
Существует много аккуратных и сложных механизмов правила там для рекламы, но все, в чем мы нуждаемся, является чем-то довольно простым (наряду с любым опытом, это стоит думать о).
Я хотел бы записать что-то в SQL, если это возможно, для контакта с этими объектами. Идеально, если бы кто-то записал что-то вроде этого для других средств рекламы (сеть, и т.д.) это было бы действительно полезно.
Объекты:
Для упрощения проблемы это будет изящным sql оператором. Получение там... :)
Я хотел бы смочь генерировать плей-лист в день с помощью вышеупомянутых двух объектов где:
В это время нет никаких "слотов рекламы" для заполнения. Нет никаких соображений "времени суток".
Мы стоим в очереди реклама в течение дня и проходим их между песнями/шоу и т.д. Мы знаем, сколько в час мы должны заполнить и т.д.
Какие-либо мысли/идеи/ссылки/примеры? Я собираюсь продолжить смотреть и надо надеяться сталкиваться с чем-то вместо того, чтобы изучить это длинный путь.
Очень интересный вопрос, SMO. Сейчас это выглядит как проблема программирования ограничений, потому что вы ищете не оптимальное решение, а только такое, которое удовлетворяет всем указанным вами ограничениям. В ответ тем, кто хотел закрыть вопрос, я бы сказал, что им нужно немного изучить программирование с ограничениями. Это намного ближе к stackoverflow, чем любые сайты по исследованию операций.
Изучите программирование с ограничениями и планирование - готов поспорить, вы найдете аналогичную задачу слишком сладкой!
Пожалуйста, держите нас в курсе вашего прогресса.
Игнорирование запроса T-SQL на данный момент, поскольку это вряд ли лучший язык для написания этого ...
Один из моих любимых подходов к таким сложным задачам «компоновки», как этот это Simulated Annealing . Это хороший подход, потому что вам не нужно думать, КАК решить реальную проблему: все, что вы определяете, - это мера того, насколько хорош текущий макет (оценка, если хотите), а затем вы разрешаете случайные изменения, которые либо увеличиваются, либо уменьшаются. этот счет. На протяжении многих итераций вы постепенно уменьшаете вероятность перехода к худшему результату. Такой подход «имитационного отжига» снижает вероятность застревания в локальном минимуме.
Таким образом, в вашем случае функция оценки для данного макета может основываться на расстоянии до следующего объявления в той же категории и расстоянии до другого объявления той же серии. Если позже у вас возникнут соображения по времени суток, вы можете легко добавить их в функцию оценки.
Первоначально вы распределяете рекламные объявления последовательно, равномерно или случайным образом в пределах их временного окна (не имеет значения, какое именно). Теперь вы выбираете два слота и рассматриваете, что происходит со счетом, когда вы меняете содержимое этих двух слотов. Если какое-либо объявление выходит за пределы допустимого диапазона, вы можете немедленно отклонить изменение. Если оба все еще в пределах досягаемости, приведет ли это к лучшему общему баллу? Первоначально вы вносите изменения случайным образом, даже если они ухудшают ситуацию, но со временем вы уменьшаете вероятность того, что это произойдет, так что к концу вы монотонно продвигаетесь к лучшему результату.
Легко реализовать, легко добавить новые «правила», которые влияют на оценку, можно легко настроить время выполнения, чтобы принять «достаточно хороший» ответ, ...
Другой подход - использование генетического алгоритма, см. этот похожий вопрос: Best Fit Scheduling Algorithm это, вероятно, сложнее запрограммировать, но, вероятно, быстрее сойдется на хорошем ответе.