алгоритм размещения плитки - PullRequest
1 голос
/ 04 апреля 2011

Мне нужно расположить квадратные плитки одинакового размера в пространстве, которое может быть полностью заполнено плитками.Некоторые плитки могут быть заблокированы на месте.Плитки приходят из групп, и каждая группа должна располагаться вместе (если это возможно, возможно, не из-за блокировки).Есть также некоторые другие второстепенные и более индивидуальные (не только по группам) предпочтения.

Какие алгоритмы были бы полезны?Я пытаюсь превратить это в проблему линейного (на самом деле MIP) программирования, но я не уверен, что смогу это сделать.

1 Ответ

3 голосов
/ 05 апреля 2011

Комбинаторные задачи оптимизации (если вы хотите «максимизировать» соответствие второстепенным и более индивидуальным предпочтениям) обычно могут быть решены путем ветвления и привязки или стохастическим поиском, например, имитация отжига или табу поиска.

В режиме ветвления и связывания вы выполняете поиск частичных решений и отслеживаете наилучшее полное решение, которое было достигнуто до сих пор. Всякий раз, когда вы достигаете частичного решения, в котором вы можете доказать, что оно не может быть завершено, чтобы получить лучшее решение, чем лучшее решение, которое вы когда-либо достигли, вы немедленно возвращаетесь.

Стохастический поиск, скорее всего, будет лучше соответствовать вашей проблеме. Это работает, начиная со случайного размещения плитки, а затем, например, случайным образом меняя местами плитки, ставьте предпочтительные движения, которые приводят к более высокому удовлетворению (более высокий балл предпочтений), что в вашем случае будет означать больше подключенных плиток и больше соответствовать вторичным предпочтениям. Детали отличаются. См

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...