Трилобиты — класс морских животных, вымерший сотни миллионов лет назад. Ученым известно 9 отрядов трилобитов, которые включают 150 семейств, 5 тысяч родов и 10 тысяч видов. Ближайшие современные аналоги трилобитов по строению тела — мокрицы и мечехвосты (кстати говоря, «живые ископаемые»). У большинства трилобитов был мощный панцирь. Рот и ноги располагались на нижней стороне тела, а глаза — на верхней.
Глаза большинства трилобитов были очень сложными, причем их строение радикально отличалось от строения глаз современных животных. Кристаллинового хрусталика у этих животных не было, вместо него у трилобитов были минеральные линзы из кальцита. Сейчас единственными животными с минеральными зрительными линзами являются некоторые существующие ныне офиуры и моллюск Acanthopleura granulata. Сложность глаз трилобитов была гораздо выше сложности глаз этих наших современников.
В этой статье я постараюсь максимально доходчиво рассказать о таком простом, но эффективном методе оптимизации, как имитация отжига (simulated annealing). А чтобы не быть причисленным к далёким от практики любителям теоретизировать, я покажу как применить этот метод для решения задачи коммивояжёра.
Для понимания статьи Вам понадобятся минимальные навыки программирования и владение математикой на уровне 9 класса средней школы. Статья рассчитана на людей не знакомых с методами оптимизации или только делающих первые шаги в этом направлении.
Мы хотим сделать обзорный пост, посвящённый нашему новому проекту. Обзор затронет как функционал, так и техническую часть, надеемся, это сделает статью интересной как профессиональным разработчикам, так и тем, кто читает Хабр с целью держать руку на пульсе Технологии.
Тем, кому интересна только техническая сторона проекта — рекомендуем сразу перейти ко второй части.
ЧАСТЬ 1. Лирическая
Мы — это команда разработки сервиса личных страниц uid.me.
Личная страница — это, например, вот так:
Недавно сдал курсовую работу по генетическим алгоритмам в программе Darwinbots и решил, что это будет интересно сообществу. Тем более, что в данный момент сообщество проекта довольно мало. Статьи будут наполовину переводом документации, а наполовину своими исследованиями программы.
Несколько лет назад в прикладных целях я реализовал обычный Force-based визуализатор графов.
На меня произвело впечатление, как простые итеративные преобразования могут производить субъективно сложные и интересные вычисления, формируя нетривиальные визуально-кинетические модели.
Со временем возникло несколько идей, что интересного можно смоделировать.
Вот что получилось с одной из них (в кадре мелкие объекты, смотреть в HD):