![]() |
|
![]() ![]() ![]() |
|
vivalaakam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.1.2011 Репутация: нет Всего: нет |
Есть 5 прямоугольников (A B C D E), расположенных на полскости, необходимо подобрать увеличить/уменьшить их так, чтобы они полность занимали определенную площадь (см. рисунок). Высоту и ширину можно менять в любую сторону, главное чтобы сохранялись пропорции прямоугольников. Подскажите алгоритм, как это расставить, или хотя бы в каком направлении двигаться.
![]() Это сообщение отредактировал(а) vivalaakam - 3.10.2013, 08:58 |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Наверное ест' готовые алгоритмы, которых я не знаю. Если же лепит' самому, я бы начал скрещиват' алгоритм заполнения рюкзака с каким-либо алгоритмом случайной мутации размеров прямоугол'ников. Т.к прямоугол'ников мало, можно даже и обычный Монте-Карло; ну а хочется покрасивее - генетический алгоритм какой.
В целом промерно так: 1. Выбираем исходные размеры прямоугол'ников случайно или еще как. Но так, чтобы всe поместилис', хот' и с запасом. 2. Заполняем рюкзак. 4. Генетическими мутациями улучшаем заполнение, мутируя как размеры, так и последовател'ност' расположения. Упаковку каждого потомка делаем пакуя рюкзак. Критерий - наимен'шая незаполненная площад'. Потомки, не помещающиеся в рюкзак считаются метрворожденными. Наворочено, конечно, зато прикол'но ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 7 Всего: 386 |
_Y_, Заполнение рюкзака - не сюда. Тут можно свободно менять размеры, а все алгоритмы заполнения первым делом сортируют по размерам объектов ;)
vivalaakam, Вероятно, решить можно перебором. Перебирать нужно "топологически" одинаковые "картинки расположения" объектов. По каждой такой картинке можно состряпать систему уравнений, в которую можно подставить имеющиеся размеры картинок и получить решение или его отсутствие. Для каждой картинки нужно перебирать перестановки всех объектов. Например для имеющейся в первом посте картинки, получим такую систему уравнений (Первая буква переменой - имя объекта, вторые: k - коэффициент уменьшения, h- высота, w - ширина. 0 - рамка габаритного размера): -- Ak*Aw+Bk*Bw=0w -- Ak*Aw+Ck*Cw+Ek*Ew=0w -- Dk*Dw+Ek*Ew=0w -- Ak*Ah+Dk*Dh=0h -- Bk*Bh+Ck*Ch+Dk*Dh=0h -- Bk*Bh+Ek*Eh=0h 6 уравнений - 5 неизвестных. Задача может не иметь решения. Вероятно, такая избыточность получится для любой другой "картинки расположения". Так что решения можно и не найти. Нужно вводить "дырку" в картинке, чтобы решение находилось всегда. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Ну так и ладно. Генетическому алгоритму и проще. Пусть мутирует только размер объектов, а их расположение определяется рюкзаком. ЗЫ: Я не настаиваю на оптимальности моего решения. Даже наоборот. Просто пришло в голову и наверняка будет работать. ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |