paleoforum.ru

Форумы сайта «Проблемы эволюции» => Форум сайта «Проблемы эволюции» => Тема начата: Alexy от марта 26, 2011, 19:21:15

Название: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от марта 26, 2011, 19:21:15
ЦитироватьДжон Бёрдон Сандерсон Хо́лдейн (http://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%BB%D0%B4%D0%B5%D0%B9%D0%BD,_%D0%94%D0%B6%D0%BE%D0%BD_%D0%91%D1%91%D1%80%D0%B4%D0%BE%D0%BD_%D0%A1%D0%B0%D0%BD%D0%B4%D0%B5%D1%80%D1%81%D0%BE%D0%BD) (англ. John Burdon Sanderson Haldane; сокращённо Дж. Б. С. Холдейн, англ. J. B. S. Haldane; 5 ноября 1892, Оксфорд, Оксфордшир, Великобритания — 1 декабря 1964, Бхубанешвар, штат Орисса, Индия) — английский биолог (генетик, эволюционист, физиолог, биохимик, биометрист), популяризатор и философ науки. Один из основоположников современной популяционной, математической, молекулярной и биохимической генетики, а также синтетической теории эволюции. Член Лондонского королевского научного общества (с 1932), иностранный почётный член академий наук целого ряда стран, включая СССР (с 1942). Член Коммунистической партии Великобритании с 1937 по 1950
Почему у Холдейна скорости полной элиминации аллелей зависит ЛИНЕЙНО от числа локусов, а в программе И Антонова (КОТОРАЯ ПО ИДЕЕ моделирует обычное поведение аллелей в нескольких локусах) не наблюдавется никакой зависимости!
Цитата: Imperor от сентября 15, 2010, 13:49:24тестирование модели И. Антонова ясно показывает, что скорость отбора с числом отбираемых признаков не связана никак (даже линейно не связана) - что один аллель отбирается... что двадцать... число необходимых для этого поколений примерно одинаково
Может Холдейн (коммунист, красавец и спортсмен) при выводе своей дилеммы сделал какую-то ошибку в математических выкладках?
Или сделал какие-то неестественные предположения (которые в большинстве природных случаев не соответствуюте действительности?

К сожалению я так и не прочитал его статьи полностью, просмотрел только бегло и не нашел краткого описания сделанных в его модели предположений (оно видимо растянуто на пол статьи)
-----------------------
Вот 2 статьи Холдейна
"the cost of natural selection" http://www.blackwellpublishing.com/ridley/classictexts/haldane2.pdf
"More precise expressions for the cost of natural selection" http://www.ias.ac.in/jarch/jgenet/57/351.pdf

и новая статья Nunney "The Cost of Natural Selection Revisited" 2003 г http://www.sekj.org/PDF/anzf40/anzf40-185.pdf (там есть график, где видна четкая линейная зависимость "минимального интервала между аллельными заменами" от "количества локусов")
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от марта 26, 2011, 19:44:54
У меня есть следующие предположения о том, почему выводы Холдейна не совпад с результатами моделирования И Антоновым

1) судя по http://www.gate.net/~rwms/haldane.html,
Холдейн вроде делал предположения о "reproductive excess limit" (не совсем понятно, что имеется в виду - если не ошибаюсь, что потомков не может родится более, чем на определенный % больше от численности родительского поколения?),
кроме того
2) если не ошибаюсь, у Холдейна
вероятность отбора данной особи не зависела от фитнеса ДРУГИХ особей (а у И Антонова она, если правильно помню, помимо фитнеса данной особи и текущей численности особей зависит и от от фитнеса других особей, а именно растет при ПОНИЖЕНИИ среднего фитнеса по популяции),
и
3) у Холдейна в популяции много носителей вредных аллелей и очень мало - нейтральных

Если эти 3 пункта вставить в программу И Антонова,
то,
учитывая, что вначале у почти всех (а скорее всего у вообще ВСЕХ) особей очень низкие фитнесы (если рассматривается много локусов, то фитнес особи=произведению фитнесов каждого локуса),
возможно произойдет полное вымирание всей популяции за несколько поколений? (Может для этого достаточно только 1 и 3 пунктов?)
Хотя может я ошибся в 1 и/или 2-м пункте?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от марта 29, 2011, 15:11:02
Имхо, дилеммы Холдейна не существует в природе.
Если я правильно понял, в ней не учитывалось то, что в одной особи могут сойтись сразу много вредных мутаций. Тогда приспособленность этой особи получится соответственно очень низкой. И получится, что погибнет одна особь, а популяция в целом освободится сразу от множества вредных мутаций (т.е. по механизму Кондрашова - избавления от вредных мутаций в половой популяции).
Из-за этого неучтенного эффекта модель Холдейна и "замедляется".
Если же встроить этот "Кондрашовский" эффект в дилемму Холдейна, то замедления не будет, а получится, что каждый ген (из группы) отбирается с той же скоростью, как-будто он вообще один.
Об этом в ветке "О влиянии полового отбора..." нам говорил Ромашишка1971 (цитируя кого-то). Но мы тогда не обратили внимания на его слова. Я, например, был убежден, что автор "дилеммы Холдейна" это обстоятельство должен был учесть в своей модели. Не допускал я так же, что таких простых вещей биологи 50 лет не замечали.
Но оказалось, действительно, не замечали.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от марта 29, 2011, 16:15:46
Но в то же время в книге изд Оксф универа "Natural Selection - Domains, Levels, and Challenges" GEORGE C. WILLIAMS (Oxford Series in Ecology and Evolution. Oxford University Press 1992) на стр. 143-148 вполне серьёзно говорят о "дилемме Холдейна" и ещё в конце сказано "I think the time has come for renewed discussion and experimental attack on Haldane's dilemma" (всю цитату про дилемму см в теме "Королева эволюционных проблем" - какая гипотеза л" на стр 4 http://www.paleo.ru/forum/index.php?PHPSESSID=e5be27db0f5ccffe51f7d3110035483c&topic=1870.45 ответ 52)

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

Ведь по идее такая статья должна быть (причем в серьезном журнале)?

Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от марта 29, 2011, 16:29:19
Ну, в Оксфорде, похоже, тоже обычные люди сидят :)
Имхо, компьютерные модели гораздо более простые. То, что в мат. моделировании нужно изображать четырехэтажными формулами (в которых легко запутаться), в компьютерном моделировании реализуется весьма легко. У меня лично к ним (компьютерным моделям) больше доверия.
Скорее всего, ошибка дилеммы именно в неучете "кондрашовского" эффекта "группового вылетания" признаков (в одной-двух особях).

А по поводу "опровергающей статьи" - так вроде Ромашишка как раз и цитировал автора такой статьи? Или я уже что-то запамятовал?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от марта 29, 2011, 16:39:54
Кстати, в самом начале (уже очень давно), когда я просто логически рассуждал, у меня тоже получалось, что признаки (их число) не должны оказывать друг на друга замедляющего действия. Но именно математики меня "сбили с понталыку" Я решил, что математикам виднее :) И даже стал горячим их сторонником :)
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от марта 29, 2011, 17:45:43
Не очень понятна выделенная цветом фраза (отсюда (http://www.gate.net/~rwms/haldane1.html)) о критике дилеммы Холдейна -
William Feller, P.A.P. Moran, and Joe Felsenstein all proposed that Haldane's Dilemma did not apply to beneficial mutations (mutations that produce genes that benefit the organism without a change to the environment that is detrimental to all of the organisms not carrying the mutated gene)

Вот какие-то доступные статьи о дилемме - Proc Natl Acad Sci U S A. 1974 "Solutions to the Cost-of-Selection Dilemma" Verne Grant and Robert H. Flake pdf (http://www.ncbi.nlm.nih.gov/pmc/articles/PMC434284/pdf/pnas00073-0073.pdf)
Вот статья о цене замен в конечной популяции 1970 г http://www.nature.com/hdy/journal/v28/n1/pdf/hdy19726a.pdf
А вот статьи известного Вероятностника Феллера по этому поводу
Feller, W. 1966 On the Influence of Natural Selection on Population Size PNAS 55 733-738 http://www.ncbi.nlm.nih.gov/pmc/articles/PMC224221/pdf/pnas00143-0065.pdf
Feller W 1966 On the Influence of Natural Selection on Population Size http://journals.cambridge.org/article_S0016672300010260
http://journals.cambridge.org/action/displayFulltext?type=1&fid=4526312&jid=GRH&volumeId=9&issueId=01&aid=1747468

Библиография по этому вопросу - Substitution Cost Bibliography
http://www.gate.net/~rwms/Bibliography.html
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от марта 31, 2011, 00:48:50
Кстати, что за программа Антонова?

Цитата: Imperor от марта 29, 2011, 16:29:19
Имхо, компьютерные модели гораздо более простые. То, что в мат. моделировании нужно изображать четырехэтажными формулами (в которых легко запутаться), в компьютерном моделировании реализуется весьма легко. У меня лично к ним (компьютерным моделям) больше доверия.
У "компьютерных моделях" (то бишь численном моделировании) есть одна очень плохая вещь - неизбежное накопление погрешности вычисления в интегральном исчислении.
В "математических" моделях(параметрических) одно плохо - интегралы почти все "не берущиеся", поэтому тоже всё вычисляется с погрешностями.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 01, 2011, 12:26:39
Цитата: ImperorВ дилемме Холдейна не учитывалось то, что в одной особи могут сойтись сразу много вредных мутаций, получится, что погибнет одна особь, а популяция в целом освободится сразу от множества вредных мутаций... Об этом в ветке "О влиянии полового отбора..." нам говорил Ромашишка1971 (цитируя кого-то)
Наверное это сообщения Ромашишки1971 на стр 12 темы "Влияние полового отбора, в т ч и моды..." (http://www.paleo.ru/forum/index.php/topic,2350.165.html). В Ответе #171  Ромашишка 1971 упоминает 2 вещи, которые вроде не были учтены Холдейном

1) Цену потери особи с более чем одной вредной мутацией и
2) Ограниченную численность популяции
(которая подробно разбирается Ромашишкой1971 в Ответе #173 )

В Ответе #170 Ромашишка 1971 заметил, что в отличие от модели Холдейна в модели И Антонова нет мутационного процесса
Цитата: Ромашишка1971 от июня 19, 2009, 23:34:07Ещё раз посмотрите  заметку (http://www.sekj.org/PDF/anz40-free/anz40-185.pdf), кто не читал.
Дело в том, что при первоначальной постановке задачи упущен один параметр.
Холдейн имел ввиду, не только то, что нужно зафиксировать полезные признаки и вытеснить вредные признаки сразу в более, чем одной аллели, но и успеть разгрузить популяцию от создаваемого мутациями генетического груза. Мутации, в большинстве случаев, вредные и рецессивные. Таковы были условия Холдейна. Leonard Nunney в своём эксперименте учитывает мутации и обращает внимание читателя на них особо. Опыт показал, что способность популяции зафиксировать полезные признаки, сильно зависит от появления мутаций. В первом эксперименте была задана частота мутации в 1 мутацию на 300 поколений на один признак. При такой частоте освободиться от вновь возникающих мутаций популяция смогла уверенно, только при численности в 50000 особей и больше. При численности от 5000 до 50000 особей результат мог получиться разным. А при численности менее 5 000 особей, популяция никогда не освобождалась от груза. Однако, при понижении частоты мутаций до 1 мутации на 700 поколений на 1 признак, популяция стала способна освобождаться от груза мутаций при численности от 5000 особей. То есть, понижение частоты мутаций в 2,33 раза, понизило необходимую численность популяции в 10 ( :!: ) раз. Зависимость сильно нелинейна.
В нашей задаче частоты мутаций вообще нет, может и не стоит удивляться, что программа так быстро работает?
Приведенная ссылка на статью Nunney не раб. Возможно это была статья "The cost of natural selection revisited" 2003? (вот её PDF (http://www.sekj.org/PDF/anzf40/anzf40-185.pdf))
Там есть график, где видна четкая ЛИНЕЙНОСТЬ другой зависимости - а именно "минимального интервала между аллельными заменами" от "количества локусов"!!!
Но может ли эта линейность быть вызвана введением в модель процесса мутагенеза?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 01, 2011, 14:00:08
Цитата: Vuto от марта 31, 2011, 00:48:50У "компьютерных моделях" (то бишь численном моделировании) есть одна очень плохая вещь - неизбежное накопление погрешности вычисления в интегральном исчислении
Так в компъютерных моделях с дискрет колич особей и дискрет временем же нету вообще интегрального исчисления?
Цитата: Vuto от марта 31, 2011, 00:48:50Кстати, что за программа Антонова?
Описание и несколько вариантов самой программы есть в сообщениях Игоря Антонова втеме "влияние полового отбора (в том числе и "моды") на" на стр 11 (http://www.paleo.ru/forum/index.php/topic,2350.150.html)и ещё через одну страницу
Если правильно понял и помню,
В этой программе время дискретно, а колич особей целочисленно
Новых мутаций не происходит
- просто в начале в популяции имеются какие-то количества разных аллелей каждого гена, после чего они уже не образуются
Если что-то ещё интересуюет об этой программе, спрашивайте - постараюся вспомнить
Цитата: Imperor от марта 29, 2011, 16:29:19Скорее всего, ошибка дилеммы именно в неучете "кондрашовского" эффекта "группового вылетания" признаков (в одной-двух особях)
А об этом эффекте можно почитать где-то на русском?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 01, 2011, 20:03:32
Цитата: AlexyА об этом эффекте можно почитать где-то на русском?
Уважаемый Alexy.
Этот "кондрашовский" механизм, собственно, был описан уже Ромашишкой1971. Вот он:
"1) Цена потери особи с более чем одной вредной мутацией"
Этот эффект должен быть очень силен и именно он и не дает отбору замедляться. В случае многих сразу отбирающихся аллелей отбор идет, в основном, на "нижнем полюсе", но зато очень сильно.
Вот здесь я пояснял этот механизм:
http://kuraev.ru/index.php?option=com_smf&Itemid=63&topic=442026.msg5828026#msg5828026
И посмотрите там ниже по тексту - форумчанин Константин дал ссылки на то, что об этом же эффекте писали еще в 70-х годах Кимура и др. Только он назывался тогда по другому. Это я его "кондрашовским" назвал :)
Кроме того, Константин отметил, что плодовитость должна быть достаточно высокой, чтобы этот механизм успешно работал.

Я почти уверен (до сих пор расчеты Холдейна так и не осилил), что у него этот эффект не учтен. Если же учтен, то тогда я уже не знаю :)

P.s. По поводу линейной зависимости в исследовании, о котором Вы говорите - мне кажется, Вы правы. Если там идет постоянная "подпитка" новыми мутациями, то наверное, именно из-за этого линейная зависимость.
А вообще, надо бы еще раз обратиться к Игорю Антонову, и попросить смоделировать дилемму Холдейна не с 1% особей, а вообще с одной особи, и еще с постоянным "вплеском" новых мутаций. Так будет ближе к реальности, но (имхо) ничего принципиально не изменит.
А заодно можно попросить смоделировать и "королеву эволюционных проблем" :) Думаю, там действительно проблемы. А "дилемма Холдейна", имхо математический артефакт, а не "проблема эволюции".
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 04, 2011, 10:28:08
Цитата: Alexy от апреля 01, 2011, 14:00:08
Цитата: Vuto от марта 31, 2011, 00:48:50У "компьютерных моделях" (то бишь численном моделировании) есть одна очень плохая вещь - неизбежное накопление погрешности вычисления в интегральном исчислении
Так в компъютерных моделях с дискрет колич особей и дискрет временем же нету вообще интегрального исчисления?
Модель не зависит от дискретности времени или особей или чего-то ещё.
Модель может быть интегральной, может - дискретной, может - совершенно иной.
Если она интегральна - то приходится дискретные значения делать непрерывными.
Если же модель дискретна, а реальный объект непрерывный, приходится реальный объект "делать" прерывным.
В любом случае мы подгоняем данные под модель.


ЦитироватьОписание и несколько вариантов самой программы есть в сообщениях Игоря Антонова втеме "влияние полового отбора (в том числе и "моды") на" на стр 11 (http://www.paleo.ru/forum/index.php/topic,2350.150.html)и ещё через одну страницу
спасибо.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 04, 2011, 12:29:37
Цитата: Vuto от апреля 04, 2011, 10:28:08Если же модель дискретна, а реальный объект непрерывный, приходится реальный объект "делать" прерывным.
В любом случае мы подгоняем данные под модель
В реальном объекте только пространство (но оно не всегда моделируется) и время непрерывны
А всё остальное вроде дискретно?
Но даже время в реальном объекте "отчасти дискретно", ибо есть периодичность в жизнедеятельности
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Mr. B от апреля 04, 2011, 13:14:46
Кому интересно, на эту тему есть ещё следующий ответ:

Стоимость естественного отбора неприемлема (дилемма Холдейна) (http://rationalwiki.org/wiki/%D0%A1%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B5%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D1%82%D0%B1%D0%BE%D1%80%D0%B0_%D0%BD%D0%B5%D0%BF%D1%80%D0%B8%D0%B5%D0%BC%D0%BB%D0%B5%D0%BC%D0%B0_%28%D0%B4%D0%B8%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%A5%D0%BE%D0%BB%D0%B4%D0%B5%D0%B9%D0%BD%D0%B0%29)

Рассматривается также вопрос о скорости мутагенеза и проблема скорости отбора "полезных мутаций" (см. также ссылки там, в которых, в том числе, имеются коды программ).
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 04, 2011, 14:31:30
ЦитироватьСтоимость естественного отбора неприемлема (дилемма Холдейна) (http://rationalwiki.org/wiki/%D0%A1%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B5%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D1%82%D0%B1%D0%BE%D1%80%D0%B0_%D0%BD%D0%B5%D0%BF%D1%80%D0%B8%D0%B5%D0%BC%D0%BB%D0%B5%D0%BC%D0%B0_%28%D0%B4%D0%B8%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%A5%D0%BE%D0%BB%D0%B4%D0%B5%D0%B9%D0%BD%D0%B0%29)
Рассматривается также вопрос о скорости мутагенеза и проблема скорости отбора "полезных мутаций" (см. также ссылки там, в которых, в том числе, имеются коды программ)
Какие именно из ссылок с кодами (или псевдокодами или подроб описаниями) программ?

Жаль, что опять-таки не написана сама модель Холдейна (из которой он вывел свою дилемму) и численные значения ее параметров

Впрочем и в статьях самого Холдейна (ссылки в первом сообщ темы) КОМПАКТНО записанной модели и списка значений параметров я не увидел, а читать от корки до корки облом
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Mr. B от апреля 04, 2011, 14:55:43
Ссылка с номером 5:

http://www.talkorigins.org/origins/postmonth/sep99.html
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 05, 2011, 01:16:13
Цитата: Alexy от апреля 04, 2011, 12:29:37В реальном объекте только пространство (но оно не всегда моделируется) и время непрерывны
А всё остальное вроде дискретно?
Но даже время в реальном объекте "отчасти дискретно", ибо есть периодичность в жизнедеятельности
ну что вы!
Почти все траектории непрервыны, то бишь движение плавно.
А вот если в модели будут мушки между струн летать, то задевание струн - это дискретные пространственные шаги, если у нас датчики будут только на струнах.
Наш же случай - это вычислять численность особей(дискретная величина) диф.урами - это переводить в непрерывные значения.
Это не так страшно, как может показаться.  ;)



Что касается программы И. Антонова, то пока самое там тёмное - нормировка выживаемости по поколению. Это в корне неверно.
Хотя, .... может я не внимательно смотрел. Посмотрим ещё.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 05, 2011, 11:19:08
Все хочется прочитать статью Холдейна, но, поскольку как обычно, статья в англовики намного полнее русскоязычной и не оставляет сомнения, что Холдейн ошибался, так что считаю это лишь упражнением...
Что не могли найти ошибку, так при взгляде со стороны -  скорее всего и не искали...
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 05, 2011, 17:24:38
Цитата: Vuto от апреля 05, 2011, 01:16:13Почти все траектории непрервыны, то бишь движение плавно.
А вот если в модели будут мушки между струн летать, то задевание струн - это дискретные пространственные шаги, если у нас датчики будут только на струнах
Так во многих случаях обходятся вообще без моделирования пространства
Цитата: Vuto от апреля 05, 2011, 01:16:13нормировка выживаемости по поколению. Это в корне неверно
Вы имеете в виду, что неверно то, что выживаемость каждой конкретной особи обратно-пропопорциональна среднего по ныне живущему поколению фитнеса?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 05, 2011, 17:26:49
Макроассемблер, так Вы нашли ошибку Холдейна? Действительно ли это НЕучёт потери более, чем одной вредной мутации при смерти одной особи
(Из http://en.wikipedia.org/wiki/Haldane's_dilemma ошибка(и) Холдейна не очень понятны, но читал не очень внимательно. А pdf-ы обоих статей самого Холдейна в первом сообщ этой темы)
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 05, 2011, 18:04:06
Мне вообще сам смысл термина "цена замещения" кажется неуместным... она подобна "упущенной экономической выгоде", т.е. виртуальная величина, и даже и не складывается-то.
помню писал генетический алгоритм для раскрытия решеток... вот таких
http://en.wikipedia.org/wiki/Grille_(cryptography)
там вот скорость решения с увеличением размера падала очень быстро... правда там по отдельным "признакам" зависимость была, но я уже расстроился ))
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 05, 2011, 18:16:59
Цитата: Imperor от марта 29, 2011, 16:29:19
Имхо, компьютерные модели гораздо более простые. То, что в мат. моделировании нужно изображать четырехэтажными формулами (в которых легко запутаться), в компьютерном моделировании реализуется весьма легко. У меня лично к ним (компьютерным моделям) больше доверия.
а чего так у вас мнение поменялось на противоположное... это не подначка, просто интересно
http://www.paleo.ru/forum/index.php/topic,2350.msg52210.html#msg52210
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 05, 2011, 18:29:00
Было тогддда подозрение, что ошибка в программе
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 05, 2011, 22:40:07
Цитата: Alexy от апреля 05, 2011, 17:24:38Так во многих случаях обходятся вообще без моделирования пространства
Извините, если я не допонял ваш вопрос, я думал вы спрашиваете в общем.
Поэтому я привёл пример из биологии с подгонкой с дискретики под непрерывность.

Цитировать
Цитата: Vuto от апреля 05, 2011, 01:16:13нормировка выживаемости по поколению. Это в корне неверно
Вы имеете в виду, что неверно то, что выживаемость каждой конкретной особи обратно-пропопорциональна среднего по ныне живущему поколению фитнеса?
Я просмотрел код.
Там неверна модель  :( :'(
Дело в том, что к размножению в каждом поколении допущены лишь те, у кого выживаемость выше средней в этом поколении.
Это .... неверный подход в корне.
Вначале почему неверный.
Например, существует доминантный отрицательный аллель в -1%. Фактически это нейтральный аллель, он ни на что не должен влиять.
Тем не мене по модели уже за 500 поколений полностью популяция избавляется от аллеля.
Или другой пример. Существует доминантный положительный аллель +1%. Фактически нейтральный аллель, он ни на что не должен влиять.
Тем не менее, по модели обычным особям не дают размножаться и в конце концов рецессивный аллель уходит из популяции.

Как исправить ситуацию - необходимо фитнес превратить в ВЕРОЯТНОСТЬ допуска к размножению.
Тогда даже нормировка не мешает.
И тогда мы увидим сооооовершенно иные результаты!
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 05, 2011, 23:41:28
Цитата: Vuto от апреля 05, 2011, 22:40:07Я просмотрел код.
Там неверна модель  :( :'(
Дело в том, что к размножению в каждом поколении допущены лишь те, у кого выживаемость выше средней в этом поколении.
Это .... неверный подход в корне...
Как исправить ситуацию - необходимо фитнес превратить в ВЕРОЯТНОСТЬ допуска к размножению.
Именно так в программе и сделано. Вот строка, допускающая к размножению:

if (Form1.ok(fitness * k))  _obj.Add(child); // Формируем список, допущенных до размножения

Здесь Form1.ok - метод, сообщающий, состоялось ли случайное событие с вероятностью  fitness, скорректированной на нормирующий коэффициент k:

public static bool ok(double level)  // Событие с вероятностью level произошло
{if(rnd1.NextDouble() < level)  return true;
  else return false;
}


Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 06, 2011, 10:07:48
Цитата: Игорь Антонов от апреля 05, 2011, 23:41:28
Цитата: Vuto от апреля 05, 2011, 22:40:07Я просмотрел код.
Там неверна модель  :( :'(
Дело в том, что к размножению в каждом поколении допущены лишь те, у кого выживаемость выше средней в этом поколении.
Это .... неверный подход в корне...
Как исправить ситуацию - необходимо фитнес превратить в ВЕРОЯТНОСТЬ допуска к размножению.
Именно так в программе и сделано. Вот строка, допускающая к размножению:

if (Form1.ok(fitness * k))  _obj.Add(child); // Формируем список, допущенных до размножения

Здесь Form1.ok - метод, сообщающий, состоялось ли случайное событие с вероятностью  fitness, скорректированной на нормирующий коэффициент k:

public static bool ok(double level)  // Событие с вероятностью level произошло
{if(rnd1.NextDouble() < level)  return true;
  else return false;
}

Первое - спасибо вам, что приняли участие с дискуссии.
Второе, да, я был не прав, не удосужился посмотреть в файл Форм, действительно там вероятность.
Ну и в третьих, в главных, даже это не меняет ситуацию в целом.
Покажу это на цифрах:
1) Вначале будем считать, что количество детей - 2, это нормализует наш коэффициент
2) смотрим на вероятность стать родителем.
Пусть у нас популяция из 10000 особей
причём имеется доминантный ген с бонусом +10%

Вначале узнаем, какова вероятность стать родителем в популяции с одними обычными генами:
1е-4
А вероятность стать родителем в популяции с лишь доминантными генами:
1е-4!!!
Это первое, что должно нас насторожить: в чистых популяциях генный бонус не даёт преимуществ!!!

Идём дальше.
Пусть у нас популяция в 10000 особей, причём 10 из них обладают доминантным бонусом.
Тогда у обычных особей шанс стать родителем равен = 9,999е-5 или незаслуженно уменьшили шанс (при том, что они ничего не делали) на 0,01%
В то время, как для доминантым особям незаслуженно увеличили вероятность  до 1,09989е-4 или же на 9,989%

Идём ещё дальше.
Пусть у нас популяция в 10000 особей, причём 10 из них НЕ обладают доминантным бонусом.
Тогда у обычных особей шанс стать родителем равен = 9,091735е-5 или ЕЩЁ незаслуженно уменьшили шанс (при том, что они ничего не делали) до 9,0829%
В то время, как для доминантым особям снизили незаслуженно увеличенную вероятность  до 1,000090917е-4 или же до 0,0090917%

Всё тоже самое касается и отрицательного бонуса.
Обычным особям незаслуженно увеличивают вероятность стать родителем, а доминантным - незаслуженно уменьшают вероятность.

Поэтому нельзя для корректности нормировать в каждое поколение по разному.
Необходимо для всех поколений делать один коэффициент.
Вы можете изменить программу и проверить?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 06, 2011, 13:37:54
Vuto, нормирующий коэффициент выполняет в этой модели роль общей отрицательной обратной связи, стабилизирующей численность популяции. Его отменить несложно, но тогда отрицательные бонусы будут приводить к вымиранию, а положительные - к неограниченному росту.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 06, 2011, 14:51:33
Вот вариант программы с отключенной нормировкой по численности.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 06, 2011, 17:48:21
Цитата: Vuto от апреля 06, 2011, 10:07:48
Мне кажется Вы немного неправы, как мне кажется, в программе похоже в принципе не ставится целью моделирование расширения экологических ниш и взаимодействие с внешним миром, а лишь внутривидовая борьба.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 06, 2011, 18:09:36
Цитата: Игорь Антонов от апреля 05, 2011, 23:41:28
if (Form1.ok(fitness * k))  _obj.Add(child); // Формируем список, допущенных до размножения

public static bool ok(double level)  // Событие с вероятностью level произошло
{if(rnd1.NextDouble() < level)  return true;
  else return false;
}
То есть если попадается особь с достаточно высоким фитнесом, то она переходит к размножению независимо от того какое значение выбросит NextDouble(), в реальности же любое удачное сочетание генов может погибнуть - конечно, с разной вероятностью.

Немного замечаний по коду (непрограммисты могут пропустить) - там у Вас в основном соблюдается паттерн MVC, но сделаны глобальные переменные и циклические ссылки между Form1 и Population. Думаю лучше переместить rnd1 в Population, а если нужно использовать другой генератор - можно унаследовать от Random и засунуть его в Population из класса Form1.

Может быть это уже обсуждалось (не осилил я всю ветку), почему моделируется именно популяция из строго моногамных гермафродитов (это, кстати, приводит к существенному замедлению работы программы)?

Для нормализации популяции пришло в голову quick-and-dirty решение. Для каждой особи умножить фитнес на коэффициент невезения -- равномерно распределенное случайное число в интервале (0,1] -- отсортировать по этому произведению список особей, взять total_individuals верхних и перевести их в следующее поколение. Таким образом размер популяции остается неизменным, у особи всегда есть вероятность погибнуть и в любом районе фитнеса реализуется генетическое преимущество.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 06, 2011, 20:31:33
Цитата: Макроассемблер от апреля 06, 2011, 18:09:36То есть если попадается особь с достаточно высоким фитнесом, то она переходит к размножению независимо от того какое значение выбросит NextDouble(), в реальности же любое удачное сочетание генов может погибнуть - конечно, с разной вероятностью.
При исходных настройках "неуязвимыми" оказываются только те особи, у которых отклонение фитнеса от стандартного будет +100%. Можно ввести правило, блокирующее такую возможность ещё на этапе ввода исходных параметров. В реальных прогонах это ограничение и так не нарушается.
Цитата: Макроассемблер от апреля 06, 2011, 18:09:36Немного замечаний по коду...
Проект небольшой, выложен с полным исходным текстом и комментариями. Я разрешаю всем заинтересованным лицам неограниченно его совершенствовать самостоятельно.  Или предложить свой.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 06, 2011, 21:15:32
Цитата: Игорь Антонов от апреля 06, 2011, 14:51:33
Вот вариант программы с отключенной нормировкой по численности.
А что так тормозит то? :(
Тестировать невозможно. Прежние варианты гораздо быстрее были.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 06, 2011, 21:38:18
Если тормозит, значит, размер популяции быстро увеличивается при росте приспособленности  в отсутствие сдерживающего  фактора, действовавшего в исходной версии. Но я ведь предупреждал.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 07, 2011, 01:16:19
Цитата: Vuto от апреля 06, 2011, 10:07:48Всё тоже самое касается и отрицательного бонуса.
Обычным особям незаслуженно увеличивают вероятность стать родителем, а доминантным - незаслуженно уменьшают вероятность
Вряд ли от этого результат меняется очень сильно
Цитата: Vuto от апреля 06, 2011, 10:07:48Поэтому нельзя для корректности нормировать в каждое поколение по разному

Необходимо для всех поколений делать один коэффициент
Вы можете изменить программу и проверить?
А мой подход тоже неверен?

Вводить случайность и определять выживших среди потомства по-моему нужно так:
Цикл:
Перенумеровать все особи потомства.
Случайным образом выбрать число из интервала [0, сумма приспособленностей всех особей потомства]
Отобрать особь, для которой сумма приспособленностей ЕЁ и всех предыдущих по нумерации особей, больше этого числа, и при этом сумма приспособленностей всех предыдущих по нумерации особей меньше-равна этого числа
Удалить отобранную особь из множества всех особей потомства
Конец цикла. (Повторять цикл, пока не отберется нужное число особей, равное численности популяции, которая таким образом сохраняется в каждом поколении одной и той же)
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 07, 2011, 09:59:28
Цитата: Alexy от апреля 07, 2011, 01:16:19А мой подход тоже неверен?
Отбраковать особь с суммой приспособленностей её и всех предыдущих по нумерации особей, равной этому числу
Конец цикла. (Повторить без отбракованной особи, пока не останется нужное число особей, равное численности популяции, которая таким образом сохраняется в каждом поколении одной и той же)
К сожалению в вашем подходе не работает статистическая математика  :(
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 07, 2011, 10:18:00
Цитата: Игорь Антонов от апреля 06, 2011, 13:37:54Vuto, нормирующий коэффициент выполняет в этой модели роль общей отрицательной обратной связи, стабилизирующей численность популяции. Его отменить несложно, но тогда отрицательные бонусы будут приводить к вымиранию, а положительные - к неограниченному росту.
В принципе так и должно быть.
Спасибо за изменения.
Что я вижу, необходимо сделать.
1) Я не совсем доверяю генератору случайных чисел (даже для лоскутов с 0% бонусом идёт увеличение численности)
Поэтому прошу вас заменить (для гарантии):
                        child.g.locus[i].a = (Form1.rand() < 0.5) ? o1.g.locus[i].a : o1.g.locus[i].b; // С равной вероятностью наследуем ген хромосомы "a" или "в" от одного из родителей
                        child.g.locus[i].b = (Form1.rand() < 0.5) ? o2.g.locus[i].a : o2.g.locus[i].b; // С равной вероятностью наследуем ген хромосомы "a" или "в" от одного из родителей

на либо (изменяем знак больше, а не меньше)                         child.g.locus[i].a = (Form1.rand() < 0.5) ? o1.g.locus[i].a : o1.g.locus[i].b;
                        child.g.locus[i].b = (Form1.rand() > 0.5) ? o2.g.locus[i].a : o2.g.locus[i].b;

либо (изменяем А на Б для Б-дитя)                        child.g.locus[i].a = (Form1.rand() < 0.5) ? o1.g.locus[i].a : o1.g.locus[i].b;
                        child.g.locus[i].b = (Form1.rand() < 0.5) ? o2.g.locus[i].b : o2.g.locus[i].a;


2) Общая нормировка не учитывает бонус.
                    if (Form1.ok(fitness * 2.0 / total_children)) _obj.Add(child); // Формируем список, допущенных до размножениялучше заменить на нечто вроде
                    if (Form1.ok(fitness * 2.0 *(1 + good_alleles_fitness/100) / total_children)) _obj.Add(child);


3) Остальное, вроде верно. Быстрый рост аллеля вызван острой конкуренцией (для большого кол-ва детей)
Например, для бонуса в 1% для двоих детей почти никак не растёт этот аллель. Тут нет конкуренции. Все допущены до воспроизводства
Однако, для этого же бонуса в 1% для 4х детей, за 300 поколений, аллель захватывает более половины популяции. А тут лишь 1/8 популяции допущена до производства. Крайне высокая конкуренция.
Поэтому я предлагаю исправить ситуацию так, что бы не пара давала Х детей, а пара давала НЕ БОЛЕЕ Х детей. То есть ввести в индивидуй параметр, указывающий на количество детей.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 07, 2011, 12:10:06
Vuto
1) "Я не совсем доверяю генератору случайных чисел"
Знак недолго поменять, но я проверил поочерёдные запуски с 0%  - численность то растёт, то падает.
2) "Общая нормировка не учитывает бонус".
Предложенный код приводит к форсированному росту или снижению численности. Если всё-таки адаптивная нормировка нужна, то я считаю, что в исходном варианте программы она достаточно разумна.

P.S. Располагая Visual Studio 2008 или 2010 легко поэкспериментировать с моделью самостоятельно.  Да и 2005 подойдёт, только проект надо будет создать заново. Я выше уже отметил, что на неприкосновенности своего кода я вовсе не настаиваю.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 07, 2011, 12:39:56
Цитата: Vuto от апреля 07, 2011, 09:59:28К сожалению в вашем подходе не работает статистическая математика  :(
Я там неверно написал, а сейчас отредактировал свой подход
Фактически проводится отбор одной особи из всего множества новорожденных особей,
при этом вероятность отбора каждой особи пропорциональна ее фитнесу (приспособленности)
После отбраковки отбор ещё одной особи опять повторяется среди оставшихся особей
(и так до тех пор, пока не отберется определенная  численность популяции - таким образом она будет постоянной для всех поколений)

Если не ошибаюся, от реализации уважаемого Игоря Антонова это отличается тем, что он СРАЗУ отбирает всех выживших особей
(при этом вероятность отбора каждой особи пропорциональна ее фитнесу),
и поэтому количества особей в разных поколениях колеблятся
вокруг определенной константы, а не строго равны ей

Оба подхода по идее ближе к реальности, чем неограниченно
наростающая от поколения к поколению численность популяции?


Но можно было бы сделать аллели НЕКОТОРЫХ генов
независимо ни от чего обязатттэльно летальными (так бывает в природе),
а для ОСТАЛЬНЫХ генов оставить их вклад в вероятность выживания особи
ОБРАТНО-ПРОПОРЦИОНАЛЬНЫМ среднему фитнесу по популяции

(как было запроограммировано Игорем Антоновым для ВСЕХ генов)

В результате у нас размер популяции не будет вылезать
за определенную верхнюю границу, а будет изменяться в пределах от нее до 0
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 07, 2011, 13:04:41
Цитата: Игорь Антонов от апреля 06, 2011, 21:38:18
Если тормозит, значит, размер популяции быстро увеличивается при росте приспособленности  в отсутствие сдерживающего  фактора, действовавшего в исходной версии. Но я ведь предупреждал.
Но это ведь неправильно. Ресурсы среды ограничены. Популяция не будет расти безгранично. Зачем нам неправильная модель?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 07, 2011, 13:14:58
Цитата: Imperor от апреля 07, 2011, 13:04:41Зачем нам неправильная модель?
Меня попросили отключить нормировку - я отключил. Но  я не утверждаю, что это  правильная модель.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 07, 2011, 13:17:08
Цитата: Макроассемблер от апреля 05, 2011, 18:16:59
а чего так у вас мнение поменялось на противоположное... это не подначка, просто интересно
http://www.paleo.ru/forum/index.php/topic,2350.msg52210.html#msg52210
Просто подумал, подумал, и полностью переменил мнение.
Так у меня иногда бывает :)
Понятно, что основную роль здесь сыграло поведение разбираемой модели.
Но не только это. Дело в том, что я раньше так и думал (что от числа признаков скорость отбираемости не зависит - просто рассуждал логически, да еще и с рисунками :) ).
Но авторитет математического моделирования (в лице самого Холдейна и тех кто его проверял, не находя ошибок) меня убедили в их правоте. Убедили давно и надежно.
Вот, смотрите, что я там писал в той ветке (http://www.paleo.ru/forum/index.php/topic,2350.msg52302.html#msg52302):

...Но у меня пока больше доверия к математическим расчетам, выдержавшим 50-летнюю проверку специалистов в данной области

...И вот опять Ромашишка1971 мудро отмечает :lol: это же обстоятельство - "потеря особи 18 заменила 18 отдельных потерь особей"... Ну всё! Теперь сразу всем всё стало ясно! Глупый научный мир 50 лет подряд (лучшие математики в биологии), никак не могли увидеть, что 18 выбитых аллелей в одной погибшей особи - это лучше, чем 18 выбитых аллелей в 18 погибших особях... а многомудрый Ромашишка1971 взял, да и увидел! И теперь, после того, как Ромашишка1971 авторитетно указал на это чрезвычайно трудно уловимое  :lol: обстоятельство, ошибочность дилеммы Холдейна сразу стала очевидна всем!  :lol:
Ромашишка1971 - открываю Вам СТРАШНУЮ ТАЙНУ - расчеты Холдейна именно это и считают! Т.е. они считают, через сколько поколений произойдет замена аллелей в популяции, если аллели будут вылетать: по одному, парами, тройками, четверками... и вообще всеми возможными случаями. Собственно, расчеты Холдейна именно это собой и представляют.
А Вы говорите абсолютно банальные вещи (например, что с гибелью особи с 18 минусами вылетают сразу все эти 18 минусов (кто бы спорил  :lol:)) и искренне думаете, что этого никто, кроме Вас не понимает  :lol:


Как видите, беззаветная вера в мудрость математиков :) Я даже представить себе не мог, что они действительно могли не посчитать такие очевидные вещи.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 07, 2011, 13:27:02
Цитата: Игорь Антонов от апреля 07, 2011, 13:14:58
Меня попросили отключить нормировку - я отключил. Но  я не утверждаю, что это  правильная модель.
Ну мало ли кто что попросит.
Хотя да, иногда лучше просто молча продемонстрировать.

Игорь, а Вы не думали над тем, чтобы помоделировать ещё что-нибудь? :)
Например, всю совокупность мутационно - естественно-отборных процессов?
А то вот у этих авторов в их модели вроде вообще деградация геномов в итоге получается вместо совершенствования: http://mendelsaccountant.info/
(там соответствующая статья в pdf открывается по ссылке внизу, в списке литературы).
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 07, 2011, 13:46:58
Цитата: Imperor от апреля 07, 2011, 13:27:02Игорь, а Вы не думали над тем, чтобы помоделировать ещё что-нибудь? :)
Например, всю совокупность мутационно - естественно-отборных процессов?
Илья, для занятий в этом направлении  более сложными моделями у меня сейчас нет достаточного  времени и интереса. 
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 07, 2011, 14:13:35
Уважаемый Игорь, а чего?
Модель - статья, ... любая маленькая модификация модели - опиать статья ...?
ЦитироватьМеня попросили отключить нормировку, но я не утверждаю, что это  правильная модель
Каждая модель наверное в чем-то неправильна (имеет свои + и -)
Моделя с отключ нормировкой - не соответствует большинству природных ситуаций
Зато со включенной (если я правильно понял уважаемого Vuto, в чем сильно неуверен)
- вероятности отбора особей (одного покололения) не строго пропорциональны их фитнесам
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 07, 2011, 15:04:12
Имхо, модель Игоря Антонова полностью адекватна. Я её уже погонял предостаточно. И не только я. Выводы:

1. Эффект естественного отбора при приспособленности аллелей, отличной от нуля, модель показывает замечательно.
2. Дрейф генов модель тоже отлично демонстрирует, совершенно адекватно (в модели дрейф тем сильней, чем меньше популяция).
3. "Эффект Нортона" для доминантных аллелей тоже наглядно демонстрируется (резкое замедление элиминации вредных рецессивных аллелей на завершающих этапах отбора, причем это замедление тоже зависит от размера популяции (силы дрейфа)).
4. Предсказывавшуюся расчетами долгую скрытую начальную фазу для полезных рецессивных аллелей (зато без последующего "нортоновского замедления") модель тоже демонстрирует.

Короче, всё ок.
Единственное, что не демонстрирует аллель, так это реальности дилеммы Холдейна :)

P.s. Кстати, объяснять студентам эффекты естественного отбора и дрейфа генов с ней гораздо легче и наглядней.
Все-таки, Игорь, Вы бы хоть ради приличия хотя бы коротенькую статью? А то даже сослаться не на что.

P.p.s. Единственно, у меня почему-то так и не работают дробные значения приспособленности (т.е. меньше, чем 1%) и в некоторых случаях желательно было бы, чтобы первичная доля особей тоже была менее 1%.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 07, 2011, 15:20:12
Цитата: Alexy от апреля 07, 2011, 14:13:35
- вероятности отбора особей (одного покололения) не строго пропорциональны их фитнесам
строгой процорциональности получиться в принципе не может
например если нужно отобрать 2 особи из 4-х с фитнесами 1, 10, 100, 1000 то уж вероятности отбора для особей с фитнесами 100 и 1000 будут близки между собой и к единице, а не различаться в 10 раз
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 07, 2011, 15:22:11
Цитата: Alexy от апреля 07, 2011, 14:13:35
Уважаемый Игорь, а чего?
Модель - статья, ... любая маленькая модификация модели - опиать статья ...?
Вы шутите?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 07, 2011, 15:35:15
Цитата: Imperor от апреля 07, 2011, 15:04:12
Единственно, у меня почему-то так и не работают дробные значения приспособленности (т.е. меньше, чем 1%) и в некоторых случаях желательно было бы, чтобы первичная доля особей тоже была менее 1%.
Илья, я поправил обработку ввода значений. Теперь можно вводить дробные значения приспособленности и доли особей. В остальном версия программы исходная.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 07, 2011, 15:50:47
Цитата: Imperor от апреля 07, 2011, 15:04:12Все-таки, Игорь, Вы бы хоть ради приличия хотя бы коротенькую статью? А то даже сослаться не на что.
Илья, профессиональная сфера это скорее Ваша, чем моя. Сам писать статьи по этому вопросу я не хочу. Но если Вы, как человек причастный к постановке задачи, уточнению модели и её исследованию, такую статью напишете, то можно взять меня в соавторы.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 07, 2011, 22:13:38
Цитата: Макроассемблер от апреля 07, 2011, 15:20:12
Цитата: Alexy от апреля 07, 2011, 14:13:35- вероятности отбора особей (одного покололения) не строго пропорциональны их фитнесам
строгой процорциональности получиться в принципе не может
например если нужно отобрать 2 особи из 4-х с фитнесами 1, 10, 100, 1000 то уж вероятности отбора для особей с фитнесами 100 и 1000 будут близки между собой и к единице, а не различаться в 10 раз
Это по-моему специфический случай (когда количество особей меньше самого большого отношения фитнесов 2-х особей популяции)
А если нужно отобрать 1000 особей из 2000 особей, среди которых есть с фитнесами допустим 1%, 10% и 100%, то всё будет нормально?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 07, 2011, 22:43:51
Я исправил маленькую погрешность (в текстовом отчёте доля особей всегда округлялась до целого значения) и обновил программу в сообщении, отправленном сегодня в 14:35.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 08, 2011, 23:31:56
Цитата: Imperor от апреля 07, 2011, 13:04:41Но это ведь неправильно. Ресурсы среды ограничены. Популяция не будет расти безгранично. Зачем нам неправильная модель?
Почему неправильная?
Может, вы видели, что какие-то виды держат свои популяции с точности до десятков особей?


Цитата: Alexy от апреля 07, 2011, 14:13:35Моделя с отключ нормировкой - не соответствует большинству природных ситуаций
Нормировка вообще не соответствует природным ситуациям ))) Так что аргумент не ахти )

ЦитироватьЗато со включенной (если я правильно понял уважаемого Vuto, в чем сильно неуверен)
- вероятности отбора особей (одного покололения) не строго пропорциональны их фитнесам
Если быть точным, фитнес не равен вероятности допущения к размножению.
То есть строго говоря, непонятно что моделируется в такой ситуации.  ;)
Отношения фитнесов равны отношениям вероятностей допуску к размножению, но из этого не выходит, что фитнес=вероятность.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 09, 2011, 00:31:02
Цитата: Игорь Антонов от апреля 07, 2011, 22:43:51
Усп....
Беру свои слова обратно....

Вчитался в код, понял, что я не так представлял себе алгоритм....
Тогда я что-то совсем не понял.

Игорь, подтвердите ,пожалуйста, у вас алгоритм формируется так?:
1) выбираются случайно 2 особи (без учёта фитнеса)
2) Далее они скрещиваются и проверяется, подходит ли РЕБЁНОК по фитнесу в следующее поколение или нет (вероятностно).
3) Далее так по каждому из скрещиваний (а их столько, сколько детей)

Ведь мы проверяем на фитнес СЛЕДУЮЩЕЕ поколение, а действующее НЕ ПРОВЕРЯЕМ ВООБЩЕ!!!!
Естественный отбор так не работает. Имхо.

Мой псевдо-код:
for (i=1; i<total_children; i++)        //поторяем количтво детей раз, так как за цикл на пару приходится один ребёнок
{      
 foreach(obj)    if (  rand(obj[index].fitnes)  )  reproductions[]=index;           // для каждого родителя проверяем вероятностно фитнес, если да, то добавляем индекс родителя в массив
 
 далее идёт случайный отбор родителей из массива индексов допущенных родителей
 (из вашей программы с исключением из массива индексов допущенных родителей, но не самих родителей),
 формирования ребёнка и БЕЗУСЛОВНАЯ запись ребёнка в следующее поколение (без проверки на фитнес).
 
}

К сожалению, Си++ у меня не стоит на компе....
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 09, 2011, 01:14:15
Цитата: Alexy от апреля 07, 2011, 12:39:56
Фактически проводится отбор одной особи из всего множества новорожденных особей
Да, уже увидел, ужаснулся, так ведь естественный отбор не работает.
Естественный отбор отбирает действующее поколение, а не будущее.
А в программе наоборот, отбирается будущее поколение, зато не отбирается настоящее.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 09, 2011, 02:48:29
Тогда надо делать в программе отбор несколько раз (2 раза) за поколение (отдельно отбор допущенных к размножению и отбор выживших детей)

Но не очень верится, что от этого что-то сильно изменится - можно просто считать, что к размножению их допустили при рождении, и все ВЫЖИВШИЕ имеют равные вероятности дать потомство

Может такое упрощение могло бы как-то негативно сказаться в модели с межвидовыми взаимдействиями, но в данной модели, где особи от рождения до размножения никого не убивают и сами не гибнут, по-моему наверняка не повлияет?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 09, 2011, 09:43:49
Цитата: Vuto от апреля 09, 2011, 01:14:15
Цитата: Alexy от апреля 07, 2011, 12:39:56
Фактически проводится отбор одной особи из всего множества новорожденных особей
Да, уже увидел, ужаснулся, так ведь естественный отбор не работает.
Естественный отбор отбирает действующее поколение, а не будущее.
А в программе наоборот, отбирается будущее поколение, зато не отбирается настоящее.
Ребята, вы что-то перемудрили со своими интерпретациями.
Если проверяется значение переменной Xn+1 в непрерывном ряду - она там прошлая или будущая?

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

Цитата: VutoИгорь, подтвердите ,пожалуйста, у вас алгоритм формируется так?:
1) выбираются случайно 2 особи (без учёта фитнеса)
2) Далее они скрещиваются...

Нет, Vuto, не так. Эти 2 особи случайно отбираются из массива, в который из текущего поколения попали только те особи, которые случайно, но с  учётом фитнеса, допущены до размножения.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 09, 2011, 12:44:02
Цитата: Игорь Антонов от апреля 06, 2011, 20:31:33
Проект небольшой, выложен с полным исходным текстом и комментариями. Я разрешаю всем заинтересованным лицам неограниченно его совершенствовать самостоятельно.  Или предложить свой.
я думаю что будет плохо если проект разделится на несколько самостоятельных веток, а так если бы я писал - то переделал бы все на си++ или яву, не люблю проприетарщину, а яву еще с определенной долей вероятности можно запускать в браузере - удобно
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 09, 2011, 12:45:39
Цитата: Imperor от апреля 07, 2011, 13:17:08
Как видите, беззаветная вера в мудрость математиков :) Я даже представить себе не мог, что они действительно могли не посчитать такие очевидные вещи.
А кто там математик?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 09, 2011, 22:14:05
Цитата: Игорь Антонов от апреля 09, 2011, 09:43:49
Цитировать
Естественный отбор отбирает действующее поколение, а не будущее.
А в программе наоборот, отбирается будущее поколение, зато не отбирается настоящее.
Ребята, вы что-то перемудрили со своими интерпретациями.
Если проверяется значение переменной Xn+1 в непрерывном ряду - она там прошлая или будущая?
К сожалению, перемудрили не мы, а вы.
Объясняю почему проверка фитнеса Xn+1 отличается от Xn.
Если есть два родителя (каждые носители Р+Д), то у них РАВНОВЕРОЯТНО появится либо РР, либо 2*РД, либо ДД.
В вашей же модели, вероятность родиться РР ниже, чем в естественной среде!
Далее проверка родителей на фитнес означает, что фитнес=вероятность быть родителем из-за приспособленности.
А вот проверка детей на фитнес означает, то проверяется ВЫЖИВАЕМОСТЬ детей до половой зрелости.

Цитировать
Цитата: VutoИгорь, подтвердите ,пожалуйста, у вас алгоритм формируется так?:
1) выбираются случайно 2 особи (без учёта фитнеса)
2) 2) Далее они скрещиваются и проверяется, подходит ли РЕБЁНОК по фитнесу в следующее поколение или нет (вероятностно).
Нет, Vuto, не так. Эти 2 особи случайно отбираются из массива, в который из текущего поколения попали только те особи, которые случайно, но с  учётом фитнеса, допущены до размножения.
Вопрос, что моделируется - выживаемость до половозрелости или вероятность стать родителем.
Вы моделируете первое.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 09, 2011, 22:58:36
Цитата: Vuto от апреля 09, 2011, 22:14:05К сожалению, перемудрили не мы, а вы.
Объясняю почему проверка фитнеса Xn+1 отличается от Xn.
Если есть два родителя (каждые носители Р+Д), то у них РАВНОВЕРОЯТНО появится либо РР, либо 2*РД, либо ДД.
В вашей же модели, вероятность родиться РР ниже, чем в естественной среде!
Если Вы внимательно посмотрите код, то увидите, что у пары родителей с равной вероятностью появляются дети, являющиеся носителями   всех упомянутых  Вами комбинаций аллелей. А вот в массив _obj  ниже по коду с влиянием фитнеса попадают не все дети поколения , а лишь допущенные в дальнейшем до размножения, то есть, будущие родители. То есть, всё, на чём Вы, ужасаясь коду, настаиваете выше, так и происходит уже давно, с самого начала.
Другое дело, что программа не выводит численность родившегося поколения, но она всегда при настройках по умолчанию равна   удвоенному значению числа допущенных родителей. Выводом этой информации программу дополнить несложно, ничего не меняя в самой обработке.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 11, 2011, 00:10:59
Цитата: Игорь Антонов от апреля 09, 2011, 22:58:36
Если Вы внимательно посмотрите код, то увидите, что у пары родителей с равной вероятностью появляются дети, являющиеся носителями   всех упомянутых  Вами комбинаций аллелей. А вот в массив _obj  ниже по коду с влиянием фитнеса попадают не все дети поколения , а лишь допущенные в дальнейшем до размножения, то есть, будущие родители. То есть, всё, на чём Вы, ужасаясь коду, настаиваете выше, так и происходит уже давно, с самого начала.
Ну, во-первых, вы ошиблись (перепутали причину со следствием).
А во-вторых, вы, скорее всего, правы. Если свойства коммутативны (А*Б=Б*А), то перепутав причину со следствием для всех (кроме 1го поколения), посчитано правильно.
Хотя, конечно, ЧТО посчитано...
Вот, что вы считаете: Все особи размножаются в популяции, причём дают максимальное потомство. Фитнес - вероятность выживания до половозрелости, причём крайне низкий (чтоб численность держать в норме).

Я же предлагаю посчитать другое. А именно: Выживают все дети. Но к размножению допускаются не все, а лишь вероятностно по фитнесу. И у каждой пары не максимальное количество детей, а лишь не более максимального количества детей. Да и вообще, с тем алгоритмом, который я показал, особи могут (!)менять пару.
for (i=1; i<total_children; i++)        //поторяем количтво детей раз, так как за цикл на пару приходится один ребёнок
{      
 foreach(obj)    if (  rand(obj[index].fitnes)  )  reproductions[]=index;           // для каждого родителя проверяем вероятностно фитнес, если да, то добавляем индекс родителя в массив
 
 далее идёт случайный отбор родителей из массива индексов допущенных родителей
 (из вашей программы с исключением из массива индексов допущенных родителей, но не самих родителей),
 формирования ребёнка и БЕЗУСЛОВНАЯ запись ребёнка в следующее поколение (без проверки на фитнес).
 
}
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 11, 2011, 08:10:55
Цитата: Vuto от апреля 11, 2011, 00:10:59Ну, во-первых, вы ошиблись (перепутали причину со следствием).
Какую причину с каким следствием я перепутал?
Цитата: Vuto от апреля 11, 2011, 00:10:59...Я же предлагаю посчитать другое. А именно: Выживают все дети. Но к размножению допускаются не все, а лишь вероятностно по фитнесу.
Что не соответствует этому тезису у меня? В программе создаются все дети и они там не уничтожаются.

Что касается экспериментов с кодом  - один я уже провёл по Вашей просьбе, но в целом так не делают.
Если у Вас есть конструктивные предложения - поставьте бесплатный Visual C# Express Edition (http://www.microsoft.com/express/Downloads) (проект сделан на C#, а не C++), доработайте и отладьте свой альтернативный вариант кода и выложите тогда здесь собственный рабочий вариант программы.
Спасибо.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 12, 2011, 00:22:58
Цитата: Игорь Антонов от апреля 11, 2011, 08:10:55
Цитата: Vuto от апреля 11, 2011, 00:10:59Ну, во-первых, вы ошиблись (перепутали причину со следствием).
Какую причину с каким следствием я перепутал?
Естественный отбор не смотрит в будущее, он отбирает ЛИШЬ настоящее. У вас же он отбирает лишь будущее.

Цитировать
Цитата: Vuto от апреля 11, 2011, 00:10:59...Я же предлагаю посчитать другое. А именно: Выживают все дети. Но к размножению допускаются не все, а лишь вероятностно по фитнесу.
Что не соответствует этому тезису у меня? В программе создаются все дети и они там не уничтожаются.
у вас не соответствует тезису многое. У вас !каждая особь допущена к размножению, она моногамна в своих отношениях, и моногамная пара имеет всегда максимальное количество детей.
В моих предложениях пары создаются для создания лишь одного ребёнка, а потом пары могут меняться.
Не все допущены к размножению. Все дети выживают. Это ближе к реальности, чем исходная модель.

ЦитироватьЕсли у Вас есть конструктивные предложения - поставьте бесплатный Visual C# Express Edition (http://www.microsoft.com/express/Downloads) (проект сделан на C#, а не C++), доработайте и отладьте свой альтернативный вариант кода и выложите тогда здесь собственный рабочий вариант программы.
Спасибо за совет, но С# не мой любимый язык программирования.  :'(
Поэтому я и попросил вас доделать программу. Зачем же в конце пути бросать почти готовый проект?  ;)
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 12, 2011, 09:22:39
Vuto, пока что, судя по последней реплике, Вы не понимаете, как в моей программе реализован отбор. В этой ситуации управлять моими действиями дистанционно и построчно бессмысленно. Если Вы всё-таки берётесь за правку программы на нелюбимом Вами языке, то преодолейте себя пожалуйста и реализуйте свои идеи собственными руками. Если сделаете на своём любимом языке - также не будет ни малейших возражений.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 12, 2011, 14:33:31
Цитата: Vuto от апреля 12, 2011, 00:22:58
Естественный отбор не смотрит в будущее, он отбирает ЛИШЬ настоящее. У вас же он отбирает лишь будущее.
Мне кажется Вы не правы. Там отбирается настоящее, насколько это возможно в программе, не моделирующей жизненный цикл особи
А Вы сами программируете?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 12, 2011, 22:50:48
Цитата: Макроассемблер от апреля 12, 2011, 14:33:31Мне кажется Вы не правы. Там отбирается настоящее, насколько это возможно в программе, не моделирующей жизненный цикл особи
строки 71:76 из Population.cs:
           while (obj.Count > 1)
           {  
               int index=Form1.random_index(obj.Count);
               Individual o1 = obj[index];
                 obj.RemoveAt(index);
               index = Form1.random_index(obj.Count);
               Individual o2 = obj[index];
                  obj.RemoveAt(index);


Тут написано буквально  - Пока есть в популяции более одного организма, вытаскиваем из популяции случайные две особи (по сути вытаскиваются все особи попарно)
               Individual child;
               for (int n = 0; n < total_children; n++)
               {
                   child = new Individual();
...

Создаём максимальное количество детей у этой пары
                   if (Form1.ok(fitness * 2.0 / total_children)) _obj.Add(child);
Если ребёнок из-за естественного отбора случайно(в зависимости от фитнеса) доживает до половозрелости, он будет в следующей популяции.
ЦитироватьА Вы сами программируете?
Есть такое.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 12, 2011, 23:10:47
Цитата: Vuto от апреля 12, 2011, 22:50:48
                    if (Form1.ok(fitness * 2.0 / total_children)) _obj.Add(child);
Если ребёнок из-за естественного отбора случайно(в зависимости от фитнеса) доживает до половозрелости, он будет в следующей популяции.
Я выше уже отмечал, что _obj  - это часть очередного поколения, допущенная до следующего размножения. В популяции эти особи присутствуют наравне с другими, не включенными в _obj.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 12, 2011, 23:24:43
Цитата: Игорь Антонов от апреля 12, 2011, 23:10:47
Цитата: Vuto от апреля 12, 2011, 22:50:48
                    if (Form1.ok(fitness * 2.0 / total_children)) _obj.Add(child);
Если ребёнок из-за естественного отбора случайно(в зависимости от фитнеса) доживает до половозрелости, он будет в следующей популяции.
Я выше уже отмечал, что _obj  - это часть очередного поколения, допущенная до следующего размножения. В популяции эти особи присутствуют наравне с другими, не включенными в _obj.
Или это я дурной, или я не туда смотрю, а что означает?obj = _obj;
Я так понимаю, что в новое поколение поступают лишь дети.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 13, 2011, 00:06:01
obj=_obj - это не новое поколение.
Это новые родители и не более того.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 13, 2011, 12:53:47
Vuto если Вам не нравится c# + дотнет, на чём предпочитаете?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 13, 2011, 21:47:27
Цитата: Макроассемблер от апреля 13, 2011, 12:53:47Vuto если Вам не нравится c# + дотнет, на чём предпочитаете?
В последнее время PHP.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 13, 2011, 21:59:40
Цитата: Игорь Антонов от апреля 13, 2011, 00:06:01
obj=_obj - это не новое поколение.
Это новые родители и не более того.
От вас много информации )))
Кстати, вы сами себе противоречите. Вы сами написали в комментариях "дети".
Мало этого, вы сами в комментариях написали следующее        List<Individual> obj= new List<Individual>(); // массив особей популяции
        List<Individual> _obj = new List<Individual>(); // массив следующего поколения особей популяции 

Из того, что я увидел, вы на каждое поколение обнуляете массив детей, далее вы опорожняете массив настоящего поколения вытаскивая пары, создавая детей (максимально на пару) и отбираете, выживших вставляете в массив следующего поколения.
Для расчётов неполовозрелые не учитываются.

Ну, где я ошибся?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 13, 2011, 23:07:31
Vuto, Вы ошиблись в ориентации на начальные комментарии, которые, действительно, надо поправить, а не на суть кода, которую я пояснял в нескольких сообщениях выше. Это ведь тоже комментарии автора. Их надо было учитывать.
Комментарии в листинге относились к исходному замыслу, а по мере написания текста стало понятно, что запоминать ссылки на экземпляры всего  поколения в массиве избыточно, так как информация о геноме особей, не участвующих далее в размножении, никак не востребована в алгоритмах. Количество особей  в каждом следующем поколении - это число отобранных родителей, поделенное на два и умноженное на число детей пары. А в obj из этого поколения попадают только особи, отобранные для дальнейшего размножения. И их число при настройках по умолчанию приблизительно в два раза меньше численности поколения.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 14, 2011, 00:29:18
Цитата: Игорь Антонов от апреля 13, 2011, 23:07:31
Vuto, Вы ошиблись в ориентации на начальные комментарии, которые, действительно, надо поправить, а не на суть кода, которую я пояснял в нескольких сообщениях выше.
Да, в начале я опирался на комментарии, далее разобравшись (как мне кажется) уже стал разбираться по коду, ну, и ориентируясь на ваши слова.

ЦитироватьКоличество особей  в каждом следующем поколении - это число отобранных родителей, поделенное на два и умноженное на число детей пары. А в obj из этого поколения попадают только особи, отобранные для дальнейшего размножения. И их число при настройках по умолчанию приблизительно в два раза меньше численности поколения.
Я не против. Только где идёт подсчёт количества аллелей неучнённых особей?
Из кода я вижу, что вычисляется фитнес ребёнка, и вероятностный отбор, а количество алеллей не передаётся никакому сумматору.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Игорь Антонов от апреля 14, 2011, 08:15:33
А зачем нам передавать какому-либо сумматору количество аллелей особей, не отобранных для размножения? Какую дополнительную информацию это даст для моделирования динамики отбора? 
Число особей в очередном поколении точно пропорционально числу родителей, а  распределение аллелей в новом поколении с небольшими флуктуациями повторяет распределение в массиве родителей.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 16, 2011, 00:41:50
Цитата: Игорь Антонов от апреля 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) // Цикл по родительским парам
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 16, 2011, 10:47:15
Цитата: Vuto от апреля 16, 2011, 00:41:50Ввести параметр - количество детей
Это наверное действительно может оказать большое влияние на поведение модели
ЦитироватьЭто всё равно, что в перепись населения России попадали бы только те, кто имеет детей
А зачем им попадать, раз они ни в каких "видах деятельности" не участвуют вообще (ведь в данной программе не моделируется какие-либо межвидовые взаимодействия)
ЦитироватьПервое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать)
А зачем? На что может повлиять эта небольшая разница (между, если оставить ровно, и, если сделать ЧУТЬ больше)?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 16, 2011, 14:14:51
Цитата: Alexy от апреля 16, 2011, 10:47:15
Это наверное действительно может оказать большое влияние на поведение модели
Нет, не повлияет.
Во-первых, параметр "число детей" в модели задается. Т.е. изменить его можно. Правда, все будут размножаться одинаково. Но если мы сделаем разное число детей - то это уже у нас новый признак получится (влияющий на приспособленность).
Если же мы сделаем этот параметр не четким, а плавающим вокруг какого-то значения (например, от 0 до 4), то в поведении модели не изменится абсолютно ничего, т.к. всё равно статистически останется "при прочих равных" (т.е. среднем числе детей, равным столько-то). Т.е. это просто бессмысленное усложнение алгоритма.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 16, 2011, 22:55:08
ЦитироватьЕсли же мы сделаем этот параметр не четким, а плавающим вокруг какого-то значения (например, от 0 до 4), то в поведении модели не изменится абсолютно ничего, т.к. всё равно статистически останется "при прочих равных" (т.е. среднем числе детей, равным столько-то)
Возможно при плавающем вокруг какого-то значения (например, от 0 до 4) числе детей будет другая скорость дрейфа, чем при постоянном числе детей

Хотя в прогр И Антонова и так число ОТОБРАННЫХ особей зависит и от случайности и от их собственной приспособленности, а на результаты работы программы вряд ли ощутимо повлияет та разница, что по настоящему количество ОТОБРАННЫХ особей зависит не только от их собственной приспособленности, а и их родителей?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 17, 2011, 00:01:37
Цитата: Alexy от апреля 16, 2011, 10:47:15А зачем им попадать, раз они ни в каких "видах деятельности" не участвуют вообще
Они как минимум участвуют в ЖИЗНЕдеятельности  :)
Цитировать
ЦитироватьПервое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать)
А зачем? На что может повлиять эта небольшая разница (между, если оставить ровно, и, если сделать ЧУТЬ больше)?
Для того, что бы у особей не всегда было максимальное количество детей. А у некоторых по одному, у других по двое, у третих по трое,....
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 17, 2011, 00:05:42
Цитата: Imperor от апреля 16, 2011, 14:14:51Если же мы сделаем этот параметр не четким, а плавающим вокруг какого-то значения (например, от 0 до 4), то в поведении модели не изменится абсолютно ничего, т.к. всё равно статистически останется "при прочих равных" (т.е. среднем числе детей, равным столько-то). Т.е. это просто бессмысленное усложнение алгоритма.
Это вы на пальцах посчитали или это уже обосновали до вас?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 17, 2011, 09:35:52
Цитата: Vuto от апреля 17, 2011, 00:05:42
Это вы на пальцах посчитали...
Да, это очевидно даже на пальцах.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 17, 2011, 11:07:17
Цитата: Vuto от апреля 17, 2011, 00:01:37Они как минимум участвуют в ЖИЗНЕдеятельности  :)
Вообще-то да, программе И Антонова моделируются 3 аспекта жизнедеятельность - отбор, деторождение и КОКУРЕНЦИЯ за поступающий с постоянной скоростью ресурс (которая моделируется ~ постоянством общей численности особей)
На эту конкуренцию не отбранные для размоножения особи ДОЛЖНЫ БЫЛИ БЫ В ПРИРОДЕ влиять
Цитата: Vuto от апреля 17, 2011, 00:01:37
Цитата: Alexy от апреля 17, 2011, 00:01:37- Первое - оставить в живых чуть больше необходимого минимума для размножения особей (менее жестко нормировать)
- А зачем? На что может повлиять эта небольшая разница (между, если оставить ровно, и, если сделать ЧУТЬ больше)?
Для того, что бы у особей не всегда было максимальное количество детей. А у некоторых по одному, у других по двое, у третих по трое...
Действительно,
в природе количество ВЫЖИВШИХ детей особи должно зависить не только от приспособленностей самих детей, а и от приспособленностей их родителей,
а
в программе количество ВЫЖИВШИХ детей особи от приспособленности родителя зависит лишь по принципу - ИЛИ РОВНО 0 (для особей, НЕотобранных к размножению) ИЛИ РОВНО N (где N - выбранное в программе постояннное число детей у пары)

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

Возможно ли, что из-за этого в программе ОТБОР идет ощутимо быстрее, чем в природе?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Макроассемблер от апреля 17, 2011, 14:35:19
Цитата: Imperor от апреля 17, 2011, 09:35:52
Да, это очевидно даже на пальцах.
Моим очам это не видно
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 17, 2011, 16:24:43
Цитата: Alexy от апреля 17, 2011, 11:07:17
На эту конкуренцию не отбранные для размоножения особи смогут влиять
Скажем так, в этой, слишком простой модели они не влияют на конкуренцию (хотя, при усложнении могут влиять и очень сильно), но их неучёт может влиять на статистику.

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

P.s. Уважаемый Vuto. Хочу попробовать направить Вашу энергию в конструктивное русло :)
А не кажется ли Вам интересным математически смоделировать модель Лотки-Вольтерра, так, как Вы это сделали в соответствующей ветке, но только чтобы там было тройное уравнение (а не двойное), т.е. не "хищник-жертва", а "трава-травоядное-плотоядное".
И посмотреть, подобное усложнение (на один добавочный элемент) стабилизирует модель, или дестабилизирует?
Если стабилизирует, то, следовательно, модель Лотки-Вольтерра вполне годится для принципиального понимания природных процессов.
Если же дестабилизирует, то, естественно, о модели Лотки-Вольтерра придется забыть, как о модели с неверными принятыми исходными положениями.
(если же стабильность останется на прежнем уровне, то и вопрос тоже останется повисшим, но всё равно было бы интересно посмотреть).
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 18, 2011, 19:21:07
Цитата: 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 ребенка на пару, то любые бонусы очевидно будут ощущаться?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 18, 2011, 19:21:18
Цитата: Imperor от апреля 17, 2011, 16:24:43т.е. не "хищник-жертва", а "трава-травоядное-плотоядное".
И посмотреть, подобное усложнение (на один добавочный элемент) стабилизирует модель, или дестабилизирует?
Сомневаюсь, что стабилизирует
В литературе (по крайней мере про возможные решения планктонного парадокса) вроде такого не пишут
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 19, 2011, 00:58:51
Цитата: Imperor от апреля 18, 2011, 14:43:21А почему он, собственно, должен давать фору, если в этой ситуации вообще нет борьбы за выживание?
Знаете, Имперор, что самое смешное?
Я, признающий ЕО, вижу что модель работает неверно, указываю на это, а вы, непризнающий ЕО, видите, что модель работает правильно )))
Что, в природе, если менее 3 детей у родителей, то ЕО не работает????
Основная проблема модели - моногамность и максимальность детей.

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

ЦитироватьЕсли мы возьмем уже 3 ребенка на пару, то любые бонусы очевидно будут ощущаться?
Да
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 19, 2011, 10:50:54
Цитата: Alexy от апреля 19, 2011, 10:40:39
Интересно, может ли такое изменение СУЩЁСТВЕННО ЗАМЕДЛИТЬ ЗАКРЕПЛЕНИЕ-ВЫТЕСНЕНИЕ АЛЛЕЛЕЙ по сравнению с текущей версией программы?
Вообще не замедлит.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 19, 2011, 10:55:57
Так программа И Антонова в идимо и не расчитывалась на 2 ребенка на пару. А при >=3 ребенка на пару эта программа ведет себя (в аспекте наличия/отсутствия ЕО-ра) вроде вполне нормально
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 19, 2011, 10:56:42
Цитироватьв природе, если менее 3 детей у родителей, то ЕО не работает?
Работает конечно - ведь в природе есть аллели, носители которых отсеиваются с вероятностью, независимой от хватки-нехватки возобновимого ресурса (т е от текущей суммы особей в популяции)
И кажется у самого Холдейна это моделировалося
ЦитироватьА вот если исправить фитнес - не вероятность выживания потомства, а вероятность стать родителем, можно значительно шире исправить ситуацию
Тогда отбор следующего поколения будет зависить
от фитнесов родителей, а не от собственного фитнеса
Интересно, может ли такое изменение СУЩЁСТВЕННО ЗАМЕДЛИТЬ ЗАКРЕПЛЕНИЕ-ВЫТЕСНЕНИЕ АЛЛЕЛЕЙ по сравнению с текущей версией программы?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 19, 2011, 10:59:40
Цитата: Vuto от апреля 19, 2011, 00:58:51
Знаете, Имперор, что самое смешное?
Я, признающий ЕО, вижу что модель работает неверно, указываю на это, а вы, непризнающий ЕО, видите, что модель работает правильно )))
Уважаемый Vuto. Я не понимаю, что здесь, собственно, смешного? Неужели Вы думаете, что если я не признаю естественный отбор (как механизм эволюции), то следовательно, я не понимаю его принципа? Да там понимать, собственно, нечего - принцип естественного отбора предельно прост и ясен.
ЦитироватьЧто, в природе, если менее 3 детей у родителей, то ЕО не работает????
В природе не регламентируется жестко численность популяции. Популяция может вообще вымереть. Или может быть замещена другим видом. Такие ситуации остаются за рамками рассматриваемой модели, как ненужное усложнение.
В модели жестко устанавливается численность популяции - эта численность не может быть меньше установленной.
Следовательно, данная модель начинает работать (показывать принцип естественного отбора) только в том случае, когда число детей превышает предельную численность популяции. Только в такой ситуации между детьми в данной модели возникает, собственно, "борьба за выживание", которая необходима для реализации механизма естественного отбора.
Т.е. здесь у модели всё Ок.
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 19, 2011, 11:05:59
Цитата: Imperor от апреля 19, 2011, 10:50:54
Цитата: Alexy от апреля 19, 2011, 10:40:39Интересно, может ли такое изменение СУЩЁСТВЕННО ЗАМЕДЛИТЬ ЗАКРЕПЛЕНИЕ-ВЫТЕСНЕНИЕ АЛЛЕЛЕЙ по сравнению с текущей версией программы?
Вообще не замедлит
А как Вы проверяли, что не замедлит?
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 19, 2011, 11:13:06
Цитата: Alexy от апреля 19, 2011, 11:05:59
А как Вы проверяли, что не замедлит?
А я не проверял :)
Я просто считаю, что величина "вероятность выживания четырех детей" - полностью аналогична величине "вероятность стать родителем четырех детей".
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Imperor от апреля 19, 2011, 11:18:32
Цитата: Vuto от апреля 19, 2011, 00:58:51
Хотя, я моделировал ТРОЙНОЕ уравнение, правда не жертва-хищник, а "жертва = 2 хищника".
Это совсем не то, в том аспекте, о котором я говорю.
Я имею в виду, что возможно, такая модель будет устойчивой потому, что безудержное размножение хищника первого порядка будет тормозиться влиянием хищника второго порядка. В результате плотность хищников первого порядка не будет достигать критических значений для данной системы.
Т.е. введение дополнительного звена резко стабилизирует систему.

Хотя я лично думаю, что этого не будет (это как попытка изобретения вечного двигателя введением дополнительных рычажков), но мало ли, как говорится - "чем чёрт не шутит"?

ЦитироватьЕсли что, можно смоделировать и "трава-травоядное-плотоядное".
Вот-вот. На этом и надо сосредоточиться :) Тогда станет ясен сам принцип - что происходит с моделью при её усложнении (в сторону, крайне распространенную в живой природе).
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Alexy от апреля 19, 2011, 12:46:33
Я сделал уже отдельную тему (http://www.paleo.ru/forum/index.php/topic,3981.msg90200.html#msg90200) для обсуждения и возможно моделирования этой трехуровневой системы "трава-травоядное-плотоядное"
Приглашаю!
Название: Re: Разберемся с Дилеммой Холдейна (почему в некоторых комп моделях она не наблюда)
Отправлено: Vuto от апреля 20, 2011, 01:49:00
Цитата: Imperor от апреля 19, 2011, 11:13:06Я просто считаю, что величина "вероятность выживания четырех детей" - полностью аналогична величине "вероятность стать родителем четырех детей".
Я смотрю, вы вообще на веру многое берёте.
Даже, пожалуй, чересчур.