| Comments: |
Вот текст программы на бейсике с комментариями: 10 REM Модель генетической эволюции - одномерный клеточный автомат GEMOCA 15 REM Дима Даннер, 2007 20 REM объявление и установка параметров (см.описание модели) 22 coevol=0.02: REM коэффициент эволюции 25 cell=0: REM текущая клетка 30 color=0: colors=1: REM параметры текущего цвета и сложности программы 40 noise=0.1: REM физическая вероятность ошибки 50 cycle=0: REM счетчик циклов 60 repro=0: REM счетчик успешных воспроизведений 71 error=0: REM флаг ошибки 80 corepro=0: REM коэффициент воспроизведения 85 REM здесь обявляются массивы для сбора статистики 90 REM ** ГЛАВНЫЙ ЦИКЛ ** 95 REM ВОСПРОИЗВЕДЕНИЕ 100 cycle=cycle+1 110 color=color+1: IF color>colors THEN color=1: error=0: REM следующий цвет 120 x=RND: IF x [ Error: Irreparable invalid markup ('<noise [...] воспроизведение>') in entry. Owner must fix manually. Raw contents below.] Вот текст программы на бейсике с комментариями:
10 REM Модель генетической эволюции - одномерный клеточный автомат GEMOCA 15 REM Дима Даннер, 2007
20 REM объявление и установка параметров (см.описание модели) 22 coevol=0.02: REM коэффициент эволюции 25 cell=0: REM текущая клетка 30 color=0: colors=1: REM параметры текущего цвета и сложности программы 40 noise=0.1: REM физическая вероятность ошибки 50 cycle=0: REM счетчик циклов 60 repro=0: REM счетчик успешных воспроизведений 71 error=0: REM флаг ошибки 80 corepro=0: REM коэффициент воспроизведения 85 REM здесь обявляются массивы для сбора статистики
90 REM ** ГЛАВНЫЙ ЦИКЛ ** 95 REM ВОСПРОИЗВЕДЕНИЕ 100 cycle=cycle+1 110 color=color+1: IF color>colors THEN color=1: error=0: REM следующий цвет 120 x=RND: IF x<noise THEN error=1: REM ошибка с вероятностью noise 130 cell=color: IF error=1 THEN cell=INT (RND*colors)+1: color=cell 140 IF color=colors AND error=0 THEN repro=repro+1: REM успешное воспроизведение 146 LET corepro=repro/cycle: REM подсчет коэффициента воспроизведения
147 REM МУТАЦИЯ (см. описание модели) 150 LET x=RND: REM проверка условия усложнения программы 160 IF x<coevol/4 AND corepro>0.5 THEN colors=colors+1: REM усложнение программы 170 IF corepro<0.5-(colors-1)*coevol THEN colors=colors-1: REM упрощение программы - отбор 180 IF colors=0 THEN colors=1
185 REM ** КОНЕЦ ГЛАВНОГО ЦИКЛА **
186 REM ВЫХОДЫ ИЗ ГЛАВНОГО ЦИКЛА 190 IF cycle/20000<>INT (cycle/20000) THEN GO TO 90: REM дискретизация для сбора статистики 195 REM после этой строки идет сбор статистики, показ промежуточного состояния, 196 REM изменение вероятности ошибки итд 500 IF cycle<4000000 THEN GO TO 90: REM выход из главного цикла, в данном случае 4 млн. попыток 501 REM КОНЕЦ РАСЧЕТОВ
510 REM здесь идет подсчет окончательной статистики, ее показ и сохранение 520 REM КОНЕЦ ПРОГРАММЫ
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 26th, 2007 - 12:40 pm |
|---|
| | Re: текст программы | (Link) |
|
Бейсиг? Гм...
Вот читаю и не пойму, фразы "эволюция организмов проявляет следующие закономерности" это метод "изгалать тоном не терпящим возражений"? Здесь только твоя прожка "проявляет" такие "закномерности", творя программка это еще не эволюция. Честно говоря, я вообще не понял как и чем это что-то коллерирует с реальностью. Извини Дима, но когда сразу под заголовком "Модель генетической эволюции в виде одномерного клеточного автомата" идет фраза "Поле представляет собой ленту 1 х бесконечность с пронумерованными клетками" это не серьезно. Как это "поле, которое представляет с собой ленту" коррелирует с реальностью, и при чем здесь клеточный автомат?
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | Re: текст программы | (Link) |
|
Сбавь обороты, дорогой. Ты хочешь серьезно говорить, или будешь к словам придираться? Если это просто наезд, то давай не будем тратить Твое и мое время.
Бейсиг. Конечно, если кто-нибудь напишет модуль на си или яве, это будет во всех отношениях лучше - быстрее, точнее, тестов больше, статистика лучше. Модель я полностью выложил, за лучшую реализацию буду только благодарен.
Далее. Ежу понятно, что, поскольку мы говорим о модели, то закономерности проявляет модель. Эволюция организмов в данном случае = эволюция программы.
Поле это лента в машине Тьюринга, то же самое. Объяснять, что такое клеточный автомат и зачем они нужны?
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 26th, 2007 - 02:02 pm |
|---|
| | Re: текст программы | (Link) |
|
Сорри, я слегка погорячился.
Бейсик-не бейсик - не важно, важно другое, а именно отношение всего этого к реальности. Какое отношение эта модель имеет к генной эволюции (если вообще имеет). Об этом же почти ни слова, а уже выводы какие-то делаются, причем не о модели а об эволюции. Но так же нельзя!
> Объяснять, что такое клеточный автомат и зачем они нужны? Что такое клеточный автомат я себе представляю. Нужен он, насколько знаю, для того же для чего машина Тюринга - для установления возможности алгоритмической реализации чего-нибудь.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 09:46 am |
|---|
| | Re: текст программы | (Link) |
|
> в виде одномерного клеточного автомата Где програмно реалищуется клеточный автомат в данном случае? От клеточного автомата здесь только одна клетка, значение которой в переменной color (было бы две если бы ты завел для предыдущего и следующего цвета две переменных). Ты не моделируеш всю ленту, не используеш "старших" чем предыдущий цвет значений, такчто употреблять словосочетание "клеточный автомат" по отношению к этой модели, ИМО, не стоит - он здесь не моделируется да и, как видно, не нужен.
Клеточный автомат КА в самом общем случае характеризуется вот чем: 1. Конечным числом возможных состояний клеток, 2. Влиянием на состояние клетки конечного числа соседних клеток (в любом понимании, не обязательно даже топографически соседних), 3. Начальной конфигурацией, 4. Правилами перехода. Вот общие правила перехода для моей модели (они же - программа для КА): 1.На пустой клетке, имеющей одного и только одного соседа, появляется новая фишка по определенным законам. 2.Клетка, не являющаяся пустой, не изменяется. 3.Пустая клетка, имеющая менее, чем одного соседа, остается пустой. Эти три правила сводят все изменения к одной клетке, цвет которой определяется одной соседней клеткой плюс некоторая вероятность другого исхода, которая вероятность никак не запрещена принципом КА. Правила КА сами по себе не могут меняться, они неизменны, как и прога на бейсиге. Изменение программы проявляется вероятностным расширением состояний, доступных в данный момент. В общем случае это тоже не запрещено. Поэтому это именно клеточный автомат и ничто другое.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 01:05 pm |
|---|
| | Re: автомат | (Link) |
|
> 1.На пустой клетке, имеющей одного и только одного соседа, появляется новая фишка по определенным законам. Тогда клетки должны были бы появлятся "в обе стороны" ленты, а не только в одну как здесь.
Т.к. програмно ты отлично справляешся одой/двумя переменными, то КА тебе просто не нужен. Тем более что все сгенереные клеты кроме непосредственно предыдущей ты не используешь (и не записуешь, хотя должен бы для полноценной реализации КА). Поэтому мое мнение - упоминание КА здесь излишне и не существенн.
Но больше всего меня беспокоит не это, а заголовок "модель генной эволюции". Ну не модель генной эволюции это, максимум упрощенная модель одного аспекта.
>Тогда клетки должны были бы появлятся "в обе стороны" ленты, а не только в одну как здесь. Поэтому я и оговариваю, что лента пронумерована, то есть идет как луч. Ход времени, опять же.
>Тем более что все сгенереные клеты кроме непосредственно >предыдущей ты не используешь (и не записуешь, хотя должен бы >для полноценной реализации КА). Я их не записываю прежде всего потому, что они не влияют на дальнейший процесс. Нам не важна сейчас динамика популяции, нам важно только модификация возможных состояний. Вместо того, чтобы записывать все данные и потом считать статистику, я сразу считаю статистику, которая мне нужна (а мне нужно прежде всего количество возможных состояний), а запоминать всю ленту нет никакого смысла, я запоминаю только то, что влияет на следующий ход, в данном случае - одну клетку и флажок ошибки - для подсчета воспроизведений.
>Поэтому мое мнение - упоминание КА здесь излишне и не >существенн. Очень существенно.
>Ну не модель генной эволюции это, максимум упрощенная модель >одного аспекта. Что мы понимаем под генной эволюцией? Изменение генотипа? Что еще? Вот оно изменение генотипа, а то, что оно только количественное, то любая модель - всегда упрощение.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 02:05 pm |
|---|
| | Re: автомат | (Link) |
|
> Поэтому я и оговариваю, что лента пронумерована, то есть идет как луч. > Ход времени, опять же. Пусть будет пронумерована (как будто нет отрицательных чисел), из этого ничего не следует.
> Я их не записываю прежде всего потому, что они не влияют на дальнейший процесс Вот вот - не влияют и не существенны, поэтому весь этот КА - вся лента - не нужны. Но при этом почему-то "Очень существенны". Гм.
> Нам не важна сейчас динамика популяции, нам важно только модификация возможных состояний Кто сказал что одно существенно не влияет на другое?
> Вот оно изменение генотипа, > а то, что оно только количественное, то любая модель - всегда упрощение. Это напоминает генерацию статистики на основе другой статистики, сомнительного происхождения. Модель - упрощение, но упрощение до той степени когда корреляция с реальностью еще достаточно высока чтоб модель имела ценность. Иначе зачем она?..
>> Я их не записываю прежде всего потому, что они не влияют на дальнейший процесс >Вот вот - не влияют и не существенны, поэтому весь этот КА - вся лента - не нужны. Но при этом почему-то "Очень существенны". Гм. Еще раз - данные ленты нужны для подсчета статистики. В данном случае воспроизводимости и сложности генокода. Без ленты эти данные не собрать. Они собираются? Собираются. Вот на графике выведены. После того, как статистика собрана, они больше не нужны. Статистика собирается на лету, прямо в главном цикле. Это значительно экономнее, чем запоминать ленту, а потом еще раз пересчитывать статистику. Конечно, у нас появляется проблема дискретизации. Если мы будем регистрировать статистику на каждом проходе цикла, это все равно, как если бы мы запоминали ленту целиком, только памяти меньше расходуется. Если у нас достаточно ресурсов, можно так и сделать. Это техническая, а не принципиальная проблема.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:10 pm |
|---|
| | Re: автомат | (Link) |
|
> Еще раз - данные ленты нужны для подсчета статистики В КА нет никакой статистики, это для него постороння вещь. Ты собираеш данные не записывая всю ленту, что и доказывает что она не нужна.
Простой пример: запись средней температуры по данным с градусника. При каждом замере средняя величина (статистика) корректируется, но все данные не пишутся. Может и здесь у нас возник гдето тайком от нас клеточный автомат?
Да, все данные температуры не пишутся. На этом основании мы делаем вывод, что для записи средней температуры градусник не нужен?
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:23 pm |
|---|
| | Re: автомат | (Link) |
|
На этом основании мы делаем вывод что никакого Клеточного Автомата нам не нужно для сбора статистики, и его здесь нет.
То есть вот этот коммент, который доказывает, что это клеточный автомат, Тебя не убедил. Понято.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:55 pm |
|---|
| | Re: автомат | (Link) |
|
Нет. Я тебе там же отписал что ты нарушаеш написанные там правила перехода, причем потому что КА не соответствует тому что тебе нужно - временной "регистрации".
Назови мне причину, почему поле не может быть представлено в виде луча. В виде линии, плоскости, пространства итд может, а луча - нет?
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 04:09 pm |
|---|
| | Re: автомат | (Link) |
|
При чем здесь луч? При том что нам так надо. А вот по правилам прописанным тобой для КА луч не выходит - по тем правилам в обе стороны ленты должны множится "цвета". Значит КА нам не нужен, нужен не КА. Все просто.
Выходит, потому что я заранее оговариваю, что поле является лучом ("лентой с пронумерованными клетками"). А то что нам так надо - да, нам так надо, поэтому мы задаем такие правила.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 04:18 pm |
|---|
| | Re: автомат | (Link) |
|
Гм. Я там гдето писал "что с того что пронумерованными? Какбудто нет отрицательных чисел". Нам нужно "луч", и "есть" "луч". А КА нет. Нам его и не нужно.
Ясно, эту ветку убиваем. По другим пунктам комментарии будут?
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 04:28 pm |
|---|
| | Re: автомат | (Link) |
|
Были уже. Можеш все убивать, ато и правда много текста да мало толку вышло.
>> Нам не важна сейчас динамика популяции, нам важно только модификация возможных состояний >Кто сказал что одно существенно не влияет на другое? >Модель - упрощение, но упрощение до той степени когда >корреляция с реальностью еще достаточно высока чтоб >модель имела ценность. Иначе зачем она?.. Эта модель воспроизводит все три аспекта эволюции - изменчивость, наследственность, отбор: 1. В ней есть фактор изменчивости организма. В реальности факторов много, мы сужаем пространство до одного, который нас интересует, чтобы моделировать именно его влияние. 2. В ней есть наследственность - то есть воспроизведение программы. Это воспроизведение есть коммуникация с внешней средой, которая осуществляет регулирование. 3. В ней есть фактор регулирования - естественный отбор. В понятие "выживаемости" мы включаем все факторы среды, в том числе и развитие популяции, и все другие существенные факторы. Мы рассматриваем все факторы вместе, представляя их как один. Модель, которая упрощенно воспроизводит все аспекты эволюции, есть модель эволюции...
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:22 pm |
|---|
| | Re: реальность | (Link) |
|
> мы сужаем пространство до одного, который нас интересует, > чтобы моделировать именно его влияние. И что же это за фактор, и почему именно он нас интересует?
> 2. В ней есть наследственность - то есть воспроизведение программы. Опять "клктки" и "программы". Уточняй, ато путаница терминов невероятная. Странная какая-то наследственность.
> 3. В ней есть фактор регулирования - естественный отбор. Какой это отбор? Вероятность смерти это не отбор, она же здесь одинакова для всех "цветов".
> Модель, которая упрощенно воспроизводит все аспекты эволюции, > есть модель эволюции... Если по ней ты делаеш выводы об эволюции (про информационные катаклизмы как причину гибели динозавров там), то модель должна иметь корреляцию с реальностью.
>И что же это за фактор, и почему именно он нас интересует? Это фактор изменчивости генного набора, а почему он нас интересует - потому что он нам приглянулся больше других. Не вижу криминала.
>> 2. В ней есть наследственность - то есть воспроизведение программы. >Опять "клктки" и "программы". Уточняй, ато путаница терминов невероятная. О компьютерной программе мы говорим только, когда обсуждаем технические вопросы. О программе КА мы не говорим уже вообще, потому что я Тебе выше сформулировал эту программу, а Ты продолжаешь утверждать, что КА здесь нет. Остается только "программа" = ДНК. О клетках КА мы тоже не говорим по причине, названной выше. Остаются биологические клетки, которые у нас представлены как цепочки цветных фишек.
>Странная какая-то наследственность. Передача цепочки ДНК в последующее поколение это не наследственность?
>Какой это отбор? Вероятность смерти это не отбор, она же здесь одинакова для всех "цветов". Отбор это не вероятность смерти, отбор это сочетание вероятности смерти и интенсивности воспроизведения. Среда задает смертность, в ней выживают только организмы, имеющие соответствующую воспроизводимость.
Модель имеет корреляцию с реальностью и пока Ты мне обратного не доказал.
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | отношение к реальности | (Link) |
|
КА - модель конечного автомата. Если экосистема - конечный автомат, то ее можно так моделировать в принципе. Программа КА - правила перехода - включают расширение возможных состояний. В этом смысле программа КА в той ее части, которая касается возможных состояний - аналог ДНК. Представим себе одноклеточный организм, который делится. Все их воспроизведения являются по сути продолжением одного организма. Каждое успешное воспроизведение ДНК - новая клетка, но организм по сути тот же (неполовое размножение). Лента - это внешняя по отношению к ДНК среда с ходом времени. То есть ДНК воспроизводится во внешнюю среду. Все коэффициенты, как Ты помнишь, имеют экологическую интерпретацию, повторю: 1. Вероятность ошибки x - физический фактор среды, например, уровень радиации. Радиационные всплески препятствуют нормальной репликации ДНК. 2. "Порог эволюции" - у меня в программе 0,5 - значение коэффициента воспроизведения, при котором возможно усложение программы. По сути, это выживаемость потомства. Если воспроизводится больше организмов, чем минимум выживаемости, то появляется пространство для генетических вариаций (примечание - учтя выживаемость в таком виде, смертность на самой ленте вводить уже не нужно). 3. Наконец, "коэффициент эволюции" v - внутренний параметр, характеризующий длину цикла воспроизведения ДНК. Чем длинее цикл, тем больше вероятность изменений генетического материала и одновременно тем резче уменьшается размножаемость и склонность к риску (К-сдвигу в развитии популяции). То есть более простые организмы склонны к экспансии, а более сложные - к выживанию в заданной среде.
Итого. Есть ДНК, воспроизводящаяся во внешнюю среду, усложняющаяся случайно и упрощающаяся вследствие отбора. Все вместе есть генетическая эволюция.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 01:41 pm |
|---|
| | Re: отношение к реальности | (Link) |
|
Все это мне очень не нравится. > Если экосистема - конечный автомат Если.
> Представим себе одноклеточный организм, который делится. > Все их воспроизведения являются по сути продолжением одного организма. > Каждое успешное воспроизведение ДНК - новая клетка, но организм по сути > тот же (неполовое размножение). Возможные взаимодействия между клетками не учитываются вообще? Занятно.
> Лента - это внешняя по отношению к ДНК среда с ходом времени. То есть > ДНК воспроизводится во внешнюю среду. Что-то мне не видно как эта лента отображает внешнюю среду. Мне вообще не ясно чему соответствую клетки автомата - клеткам организма? А расположение их - "территориальному" расположению? Или только временному? Зачем нам нужно запоминать это "временное расположение" (грубо говоря, что Н делений назад была воспроизведена клетка К)? Судя по проге - незачем, ибо они даже и не записываются. Нет у тебя ленты в проге.
> Все коэффициенты, как Ты помнишь, имеют экологическую интерпретацию Вот ничего такого не помню.
> 1. Вероятность ошибки x - физический фактор среды, например, уровень > радиации. Радиационные всплески препятствуют нормальной репликации ДНК. Это в смысле нормальному делению? Угум. Но взамен мы имеем что - опять деление, только не нормальное? Это "cell=INT (RND*colors)+1" значит что при ошибке вместо следующего цвета (кстати, какое отношение эта последовательность цветов имеет к реальности, чему соответствуют цвета? мне не понятно) появляется другой? Не логичнее ли предположить что деления с большей вероятностью вообще не будет, а будет смерть клетки.
> у меня в программе 0,5 - значение коэффициента воспроизведения Что такое этот коефициент воспроизведения и что он отображает?
> Если воспроизводится больше организмов, чем минимум выживаемости, > то появляется пространство для генетических вариаций А организмы знают? Откуда известно что генетические вариации возникают только если воспроизводится больше организмов, чем минимум выживаемости?
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | Re: отношение к реальности | (Link) |
|
>> Если экосистема - конечный автомат >Если. Вообще-то, если теория отбора верна, то по идее, число факторов среды конечно, организма тоже, число популяции тоже... иначе непонятно, к чему приспосабливаться. Ладно, это уже дебри. Примем как исходное допущение, если Ты не считаешь, что оно в корне неверно - но о верности теории отбора спорить, наверное, нет смысла сейчас...
>Возможные взаимодействия между клетками не учитываются вообще? >Занятно. Какие взаимодействия? Опять же, динамика популяции, конкуренция особей итд нас не интересует сейчас. Какие еще возможные взаимодействия?
>Мне вообще не ясно чему соответствую клетки автомата - клеткам >организма? Воспроизведенным генам. Потому и запоминать их незачем.
>Не логичнее ли предположить что деления с большей вероятностью >вообще не будет, а будет смерть клетки. Точнее, летальная мутация. Репликация происходит так же, как копирование с проверкой. Сначала копируем, потом проверяем. В реале проверяет отбор. Ошибочная клетка просто не выживет. Поэтому в модели ошибочное копирование не засчитывается как успешное, вот и все.
>> у меня в программе 0,5 - значение коэффициента воспроизведения >Что такое этот коефициент воспроизведения и что он отображает? Процент успешных воспроизведений. Написано ж. :)
>А организмы знают? Откуда известно что генетические вариации >возникают только если воспроизводится больше организмов, чем >минимум выживаемости? Отбор. Если воспроизводимость 0.4, а выживаемость 0.5, то ни одна особь не выживет в среде. Какие уж тут вариации. Если существует зазор между воспроизводимостью и выживаемостью, то среда оставляет "простор для маневрирования". Генетические вариации есть всегда, но выживают они только, если есть резерв приспособляемости. Биоразнообразие этим и объясняется. Если бы однородная среда жестко задавала условия выживания, то был бы один-единственный вид, наиболее приспособленный.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 02:54 pm |
|---|
| | Re: отношение к реальности | (Link) |
|
> динамика популяции, конкуренция особей итд нас не интересует сейчас Динамика как статистическое отображение числа клеток не интересует сама по себе. А вот как фактор, влияющий на "воспроизведение генов"? Не должна ли учитыватся в алгоритме?
> Генетические вариации есть всегда Так значит есть всегда. А воспроизведимость и выживаемость ведь не константы.
>>> у меня в программе 0,5 - значение коэффициента воспроизведения >> Что такое этот коефициент воспроизведения и что он отображает? > Процент успешных воспроизведений. Написано ж. :) Так он задан наперед? А зачем "вероятность ошибки"?
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | Re: отношение к реальности | (Link) |
|
>Динамика как статистическое отображение числа клеток не >интересует сама по себе. А вот как фактор, влияющий >на "воспроизведение генов"? Не должна ли учитыватся в >алгоритме? Не влияет динамика популяции на репликацию ДНК. >А воспроизведимость и выживаемость ведь не константы. Воспроизводимость не константа, она меняется обратно сложности программы. Голубая линия на графиках. Пересмотри еще раз программу или описание модели. Выживаемость - фактор среды - константа, потому что мы рассматриваем стабильную среду. >>>> у меня в программе 0,5 - значение коэффициента воспроизведения >>> Что такое этот коефициент воспроизведения и что он отображает? >> Процент успешных воспроизведений. Написано ж. :) >Так он задан наперед? А зачем "вероятность ошибки"? Кто задан наперед? Там было написано: "Порог эволюции" - у меня в программе 0,5 - значение коэффициента воспроизведения, при котором возможно усложение программы. По сути, это выживаемость потомства.Коэффициент воспроизведения рассчитывается, его пороговое значение экзогенно. Читай или программу, или описание, но внимательнее, ради бога...
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:26 pm |
|---|
| | Re: отношение к реальности | (Link) |
|
> Не влияет динамика популяции на репликацию ДНК. А на вероятность успеха репликации влияет?
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | Re: отношение к реальности | (Link) |
|
Нет, потому что среда клетки и среда экосистемы - разные вещи.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 01:56 pm |
|---|
| | Re: отношение к реальности | (Link) |
|
> в той ее части, которая касается возможных состояний - аналог ДНК Если мы моделируем, пардон, ты моделируешь только "возможные состояния", то, согласись, это не есть модель генетической эволюции, а только аспекта.
"Вероятность ошибки x - физический фактор среды" Вероятность это вероятность - статистическая величина, а не "физический фактор". Её надо бы рассчитать, а не просто жестко задать "от фонаря". Причем здесь она не меняется вообще, а ведь вполне возможно должна бы коррелировать например с некоторыми параметрами организма, скажем расти с ростом числа живых клеток. Как ты считаешь?
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | Re: отношение к реальности | (Link) |
|
>это не есть модель генетической эволюции, а только аспекта. Смотри выше про три аспекта эволюции.
>Вероятность это вероятность - статистическая величина, а >не "физический фактор". Её надо бы рассчитать, а не просто жестко >задать "от фонаря". Что значит "рассчитать"? Включать какие-то дополнительные, произвольно выбранные факторы? Вероятностные величины - это вполне нормальное представление факторов, которые либо неизвестны напрямую, либо факторный анализ неоправданно сложен. Есть проблема аккуратного моделирования вероятностной величины, то есть ее распределения. Здесь распределение равномерное. Можно было взять нормальное. Но принципиально бы ничего не изменилось.
>должна бы коррелировать например с некоторыми параметрами >организма, скажем расти с ростом числа живых клеток. Как вероятность ошибки при воспроизведении ДНК _в_клетке_ может расти с ростом числа живых клеток? Она будет зависеть от механизма воспроизведения и от среды. Если механизм воспроизведения не меняется, остается только среда. Есть такое понятие "экзогенный фактор", то есть заданный вне модели. Вот вероятность ошибки - это экзогенный фактор в данном случае.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:02 pm |
|---|
| | Re: отношение к реальности | (Link) |
|
> Здесь распределение равномерное. Можно было взять нормальное. > Но принципиально бы ничего не изменилось. Если изменить распределение (взять скадем Пуасснона), то результаты должны изменится. Такая вероятность как в теории вероятностей предполагает равномерное распределение.
> Что значит "рассчитать"? То и значит. > Включать какие-то дополнительные, произвольно выбранные факторы? Почему произвольно? Надо включать те факторы, которые имеют значение.
> ДНК _в_клетке_ может расти с ростом числа живых клеток? > Она будет зависеть от механизма воспроизведения и от среды. Рост числа клеток меняет среду + эти клетки кстати тоже среда (самый дурацкий пример: травинка в чистом перепаханном поле и травинка в лесу среди сотен таких же, потребляющих её близлежащие ресурсы).
> Есть такое понятие "экзогенный фактор", то есть заданный вне модели Очень интересно, но это ничего не говорит о том ПОЧЕМУ он в данном случае задается вне модели.
Опять разделяю коммент.
Нельзя включить в модель все факторы, которые имеют значение. Чем больше факторов мы включаем, тем хуже будут статистические параметры этой модели. Конечно, у нас нет никакой реальной статистики, но все равно усложнение модели внешне делает ее более правдоподобной, а описательную способность ее уменьшает. Да и работать с моделью, которая не укладывается в голове, очень сомнительное удовольствие.
Что касается среды. Не стоит путать среду клетки, влияющую на воспроизведение ДНК (в которой среде и проявляется фактор ошибки) и среду экосистемы. Среда клетки соответствует первичному океану и не меняется миллиарды лет. Среда экосистемы интегрирована вместе со всем остальным в один фактор внешней среды.
>> Есть такое понятие "экзогенный фактор", то есть заданный вне модели >Очень интересно, но это ничего не говорит о том ПОЧЕМУ он в данном случае задается вне модели. Для того, чтобы сохранить модель операбельной, а не переусложнять ее тем, что в данном случае нас не интересует.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 03:40 pm |
|---|
| | Re: факторы среды | (Link) |
|
> Чем больше факторов мы включаем, тем хуже будут статистические > параметры этой модели. Всю жизнь считал что дело обстоит "с точностью до наоборот"
Если бы у нас была реальная статистика, мы могли бы посчитать скорректированный коэффициент детерминации R2, то есть насколько хорошо модель описывает реальные данные. И вот если у модели хороший R2 и мы добавим еще один фактор, то скорректированный R2 уменьшится, потому что добавление еще одного фактора ничего существенного нам не прибавляет, а вот проблемы учета взаимодействия между факторами увеличивает - до полной непригодности модели. Поэтому при прочих равных чем меньше факторов, тем лучше.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 04:31 pm |
|---|
| | Re: факторы среды | (Link) |
|
> если у модели хороший R2 и мы добавим еще один фактор, то > скорректированный R2 уменьшится Т.к. у нас R2 нет, то мы никак не можем быть уверены что он - "хороший".
> обавление еще одного фактора ничего существенного нам не прибавляет А у нас тут факторов что-то не густо
> Поэтому при прочих равных чем меньше факторов, тем лучше. В идеале значит 0. Да только нет здесь прочих равных.
![[User Picture]](http://lj.rossia.org/userpic/176338/6290) | | From: | noruas |
| Date: | February 27th, 2007 - 09:34 am |
|---|
| | Re: текст программы | (Link) |
|
P.S. > Эволюция организмов в данном случае = эволюция программы. О какой "программе" речь? Те 30 строк кода которые для меня означают "программу" не эволюционируют, они неизменны в процессе исполнения.
| | В качестве извинений за отобранное время | (Link) |
|
Прстая Java-версия того же кода, без GUI и записи статистики (все результаты валят в консоль), но это можно прикрутить при потребности. Кстати кажется результаты не репродюсаются. (В коде в комментах куски оригинального кода и это все выглядит жутко здесь, но в Эклипсе при подсветке синтаксиса читаемость нормальная)
import java.util.Random;
/*
10 REM Модель генетической эволюции - одномерный клеточный автомат GEMOCA
15 REM Дима Даннер, 2007
*/
public class GEM {
public static void main(String[] args) {
/*
* 20 REM объявление и установка параметров (см.описание модели)
* 22 coevol=0.02: REM коэффициент эволюции
* 25 cell=0: REM текущая клетка
* 30 color=0: colors=1: REM параметры текущего цвета и сложности программы
* 40 noise=0.1: REM физическая вероятность ошибки
* 50 cycle=0: REM счетчик циклов
* 60 repro=0: REM счетчик успешных воспроизведений
* 71 error=0: REM флаг ошибки
* 80 corepro=0: REM коэффициент воспроизведения
* 85 REM здесь обявляются массивы для сбора статистики
*/
double cEvol=0.02; // DD: коэффициент эволюции SR: что бы это могло означать?..
int color=0; // DD: параметры текущего цвета SR: какие такие параметры? это текущий цвет,
// (или его идентификатор - как хотите), но никакие не параметры
int nColors=1; // DD: и сложности программы
double cNoise=0.1; // DD: физическая вероятность ошибки SR: занятный термин "физическая вероятность"
int nCycle; // DD: счетчик циклов
int nSucRep=0; // DD: счетчик успешных воспроизведений
// boolean fError=false; // DD: флаг ошибки
double cRepro=0; // DD: коэффициент воспроизведения
double eLif=0.5; // SR: требуемый порог выживаемости
int tnCycle=4000000; // SR: Количество циклов, которое нужно выполнить
Random rnd=new Random();
// int colored[]=new int[tnCycle]; // SR: Массив сгенерированных значений "цвета"
// int numcols[]=new int[tnCycle]; // SR: Кол-во цветов (слоэность)
// double ssrates[]=new double[tnCycle]; // SR: % успешных "репликаций"
for(nCycle=0;nCycle[ Error: Irreparable invalid markup ('<tncycle;ncycle++)>') in entry. Owner must fix manually. Raw contents below.] Прстая Java-версия того же кода, без GUI и записи статистики (все результаты валят в консоль), но это можно прикрутить при потребности. Кстати кажется результаты не репродюсаются.
(В коде в комментах куски оригинального кода и это все выглядит жутко здесь, но в Эклипсе при подсветке синтаксиса читаемость нормальная)
<pre> import java.util.Random;
/* 10 REM Модель генетической эволюции - одномерный клеточный автомат GEMOCA 15 REM Дима Даннер, 2007 */
public class GEM { public static void main(String[] args) { /* * 20 REM объявление и установка параметров (см.описание модели) * 22 coevol=0.02: REM коэффициент эволюции * 25 cell=0: REM текущая клетка * 30 color=0: colors=1: REM параметры текущего цвета и сложности программы * 40 noise=0.1: REM физическая вероятность ошибки * 50 cycle=0: REM счетчик циклов * 60 repro=0: REM счетчик успешных воспроизведений * 71 error=0: REM флаг ошибки * 80 corepro=0: REM коэффициент воспроизведения * 85 REM здесь обявляются массивы для сбора статистики */ double cEvol=0.02; // DD: коэффициент эволюции SR: что бы это могло означать?.. int color=0; // DD: параметры текущего цвета SR: какие такие параметры? это текущий цвет, // (или его идентификатор - как хотите), но никакие не параметры int nColors=1; // DD: и сложности программы double cNoise=0.1; // DD: физическая вероятность ошибки SR: занятный термин "физическая вероятность" int nCycle; // DD: счетчик циклов int nSucRep=0; // DD: счетчик успешных воспроизведений // boolean fError=false; // DD: флаг ошибки double cRepro=0; // DD: коэффициент воспроизведения double eLif=0.5; // SR: требуемый порог выживаемости int tnCycle=4000000; // SR: Количество циклов, которое нужно выполнить Random rnd=new Random();
// int colored[]=new int[tnCycle]; // SR: Массив сгенерированных значений "цвета" // int numcols[]=new int[tnCycle]; // SR: Кол-во цветов (слоэность) // double ssrates[]=new double[tnCycle]; // SR: % успешных "репликаций" for(nCycle=0;nCycle<tnCycle;nCycle++) { /* * 90 REM ** ГЛАВНЫЙ ЦИКЛ ** * 95 REM ВОСПРОИЗВЕДЕНИЕ * 100 cycle=cycle+1 * 110 color=color+1: IF color>colors THEN color=1: error=0: REM следующий цвет * 120 x=RND: IF x<noise THEN error=1: REM ошибка с вероятностью noise * 130 cell=color: IF error=1 THEN cell=INT (RND*colors)+1: color=cell * 140 IF color=colors AND error=0 THEN repro=repro+1: REM успешное воспроизведение * 146 LET corepro=repro/cycle: REM подсчет коэффициента воспроизведения
* 147 REM МУТАЦИЯ (см. описание модели) * 150 LET x=RND: REM проверка условия усложнения программы * 160 IF x<coevol/4 AND corepro>0.5 THEN colors=colors+1: REM усложнение программы * 170 IF corepro<0.5-(colors-1)*coevol THEN colors=colors-1: REM упрощение программы - отбор * 180 IF colors=0 THEN colors=1
* 185 REM ** КОНЕЦ ГЛАВНОГО ЦИКЛА ** * */ if(++color>nColors) { color=1; // SR: почему не color=0 ? // fError=false; } if(rnd.nextDouble()<cNoise) // if(fError) { color=(int)rnd.nextDouble()*nColors; // fError=true; // System.out.println("Colors = "+nColors+"; Generated: "+colored[nCycle]); } else if(color==nColors) { nSucRep++; } // colored[nCycle]=color; // SR: Мы записываем в colored значения, которые никогда не читаем cRepro=((double)nSucRep)/(nCycle+1); if(rnd.nextDouble()<(cEvol/4) // SR: почему cEvol/4 ? && cRepro>eLif) nColors++; if(cRepro<eLif-(nColors-1)*cEvol && nColors>1) nColors--; </pre> *cut due to char count limit for commetn*
| | Re: В качестве извинений за отобранное время | (Link) |
|
*continuation*
/*
* 186 REM ВЫХОДЫ ИЗ ГЛАВНОГО ЦИКЛА
* 190 IF cycle/20000<>INT (cycle/20000) THEN GO TO 90: REM дискретизация для сбора статистики
* 195 REM после этой строки идет сбор статистики, показ промежуточного состояния,
* 196 REM изменение вероятности ошибки итд
* 500 IF cycle<4000000 THEN GO TO 90: REM выход из главного цикла, в данном случае 4 млн. попыток
* 501 REM КОНЕЦ РАСЧЕТОВ
*
* 510 REM здесь идет подсчет окончательной статистики, ее показ и сохранение
* 520 REM КОНЕЦ ПРОГРАММЫ
*/
if(nCycle%20000==0) // SR: Здесь "сбор статистики, показ
// промежуточного состояния, изменение вероятности ошибки итд"
{
System.out.println("cycle "+nCycle);
System.out.println("Colors (complexity): "+nColors);
System.out.println("Rep. coef: "+cRepro);
// System.out.println("Noise coef: "+(1-cRepro));
}
}
}
}
![[User Picture]](http://lj.rossia.org/userpic/189175/815) | | | Re: В качестве извинений за отобранное время | (Link) |
|
ОГРОМНОЕ спасибо! Буду разбираться. Маленькое уточнение : System.out.println("Noise coef: "+(1-cRepro)); тут бы надо бы выводить cNoise (если мы во время теста каким-либо образом его меняем, а так он просто константа)? Сорри, я явы вообще не знаю, наощупь ориентируюсь... А сколько времени занимает прогон 4 млн. циклов?
PS. По поводу результатов мне кажется, что по консольному выводу сложности и воспроизводимости (это восемь миллионов значений), сложно сказать, репродюсируются результаты или нет. ;)))
Еще раз СПАСИБО!
| | Re: В качестве извинений за отобранное время | (Link) |
|
Огромное незачто ибо без гуя (GUI) выглядит все это не очень. На выходных если будет время может прикручу. Ява сама по себе не сильно хитра (там основные "завороты" с технологиями а не с самим языком (технологии в смысле напр. Swing на котором GUI пишется и т.п.)), могу книжками на родном языке поделится если хочеш.
> System.out.println("Noise coef: "+(1-cRepro)); > тут бы надо бы выводить cNoise
Насчет коэфНойза это вроде как ЧислоНеудачныхРепл./ЧислоВсехРепл., уг? А коефРепр. это ЧислоУдачныхРепл./ЧислоВсехРепл. Очевидно, что ЧислоНеудачныхРепл = (ЧислоВсехРепл - ЧислоУдачныхРепл). Отсюда коефНойз = ЧНР/ЧВР = (ЧВР-ЧУР)/ЧВР = 1 - ЧУР/ЧВР = 1 - коефРепр Такчто (1 - cRepro) это вроде как cNoise. Уг?
> по консольному выводу ... сложно сказать Ну... да (-:
>могу книжками на родном языке поделится если хочеш. Если можно, да, пожалуйста... компьютерная грамотность в последнее время наболевшая тема :) >Такчто (1 - cRepro) это вроде как cNoise. Уг? нне совсем... точнее, наоборот (cNoise константа) и только при единичной сложности программы. Удачной-неудачной считается не одна реплика (появление клетки), а их цепочка. >4 000 000 циклов проходит... почти незаметно (-: Ндя :) это как дэйзиуорлд на яве прогоняется за секунд десять, даже не успеваешь насладиться зрелищем :)
| | Re: В качестве извинений за отобранное время | (Link) |
|
P.S. У меня на работе (проц P4, 512MB оперативки) 4 000 000 циклов проходит... почти незаметно (-:
| From: | (Anonymous) |
| Date: | December 10th, 2008 - 09:33 am |
|---|
| | Хороший блог | (Link) |
|
Хороший у вас блог. | |