|
|
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
Да, всё-таки поступило уточнение, нельзя картинку повторно пропечатать на другом наборе красок. Так что считаем, что это скорее ткацкий станок с нитями и каждое изделие должно быть целиком соткано на заправленном наборе нитей, (типа нельзя полотнище повторно воткнуть в станок и вплести в середину нити из другого набора :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 21:53 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvanoНу это я такую постановку задачи выбрал просто :) надо же было кейс придумать. В реальности это что угодно может быть, печатающее устройство с банками, токарный станок с кассетой инструментов, ткацкий станок с мотками нитей и т.д. и т.п. любое устройство имеющее ограниченный магазин инструментов/материалов, набирающийся их широкого исходного набора этих инструментов/материалов. anvanoДа, всё-таки поступило уточнение, нельзя картинку повторно пропечатать на другом наборе красок. Так что считаем, что это скорее ткацкий станок с нитями и каждое изделие должно быть целиком соткано на заправленном наборе нитей Это мля скорее всего новый вид ПРО с разными ракетами, ясен пень - все самолеты и ракеты нужно сбивать с первого раза.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 22:07 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvanoВот пример реальных тестовых данных. Первая строка - номера красок (их тут 70 разных) Первый столбец - названия картинок единицы - краска используется в картинке нули - не используется кому нужны данные в виде бд для удобства то качайте mdb в формате Акцесс 2000... - таблица Лист1 собственно данные из экселя, просто добавил счетчик в начало и поле выбора в конец... - запрос (Использование банок в картинках) покажет сколько раз банка используется при печати 25 картинок... - Пример скорее всего не совсем реальный (банки представлены по убыванию рейтинга использования и нет ни одной банки, которая не используется вообще).... - но есть вышеупомянутые хвосты (банки с 46 по 70 используются всего один раз) см. запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 22:48 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
>банки представлены по убыванию рейтинга использования и ну в экселе отсортировал >нет ни одной банки, которая не используется вообще).... а зачем они нужны? первое что делается - отбрасываются неиспользуемые краски и засчет этого уменьшается матрица представь, что банок 100, как в исходной постановке, но 30 из них не используются вообще ни в одной картинке >но есть вышеупомянутые хвосты (банки с 46 по 70 используются всего один раз) см. запрос да, хвосты есть в данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 23:10 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvano, Да не... все нормально... и примерчик удачный... башню можно снести... особенно что банки 64 - 70 используются только один раз и только для печати картинки 8, а банки 53-59 печатают только картинку 1... с кандачка не получится решить задачку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 23:40 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
Тут мысль пришла с рекурсивным обходом дерева. Берём картинку №1 и начинаем мёрджить её массив рекурсивно с остальными картинками. Условие выхода из рекурсии - количество элементов в мёрдже >= 30 Итого при каждом выходе из рекурсии получаем набор красок (мёрдж), а картинки, покрываемые этим набором - это путь до узла. По идее дерево получается кособокое (т.к. каждый узел имеет смысл складывать только со следующими по порядку) и условие выхода из рекурсии довольно быстро достигается (глубина дерева не оч большая) То бишь до какого-то количества картинок будет работать даже быстро. Потом отсортировать полученные наборы по количеству покрытых картинок - выкинуть эти картинки из списка. Для оставшихся картинок повторить всё заново. Ща попробую закодить весь этот бред, мож чего получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 00:08 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
При том варианте как ты нарисовал в мы имеем булеву матрицу. По вертикали - файлы. По горизонтали - краски. Задача - отсортировать строки таким порядком чтобы суммарное расстояние Хэмминга между векторами красок было минимальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 01:04 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvanoТут мысль пришла с рекурсивным обходом дерева. похоже если не удастся подвести условие задачи под уже известный тип задач, то всё будет упираться в неподъемный по ресурсам тупой перебор (комбинаторика тут просто космическая)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 10:16 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
По поводу объема работ. Думаю что алгоритм должен работать для пачки картинок. Что такое пачка? Возможно это 1 рабочий цикл издательства. Получили флешку с картинками. Пульнули ее в алгоритм. Оптимизировали порядок. Отпечатали. Всё. Цикл закончен. Тоесть никто не говорит что будет больше 1000. Возможно это просто некая верхняя оценка. anvano, верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 12:59 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
maytonПо поводу объема работ. Думаю что алгоритм должен работать для пачки картинок. Что такое пачка? Возможно это 1 рабочий цикл издательства. Получили флешку с картинками. Пульнули ее в алгоритм. Оптимизировали порядок. Отпечатали. Всё. Цикл закончен. Тоесть никто не говорит что будет больше 1000. Возможно это просто некая верхняя оценка. anvano, верно? Да, именно так. Я закодил уже первую часть своего алгоритма с рекурсией - вобщем для пачек до 30 штук канает, получается оч хорошо. В районе 30 штук рекурсия длится около 3 минут. Конечно к тысяче сложно будет пришить это всё. С другой стороны, я попробовал тупо прерывать рекурсию на какой-то итерации - результаты тоже хороши. Это конечно будет не оптимальный вариант (т.к. не было полного перебора дерева), но сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 13:36 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
В общем, допилил скрипт с рекурсивным алгоритмом для тестовых данных (25 штук) выполняется секунд 40. За 4 перенастройки палитры можно распечатать все 25 картинок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 18:38 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
Для 50 картинок Execution time уже 364.8032 сек. в 10 раз больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 19:15 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvano, делись софтом, хвастун! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 20:15 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
maytonanvano, делись софтом, хвастун! Да какой там софт, обычный скрипт на PHP :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 21:20 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvano, ну чё, нормально... и время тоже приемлемое (это потому что всё внутри кастрюли)... нужно еще прогнать около 10 - 50 вариантов для достоверности... сколько пообещали за решение ? задачка то денежная, и материал и время, и сбережение оборудования... а чё сразу то не сделал ? Без того чтоб в бока попинали никак ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 21:32 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvanoДля 50 картинок Execution time уже 364.8032 сек. в 10 раз больше. 50 картинок оптимизирует 6 минут????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 12:28 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
maytonanvanoДля 50 картинок Execution time уже 364.8032 сек. в 10 раз больше. 50 картинок оптимизирует 6 минут????? Одна так называемая "перезаправка" в реальности занимает около часа. Так что если скрипт будет даже целый час выполняться и при этом уменьшит количество перезаправок - уже профит. Т.к. это будет час работы компьютера, а не оплачиваемого специалиста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 15:55 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
Ну... 6 минут ждать ответа от приложения. Это как-то жестоко. Иногда пользователь согласен видеть "грубый результат" через несколько секунд старта приложения. А уж потом - его уточнение. И в твоём алгоритме как мне кажется это будет хорошим подходом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 16:27 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
maytonanvanoДля 50 картинок Execution time уже 364.8032 сек. в 10 раз больше. 50 картинок оптимизирует 6 минут????? Это язык интерпретируемый, плюс функции используются тяжелые ( array_merge, sort, array_unique) на каждой итерации. Для 25 картинок там всего-лишь 240 тыс итераций, а оно целых 40 секунд их молотит. Это очень долго, согласен. Простор для оптимизации алгоритма широк - можно заменить операции с массивами на какие-то битовые манипуляции, переписать всё на более низкоуровневом языке типа C++ - должно ускориться существенно. Но всё равно, рекурсивный обход - сложность возрастает экспонециально (если не факториально) от количества элементов. Грубый результат можно получать , ограничив глубину обхода дерева, может так и сделаю. Плюс у меня не делется предварительная обработка массива данных. Во-первых, надо заранее выкидывать их процесса оптимизации все картинки, которые полностью покрываются какой-то другой картинкой. Т.к. очевидно, если мы палитрой распечатаем эту родительскую картинку - то той же палитрой распечатаем все дочерние картинки, которые на 100% по краскам пересекаются с родительской. Во-вторых, надо исходный набор отсортировать по увеличению количества красок и начинать оптимизацию с картинок, с наименьшим количеством красок. Тогда мы сможем очень быстро составлять палитры (просто стыкуя картинки), покрывающие большое количество картинок с малым набором красок - их выкидывание из дальнейших шагов так же сильно уменьшит объем расчетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 16:39 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvano, В третьих, на каждой итерации можно проверять еще не охваченные картинки на предмет возможности их печати текущей версией палитры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 16:43 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvano, предложу оптимизацию. Посчитай частоты использования всех красок для всех картинок. Самые популярные краски вынеси для 1-й итерации твоего алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2014, 12:56 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
maytonПосчитай частоты использования всех красок для всех картинок. Самые популярные краски вынеси для 1-й итерации твоего алгоритма. это я предложил в самом начале... проверил, оказалось - фигня... его первая тридцатка покрывает 13 картинок, а при таком подходе (по популярности) только 7 картинок и на второй итерации - вообще затык, ни одной картинки... по этому компоновка картинок перебором в 30- ку, которую он сам и предложил пока самая рулёзная... перекрыть ее может (по времени выполнения) только какой нибудь известный метод, который пока никто не усмотрел в этой задаче... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2014, 13:28 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
anvanoВо-вторых, надо исходный набор отсортировать по увеличению количества красок и начинать оптимизацию с картинок, с наименьшим количеством красок. Тогда мы сможем очень быстро составлять палитры (просто стыкуя картинки), покрывающие большое количество картинок с малым набором красок - их выкидывание из дальнейших шагов так же сильно уменьшит объем расчетов.А я вот, считаю что надо наоборот - начинать с картинок с максимальньм количеством красок. Почему? Потому что иначе набор "30" быстро заполнится несколькими картинками с малым количеством красок, и будет затык для тех, у которых красок побольше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2014, 15:26 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
S.G.Почему? Потому что иначе набор "30" быстро заполнится несколькими картинками с малым количеством красок Это как? В примере Есть картинки и с одной краской и с двумя, тут и слепому видно что в 30 банок влезет сразу минимум 30 картинок с одной уникальной краской, а одна картинка в 19 банок сразу съедает пол обоймы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2014, 16:53 |
|
||
|
Алгоритмы. Оптимизация наборов красок при печати
|
|||
|---|---|---|---|
|
#18+
vmagS.G.Почему? Потому что иначе набор "30" быстро заполнится несколькими картинками с малым количеством красок Это как? В примере Есть картинки и с одной краской и с двумя, тут и слепому видно что в 30 банок влезет сразу минимум 30 картинок с одной уникальной краской, а одна картинка в 19 банок сразу съедает пол обоймы...Вы пропустили прочитать конец моего предложения, ну да ладно. Спорить, наверное можно долго, пусть ТС попробует прогнать несколко тестов с *реальными* данными, сортируя и так и иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2014, 17:15 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38710316&tid=1341142]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 376ms |

| 0 / 0 |
