Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)

Автор Alexy, марта 26, 2011, 19:21:15

« назад - далее »

Vuto

Цитата: Игорь Антонов от апреля 14, 2011, 08:15:33
А зачем нам передавать какому-либо сумматору количество аллелей особей, не отобранных для размножения? Какую дополнительную информацию это даст для моделирования динамики отбора? 
ага, значит, я был прав.
Разница лишь в одном - в разной интерпретации. 8)
Вы просто считаете не совсем то и не совсем так.  ;D
Это всё равно, что в перепись населения России попадали бы только те, кто имеет детей.

Но это лирика. Вернёмся к нашим баранам, то бишь особям.
Итак, что мне не нравится в моделировании - это моногамность и одинаковость деторождения и многодетность.

Не хотите сильно изменять программу, что ж, покажу как можно не сильно меняя код.
Первое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать).
Второе, добавить (? в класс Genom) параметр - количество детей.

Далее, как и в оригинале выбирается случайная особь. Но, она изымается лишь тогда когда количество детей у неё будет total_children, а если меньше, то лишь параметр лишь увеличивается. Что-то вроде такого
Individual o1 = obj[index];
if (++obj[index].childrens > (total_children - 1))  obj.RemoveAt(index);


Ну и естественно, придётся сделать иной критерий окончания размножения, не такой            while (obj.Count > 1) // Цикл по родительским парам

Alexy

Цитата: Vuto от апреля 16, 2011, 00:41:50Ввести параметр - количество детей
Это наверное действительно может оказать большое влияние на поведение модели
ЦитироватьЭто всё равно, что в перепись населения России попадали бы только те, кто имеет детей
А зачем им попадать, раз они ни в каких "видах деятельности" не участвуют вообще (ведь в данной программе не моделируется какие-либо межвидовые взаимодействия)
ЦитироватьПервое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать)
А зачем? На что может повлиять эта небольшая разница (между, если оставить ровно, и, если сделать ЧУТЬ больше)?

Imperor

Цитата: Alexy от апреля 16, 2011, 10:47:15
Это наверное действительно может оказать большое влияние на поведение модели
Нет, не повлияет.
Во-первых, параметр "число детей" в модели задается. Т.е. изменить его можно. Правда, все будут размножаться одинаково. Но если мы сделаем разное число детей - то это уже у нас новый признак получится (влияющий на приспособленность).
Если же мы сделаем этот параметр не четким, а плавающим вокруг какого-то значения (например, от 0 до 4), то в поведении модели не изменится абсолютно ничего, т.к. всё равно статистически останется "при прочих равных" (т.е. среднем числе детей, равным столько-то). Т.е. это просто бессмысленное усложнение алгоритма.

Alexy

ЦитироватьЕсли же мы сделаем этот параметр не четким, а плавающим вокруг какого-то значения (например, от 0 до 4), то в поведении модели не изменится абсолютно ничего, т.к. всё равно статистически останется "при прочих равных" (т.е. среднем числе детей, равным столько-то)
Возможно при плавающем вокруг какого-то значения (например, от 0 до 4) числе детей будет другая скорость дрейфа, чем при постоянном числе детей

Хотя в прогр И Антонова и так число ОТОБРАННЫХ особей зависит и от случайности и от их собственной приспособленности, а на результаты работы программы вряд ли ощутимо повлияет та разница, что по настоящему количество ОТОБРАННЫХ особей зависит не только от их собственной приспособленности, а и их родителей?

Vuto

Цитата: Alexy от апреля 16, 2011, 10:47:15А зачем им попадать, раз они ни в каких "видах деятельности" не участвуют вообще
Они как минимум участвуют в ЖИЗНЕдеятельности  :)
Цитировать
ЦитироватьПервое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать)
А зачем? На что может повлиять эта небольшая разница (между, если оставить ровно, и, если сделать ЧУТЬ больше)?
Для того, что бы у особей не всегда было максимальное количество детей. А у некоторых по одному, у других по двое, у третих по трое,....

Vuto

Цитата: Imperor от апреля 16, 2011, 14:14:51Если же мы сделаем этот параметр не четким, а плавающим вокруг какого-то значения (например, от 0 до 4), то в поведении модели не изменится абсолютно ничего, т.к. всё равно статистически останется "при прочих равных" (т.е. среднем числе детей, равным столько-то). Т.е. это просто бессмысленное усложнение алгоритма.
Это вы на пальцах посчитали или это уже обосновали до вас?

Imperor


Alexy

Цитата: Vuto от апреля 17, 2011, 00:01:37Они как минимум участвуют в ЖИЗНЕдеятельности  :)
Вообще-то да, программе И Антонова моделируются 3 аспекта жизнедеятельность - отбор, деторождение и КОКУРЕНЦИЯ за поступающий с постоянной скоростью ресурс (которая моделируется ~ постоянством общей численности особей)
На эту конкуренцию не отбранные для размоножения особи ДОЛЖНЫ БЫЛИ БЫ В ПРИРОДЕ влиять
Цитата: Vuto от апреля 17, 2011, 00:01:37
Цитата: Alexy от апреля 17, 2011, 00:01:37- Первое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать)
- А зачем? На что может повлиять эта небольшая разница (между, если оставить ровно, и, если сделать ЧУТЬ больше)?
Для того, что бы у особей не всегда было максимальное количество детей. А у некоторых по одному, у других по двое, у третих по трое...
Действительно,
в природе количество ВЫЖИВШИХ детей особи должно зависить не только от приспособленностей самих детей, а и от приспособленностей их родителей,
а
в программе количество ВЫЖИВШИХ детей особи от приспособленности родителя зависит лишь по принципу - ИЛИ РОВНО 0 (для особей, НЕотобранных к размножению) ИЛИ РОВНО N (где N - выбранное в программе постояннное число детей у пары)

Кажется, об этом когда-то писал Vuto

Возможно ли, что из-за этого в программе ОТБОР идет ощутимо быстрее, чем в природе?

Макроассемблер


Vuto

Цитата: Alexy от апреля 17, 2011, 11:07:17
На эту конкуренцию не отбранные для размоножения особи смогут влиять
Скажем так, в этой, слишком простой модели они не влияют на конкуренцию (хотя, при усложнении могут влиять и очень сильно), но их неучёт может влиять на статистику.

Цитироватьв программе количество ВЫЖИВШИХ детей особи от приспособленности родителя зависит лишь по принципу - ИЛИ РОВНО 0 (для особей, НЕотобранных к размножению) ИЛИ РОВНО N (где N - выбранное в программе постояннное число детей у пары)
Кажется, об этом когда-то писал Vuto
Возможно ли, что из-за этого в программе ОТБОР идет ощутимо быстрее, чем в природе?
Согласен.
Кроме этого, из-за большого количества детей, доля выживших значительно меньше, чем у тех, у кого мало детей.
Например, в программе, если есть +1% бонус, то в популяции с 2мя детьми, этот бонус ВООБЩЕ не ощущается от поколения в поколение, а вот у популяции с 4мя детьми, уже 300м поколении доля доминантов достигает 60%-70%.
Более того, если есть бонус +50%, то в популяции с 2мя детьми, он ни даёт НИКАКОЙ форы в программе Антонова даже в 1500 поколении.

Imperor

Цитата: Vuto от апреля 17, 2011, 16:24:43
Более того, если есть бонус +50%, то в популяции с 2мя детьми, он ни даёт НИКАКОЙ форы в программе Антонова даже в 1500 поколении.
А почему он, собственно, должен давать фору, если в этой ситуации вообще нет борьбы за выживание?
Не забывайте, что принцип естественного отбора работает только в том случае, если имеет место борьба за существование.
Как может действовать принцип естественного отбора там, где абсолютно ВСЕ особи выживают и оставляют потомство (которое тоже всё выживает и оставляет потомство)?
Собственно, это фундаментальные основы данной теории (естественного отбора).

P.s. Уважаемый Vuto. Хочу попробовать направить Вашу энергию в конструктивное русло :)
А не кажется ли Вам интересным математически смоделировать модель Лотки-Вольтерра, так, как Вы это сделали в соответствующей ветке, но только чтобы там было тройное уравнение (а не двойное), т.е. не "хищник-жертва", а "трава-травоядное-плотоядное".
И посмотреть, подобное усложнение (на один добавочный элемент) стабилизирует модель, или дестабилизирует?
Если стабилизирует, то, следовательно, модель Лотки-Вольтерра вполне годится для принципиального понимания природных процессов.
Если же дестабилизирует, то, естественно, о модели Лотки-Вольтерра придется забыть, как о модели с неверными принятыми исходными положениями.
(если же стабильность останется на прежнем уровне, то и вопрос тоже останется повисшим, но всё равно было бы интересно посмотреть).

Alexy

Цитата: Vuto от апреля 17, 2011, 16:24:43Кроме этого, из-за большого количества детей, доля выживших значительно меньше, чем у тех, у кого мало детей
Вы тут имеете в виду, что в программе КОНКУРИРУЮТ МЕЖДУ СОБОЙ ТОЛЬКО ДЕТИ ОДНИХ РОДИТЕЛЕЙ?
По моему это не так (правда я сам не смотрел код, а формировал представление о программе по словам Игоря Антонова)
Или я Вас не правильно понял?
Цитата: Vuto от апреля 17, 2011, 16:24:43Например, в программе, если есть +1% бонус, то в популяции с 2мя детьми, этот бонус ВООБЩЕ не ощущается от поколения в поколение, а вот у популяции с 4мя детьми, уже 300м поколении доля доминантов достигает 60%-70%.
Более того, если есть бонус +50%, то в популяции с 2мя детьми, он ни даёт НИКАКОЙ форы в программе Антонова даже в 1500 поколении
Выбирать число детей НА ПАРУ родителей равным 2 явно не стоит (ведь тогда никому не надо ни с кем конкурировать ибо получается 1 ребенок на 1 родителя)
Надо выбирать >2
Если мы возьмем уже 3 ребенка на пару, то любые бонусы очевидно будут ощущаться?

Alexy

Цитата: Imperor от апреля 17, 2011, 16:24:43т.е. не "хищник-жертва", а "трава-травоядное-плотоядное".
И посмотреть, подобное усложнение (на один добавочный элемент) стабилизирует модель, или дестабилизирует?
Сомневаюсь, что стабилизирует
В литературе (по крайней мере про возможные решения планктонного парадокса) вроде такого не пишут

Vuto

Цитата: Imperor от апреля 18, 2011, 14:43:21А почему он, собственно, должен давать фору, если в этой ситуации вообще нет борьбы за выживание?
Знаете, Имперор, что самое смешное?
Я, признающий ЕО, вижу что модель работает неверно, указываю на это, а вы, непризнающий ЕО, видите, что модель работает правильно )))
Что, в природе, если менее 3 детей у родителей, то ЕО не работает????
Основная проблема модели - моногамность и максимальность детей.

ЦитироватьP.s. Уважаемый Vuto. Хочу попробовать направить Вашу энергию в конструктивное русло :)
Давайте.
Цитировать
А не кажется ли Вам интересным математически смоделировать модель Лотки-Вольтерра, так, как Вы это сделали в соответствующей ветке, но только чтобы там было тройное уравнение (а не двойное), т.е. не "хищник-жертва", а "трава-травоядное-плотоядное".
Скажем так, не сильно было интересно.
Хотя, я моделировал ТРОЙНОЕ уравнение, правда не жертва-хищник, а "жертва = 2 хищника".
Если что, можно смоделировать и "трава-травоядное-плотоядное".
ЦитироватьИ посмотреть, подобное усложнение (на один добавочный элемент) стабилизирует модель, или дестабилизирует?
А вот проверять систему на стабильность - уж слишком сложная задача для меня, тут необходимо применять нетривиальные методы мат.анализа.
А сравнивать стабильности 2х систем - куда более сложная задача.

Vuto

Цитата: Alexy от апреля 18, 2011, 19:21:07
Цитата: Vuto от апреля 17, 2011, 16:24:43Кроме этого, из-за большого количества детей, доля выживших значительно меньше, чем у тех, у кого мало детей
Вы тут имеете в виду, что в программе КОНКУРИРУЮТ МЕЖДУ СОБОЙ ТОЛЬКО ДЕТИ ОДНИХ РОДИТЕЛЕЙ?
Нет, не это.
Дело в том, что формально некоректно сравнивать эту модель, но с разными количествами детей.
При 2х отпрысках выживают ВСЕ дети, при 3х - 2/3, при 4х - 1/2 детей.
И, если рассматривать модель И.Антонова, то с моими поправками для смен пар и разноплодовитостью можно лишь исправить частично исправить ситуацию.
А вот если исправить фитнес - не вероятность выживания потомства, а вероятность стать родителем, можно значительно шире исправить ситуацию.

ЦитироватьЕсли мы возьмем уже 3 ребенка на пару, то любые бонусы очевидно будут ощущаться?
Да