Алгоритм набора добивок
Добавлено: Ср ноя 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 последующих! И так далее.
Представим, что нам надо набрать блок размером в 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 последующих! И так далее.