macroevolution: (Default)
macroevolution ([personal profile] macroevolution) wrote2011-05-22 05:37 pm

Самосборка

 Процессы самоорганизации в онтогенезе многоклеточных: опыт имитационного моделирования.
Доклад на семинаре «Вопросы эволюции» 20.05.2011
М.А.Марков, А.В.Марков

На сегодня у меня было запланировано отрецензировать 1 статью и 1 автореферат. Как-то быстро управился, осталось "лишних" 2 часа, вот и решил выложить доклад.

А вот видео

[identity profile] wormball.livejournal.com 2011-05-24 07:14 am (UTC)(link)
Касаемо увеличения скорости работы программы у меня следующие предположения (исходников я не видел, но что-то мне подсказывает):

- Можно делать визуализацию не каждый шаг, а, скажем, раз в 100 шагов.

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

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

И по поводу языка поведения клетки. Я так понял, вы просто пишете программу на С++ и ничтоже сумняшеся компилируете её визуальной студией. Это удобно и быстро, но, как вы сами заметили, почти несовместимо с автоматическим мутагенезом. Я бы на вашем месте сделал как в генетическом программировании - программа клетки представляется деревом, в узлах которого условия и действия. Тогда мутагенез будет изменением части узлов, а кроссинговер - обменом частью поддеревьев. А в текстовом виде можно записывать, например, в Лисп-подобной нотации.