Алгоритм набора добивок

Часто задаваемые вопросы

Модераторы: Dark-Horse, Wlad

Алгоритм набора добивок

Сообщение Wlad » Ср ноя 22, 2006 12:04 pm

Вопрос: как набираются добивки

Представим, что нам надо набрать блок размером в 2 минуты.
Есть набор из добивок в 20 штук и продолжительностью от 20 секунд до 1.5 минуты.
Мы указываем кол-во добивок в 4 штуки в блок.
Программа при инициировании набора добивок начинает полный перебор всех вариантов добивок.
От 1 штуки в блок до 4-х.
Но, дабы избежать зацикленности (всё-таки при количестве добивок в 200 штук вариантово будет 200 в 4й степени... 1 триллион 600 миллионов ), этот алгоритм прерывается через 5 секунд после старта.
В результате получаем, что чем быстрее процессор - тем больше будет перебрано вариантов. И чем точнее указан параметр кол-во добивок, тем быстрее перебор будет закончен.
Теперь...
при наборе учитывается "минимальное переполнение блока".
То есть если текущая комбинация меньше разрешенного переполнения, то она принимается как "правильная" и эта комбинация запоминается.
Но прежде чем запомнить её - происходит проверка на предыдущий правильный набор. Если новый больше - запоминать его смысла нет.

По результатам полного перебора (или прерывания по времени) берется наилучший результат перебора.
Вот, собственно, в общих чертах алгоритм набора.

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

Вопрос:
все вроде бы правильно и понятно!
но все же при всех вроде бы правильных параметрах блок не добивается добивками.

кол-во добивок в базе 4, длина от 1:30 до 1:50
размер блока 5 мин
макс. кол-во добивок в блоке в студии 3
запрет повторения в блоках 1
в блоке занято рекламой 1:45
в итоге блок сформирован 3:15 и вылезет на середину московского блока.
где и что не так я делаю?

что происходит.
1-й блок (текущий) берутся добивки 1,2,3... (чтобы перекрыть 3.15 надо 3 добивки)
Запрет - 1 блок.
Во второй блок (следующий) попадает только 1 добивка. Потому что запрет не дает взять 1,2,3... И остается только 4-я. Потому что запрет на повторение в 1 блоке, то есть следующем (аналог - пропустить 1 ход)
Программа НЕ ВИДИТ тех 3х добивок. И видит только 4-ю... Получается, что ей НЕ ИЗ ЧЕГО выбирать и добивать блок.
Что надо сделать: Добавь еще несколько добивок.
PS. Параметр «Запрет 1 блок» распространяется на текущий (по умолчанию) и следующий за ним! Соответственно «Запрет на 2 блока» на текущий и 2 последующих! И так далее.
Люди редко добиваются успеха, если заняты тем, что не доставляет им удовольствия. /Дейл Карнеги/
Wlad
Site Admin
 
Сообщений: 2569
Зарегистрирован: Пт сен 23, 2005 2:02 pm
Откуда: Запорожье

Вернуться в FAQ

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

cron