macroevolution: (Default)
macroevolution ([personal profile] macroevolution) wrote2011-09-06 06:51 pm

Учебная моделька для демонстрации возможностей отбора

С 1-го сентября я читаю лекции, две пары в неделю, первокурсникам - будущим экономистам ("совместный бакалвриат РЭШ и ВШЭ"). Мой курс официально называется "введение в науки о жизни". Интересно (мне и, надеюсь, детям тоже), но пока уходит очень много времени на подготовку лекций (это не совсем лекции, а наполовину семинары: с вопросами, домашними заданиями, которые надо проверять, и т.п.) Если честно - практически всё время уходит. Собираюсь кое-что объяснять при помощи простых компьютерных моделей. Уже сделал одну: для демонстрации того, чем естественный отбор отличается от случайного поиска (почему обезьяна, случайно нажимая на клавиши, никогда не напечатает Гамлета, а алгоритм "мутации + отбор" - таки напечатает).  Идея этой программы, как внимательные читатели этого блога знают прекрасно, взята из книги Докинза "Слепой часовщик". Только у меня там есть пара дополнительных возможностей: например, можно регулировать темп мутагенеза. И, соответственно, можно убедиться в том, что существует некий оптимальный темп: если мутации происходят слишком часто, отбор не может довести эволюционирующую последовательность до идеала. Если слишком редко - доведет, но потратит больше времени. И можно посмотреть, как именно будет вести себя эволюционирующая последовательность, если отбор не справляется с мутациями ("генетическое вырождение" - это вовсе не однонаправленный и необратимый уход от оптимума, а движение к некому вполне определенному равновесному состоянию). Это игрушечка, конечно. С вполне определенными и ограниченными задачами. И да, я знаю, чем моделируемая ситация отличается от реальной эволюции :)
если кто хочет поиграть: можно скачать программку, она в Access. Левая кнопка - отбор, правая - случайное блуждание, верхнее окошко - исходная последовательность (можно набрать любую), маленькое окошечко посередине - скорость мутагенеза (вероятность мутации на особь на букву на поколение). В общем, разобраться там не очень трудно.

[identity profile] wormball.livejournal.com 2011-09-06 09:56 pm (UTC)(link)
Не могу посмотреть программу (у меня линукс), однако присоединюсь к совету использовать другие языки для подобных целей. В смысле соотношения широты возможностей, удобства использования и лёгкости освоения - Python вне конкуренции (а также программы на нём будут и в линуксе работать).

Также неплохой вариант - javascript - можно будет запустить в любом браузере, но геморроя с программированием всё же побольше.

В википедии есть статья http://en.wikipedia.org/wiki/Weasel_program , а там в конце ссылки на различные реализации. Вот, скажем, коллекция исходников на различных языках программирования http://rosettacode.org/wiki/Evolutionary_algorithm . На питоне там ажно две программы, и обе короткие и прозрачные.

[identity profile] macroevolution.livejournal.com 2011-09-07 06:01 am (UTC)(link)
Боюсь, что в данном случае студентам и всем остальным придется довольствоваться тем, что есть у меня и на чем умею программировать я. Даже иначе: тем, на чем мне легче и быстрее всего к очередному занятию накатать программку. Осваивать какие-то новые языки и системы для меня сейчас абсолютно нереально, вообще такой вопрос не стоит.

[identity profile] macroevolution.livejournal.com 2011-09-07 06:09 am (UTC)(link)
Спасибо за ссылку! Надо же, weasel program. Как эта идея стала популярна! А текст на питоне для меня вот так с ходу абсолютно непонятен. Я всю жизнь только на разных бейсиках программировал.