Skip to content

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

License

Notifications You must be signed in to change notification settings

DLogunoff/Phylogenetic-binary-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Languages