Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 3.28 KB

README.md

File metadata and controls

49 lines (32 loc) · 3.28 KB

Phylogenetic binary tree

Технологии

Python 3.9, numpy.

Для визуализации результатов используется matplotlib и binarytree.

Описание

Филогенетическое дерево - это дерево, отражающее эволюционные взаимосвязи между различными видами.

Не всегда стандартными методами можно составить оптимальное филогенетическое дерево, т.к. часто происходит так, что достоверная информация об эволюционной близости некоторых видов отсутствует, а полный перебор всех возможных вариантов займёт слишком много времени.

Этот проект является реализацией генетического алгоритма для построения оптимальных бинарных филогенетических деревьев.

Как пользоваться

Для начала требуется задать эталонную таблицу мер близости особей относительно друг друга. Эту таблицу стоит внести в файл data.xlsx в корневой папке проекта.

Остается лишь задать настройки генетического алгоритма в файле /tree.py, такие как:

  1. Размер особи (INDIVIDUAL_SIZE) - равен количеству особей в таблице (если таблица 5х5, то здесь тоже будет 5);
  2. Размер популяции (POPULATION_SIZE) - популяции в 100 особей достаточно, т.к. особи, получившиеся в результате скрещивания добавляются в популяцию, а после вся популяция мутирует и также добавляется в популяцию. В итоге в каждом поколении отбирается POPULATION_SIZE лучших особей из POPULATION_SIZE * 4 особей;
  3. Максимальное число поколений (MAX_GENERATIONS) - 1000 - 2000 поколений является оптимальным вариантом;

Стоит отметить, почему в 2 пункте фигурирует именно цифра 4. Так как каждые 2 родителя дают потомство в виде двух особей, которые добавляются в популяцию, то получается, что после скрещивания исходная популяция увеличивается в 2 раза (каждый родитель оставляет одного потомка). Потом каждый родитель и каждый потомок мутирует и мутант добавляется в популяцию. В итоге:

POPULATION_SIZE * 2(в результате скрещивания) * 2 (в результате мутации)

Когда все начальные данные будут готовы, запустить файл /tree.py.