|
|
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
Всем привет! :) Давно уже я не заходил на этот форум... У меня есть нетривиальная задача, подобную которой уже возможно кто-то решал, и поможет решить эту :). Либо просто предложит хорошее решение. Можно макрос, либо просто логику, а макрос я напишу сам. Задача: Есть 80 вопросов разных уровней сложности (от 1 до 5). Каждый из этих вопросов относится к определенной категории (16). Необходимо сформировать 20 анкет по 10 вопросов разных категорий в каждой таким образом, чтобы средний вес (сложность) вопросов была примерно одинаковая для всех анкет. Заранее благодарю! :) Файл во вложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 14:08 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
MaximuS_G, по-моему все достаточно просто: 5 уровней, 10 вопросов - наиболее логично, чтобы в каждой анкете было по два вопроса каждого уровня.. складываем все вопросы в массив , допустим категорий - arr(1 to 16) элементами которого будут, в свою очередь, двумерные массивы: r(1 to 5,0 to 99) - т.е. по строкам уровни сложности, по столбцам - номера вопросов . в нулевых элементах отмечаем количество вопросов данной категории данного уровня. создаем копию всего массива. собъявляем сигнальный массив номеров категорий -arr_i(1 to 16) случайным образом выбираем категорию ищем вопрос 5го уровня ( два раза), если находим, то удаляем его из массива, перенося в результат если не находим, то идем в другую категорию - вправо или влево, - все равно прописываем в сигнальный массив единицу по соответств адресу снова случайно берем категорию - от1 до 15, пробегаемся по сигнальному массиву и пишем единицу в 15й нулевой элемент ищем вопрос 4го уровня... и т.д. по заполнении каждой анкеты переобъявляем сигнальный массив когда все вопросы кончатся, из копии восстанавливаем массив вопросов( а можно это сделать и коллекцией) по окончании, для пущего прикола, перемешиваем вопросы в анкетах.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 15:22 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
_slan_, для простоты реализации - зарядить два цикла по уровням от1 до 5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 15:25 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
_slan_, спасибо что заглянули! :) Не совсем понял Ваше решение... скажите, оно учитывает тот факт, что для одной категории может вообщем не быть вопросов определенного уровня, а для другой могут быть вопросы все одного уровня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 15:43 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
Мое решение такое (но длинное): 1. Перебираем все комбинации по 10 из 80 (больше триллиона!) 2. Отбираем комбинации, в которых не повторяются категории. 3. Из полученных комбинаций отбираем наиболее равные по весу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 15:53 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
MaximuS_G, задача про рюкзак если примитивно то средний внутрикатегорийный вес вопроса 2,79. Значит общий вес рюкзака около 55,75 Вес каждого элемента известен. Наполните рюкзак 20 элементами не превышая вес в 55,75 Повторить алгоритм N раз 1. Начинаете спиральным спуском набирать товары из каждой группы. 2. Оцениваете размер получившейся группы в весе, вычитаете из ожидаемого веса (55,75) 3. выборочно добиваете вес до 55,75 (допустим через N групп) 4. Увеличиваете стартовое значение спирального спуска на 1 следующий N p.s. можно доработать алгоритм для работы со средневзвешенным значением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 17:08 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
неверно прочитал, что нужно 10 позиций тогда ващпе проще все тупо спиральный спуск ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 17:10 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
MaximuS_G...сформировать 20 анкет по 10 вопросов разных категорий...сложность...примерно одинаковая Реализовал в VBA, на массивах, с элементом случайности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2011, 19:18 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
MaximuS_G_slan_, спасибо что заглянули! :) Не совсем понял Ваше решение... скажите, оно учитывает тот факт, что для одной категории может вообщем не быть вопросов определенного уровня, а для другой могут быть вопросы все одного уровня? не совсем.. могут быть патовые ситуации. наверное.. :) надо эксперементировать.. но перебор вариантов - это явно перебор :) а почему не придумать нужные вопросы? чтобы было равномерное распределение по категориям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 11:41 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
вот, что-то получилось.. работает мгновенно, суммарная сложность одинакова для каждого билета(подтверждается формулами справа), а уж подходит или нет - судите сами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 15:40 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
Shamanus , спасибо что заглянули! Сын вождя, _slan_ Спасибо за реализацию задачи кодом :) Если не сложно, можно Ваши алгоритмы словами?... Честно, нет желания в коде разбираться. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 22:04 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
mможно Ваши алгоритмы словами? В основе алгоритма две функции линейной зависимости: 1. Категории от номера вопроса в анкете 2. Сложности от номера вопроса в анкете Категория считается для каждого вопроса анкеты. Если зависимость категории один ко многим, то включается элемент случайности. Сложность считается для каждой анкеты, с последующим случайной выборкой для каждого вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 23:21 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
Данную задачу интересно решить формулами, без использования макросов. По моему получилось, проверяйте. Основная используемая функция - СЛУЧМЕЖДУ, обновить перестановку - нажать F9 Сложность анкет можно изменять, задав необходимое значение в ячейке J9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 01:31 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
m Shamanus , спасибо что заглянули! Сын вождя, _slan_ Спасибо за реализацию задачи кодом :) Если не сложно, можно Ваши алгоритмы словами?... Честно, нет желания в коде разбираться. Заранее спасибо! еще раз? :) я уже излагал.. нет желания - нет желания.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 08:33 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
Михаил Ч. , спасибо большое за Ваше интересное решение формулами! :) Всем спасибо за участие! Удачи! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 10:23 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
авторДанную задачу интересно решить формулами, без использования макросов. По моему получилось, проверяйте. Основная используемая функция - СЛУЧМЕЖДУ, обновить перестановку - нажать F9 Сложность анкет можно изменять, задав необходимое значение в ячейке J9. а ничего, что иногда в анкету не попадает ни одного "сложного" вопроса? :) или уж повезет, так повезет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 11:00 |
|
||
|
алгоритм подбора
|
|||
|---|---|---|---|
|
#18+
_slan_а ничего, что иногда в анкету не попадает ни одного "сложного" вопроса? :) или уж повезет, так повезет? По моему нормально, общий вес вопросов в анкете подбирается случайным образов до нужного значения, которое можно регулировать. Вопросы должны быть так составлены и ранжированы, что вопросы с весом 1 и 5, равносильны двум вопросам с весом 3, или вопросам с весом 2 и 4. В данном варианте веса можно проставить и вручную например 1,1,2,2,3,3,4,4,5,5 - каждого по паре (с общим весом 30), или каким угодно другим способом, формулы при этом подберут нужные вопросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 11:33 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37107865&tid=2177191]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 514ms |

| 0 / 0 |
