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