Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Эволюция в виртуальной машине

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9

Открыть новую тему     Написать ответ в эту тему

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Давно-давно, когда у меня появился компьютер типа 80386, я попробовал програмировать на паскале. Через некоторое время я понял, что нужно заняться чем-то более или менее серьезным и у меня появилась идея придумать виртуальный мирок с организмами, которые могли бы в нем эволюционировать. Идея не покидала меня годами, пробовал кое-что и бросал много раз. Пару лет назад я стал программировать на С++, потом на Borland C++, коему верен остаюсь и по сей день.
Так вот, последние полтора года я пытаюсь что-то сварганить.  У меня есть небольшое плоское (двумерное) поле, в котором живут несколько десятков объектов, обладающих свойствами, подчас такими банальными, как масса, координаты, время жизни, пол, и двоичной хромосомой, в которой заложены некоторые свойства. Есть истребитель, который время от времени появляется в моем мирке и портит жизнь "жертвам". У него тоже куча свойств и его цель - убивать слабых. Жервы могут разножаться, при этом выполняется кроссинговер и мутация хромосомы. Все напичкано  стохастикой, все рандомное.  Несмотря на все усилия и искуственные ограничения, процесс заходит в тупик или сваливается в аттрактор (иногда странный).
Так вот, я  хочу обзавестись однодумцами, кому это было бы интересно, для обсуждения || новых идей || совместного программирования || просто критиков или все вместе. Никаких денег тут нет, только интерес.
Отвечайте, пишите на мыло, в аську.

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 10:34 25-03-2004
ssx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сам я такого никогда не писал, но посмотреть на чужое было бы очень интересно. Может выложишь куда-нибудь свою прогу?

Всего записей: 500 | Зарегистр. 06-10-2003 | Отправлено: 15:58 26-03-2004
BrutalBit



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crazy_Shrike
Тоже хотел написать что-то подобное, но вот только руки никак не доходят.
 
ЗЫ Тоже хотел бы взглянуть на прогу.

Всего записей: 3 | Зарегистр. 25-03-2004 | Отправлено: 22:54 27-03-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Гы. Мне просто немножко стыдно ее показывать, да и, в общем-то, происходящее в ней эволюцией назвать сложно. Давай лучше, кому интересно, обсудим и начнем все с нуля. То что у меня есть пригодится больше чисто в целях уже проведенных экспериментов...

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 14:16 29-03-2004
ArtSh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чтобы наччать с нуля мы должны подумать над тем, какая цель существования этих "организмов", и за какими параметрами будем наблюдать мы. Скорее всего цель "организмов" занять как можно большее "пространство", тогда мы должны как-то описать это пространство, его свойства. Начинать нужно с простого, например задать такие характеристики как: двумерная координата, время, несколько типов ресурсов.  
В результате своей жизнедеятельности "организмы" должны что-то "выделять" в "пространство" и обмениваться инвормацией, и кроме того нужно задать задать какие-то силы, которые будут перемещать ресурсы и "выделения" "организмов".

Всего записей: 92 | Зарегистр. 30-03-2004 | Отправлено: 10:16 31-03-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Свершилось! Первые вопросы по существу!
Итак, в моей модели есть ограниченное двумерное поле. Об этом я писал. Каждый объект может менять координаты - двигаться.  Есть ресурсы - энергия, которая тратится при движении и, скажем, еда, которая увеличивает массу, необходимую при размножении. Количество ресурсов изменяется циклически.  Но это все не главное. Главное, должна быть хромосома с шенами, котоые будут отвечать за жизнеспособность. Например, у меня есть идея ввести в хромосому ген, который будет отвечать за продожительность жизни объекта.  
Нужно придумать конкретно, чем будут обмениваться объекты и что выделять, согласно предложенному.
Цель.... тут все посложнее. Дело в том, что для эволюции необходимо изменять среду и организмы должны к ней приспосабливаться. Поскольку сама идея эволюции подразумевает бесконечное совершенствование, а не нахождение оптимального организма для данной среды, ее тоже нужно изменять бесконечно... типа того...  Вот. Было предложение ввести в хромосому какие-то параметры, которые будут определять поведение. В самой простой абстракции можно представить, например, что организм будет двигаться в соотетствии с состоянием читаемого гена... ну и так далее... Для обеспечения изменчивости реализован кроссинговер - у потомка  гены родителей случайно перемещиваются. Также неплохо сделать мутацию  - случайное изменение случайного гена.  
И самое важное. Вы будете участвовать в программировании?

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 14:08 31-03-2004
Crash2002



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поскольку сама идея эволюции подразумевает бесконечное совершенствование, а не нахождение оптимального организма для данной среды, ее тоже нужно изменять бесконечно... типа того...
 
Ну, имхо, не совсем так. Как раз целью эволюции является создание индивидуумов абсолютно независящих от окружающей среды т.н. гомеостаз. Инстинкты - дают независимость от окружающей среды на уровне обобщающем опыт предыдущих поколений. Мозг - уже гораздо более высокий инструмент достижения гомеостаза.
 
Моделировать эволюцию интересно

Всего записей: 87 | Зарегистр. 10-01-2003 | Отправлено: 15:10 31-03-2004
beeos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А какими параметрами обладает среда обитания?  
"Живые организмы -- объекты, которые поддерживают низкий уровень внутренней энтропии за счет увеличения внешней" -- услышано в курилке...

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 17:39 31-03-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2 beeos
 
На курилке услышана очень даже правильная фраза. Более того, красивая.  
Свойства среды... Тут есть оговорка. У меня роль среды переложена на плечи одного маленького существа (существа, объекты и организмы здесь и далее в кавычках), которое появляется когда популяция превышает определенный предел численности. Он движется случайно и нападает на объекты, попавшие в радиус его видимости. Они могут убегать, тратя при этом энергию. Когда преследуемого догоняют, сравниваются некоторые параметры хищника и жертвы. Логично предположить, что тут выживают те, параметры которого в сумме (значение функции ценности) лучше, чем параметры хищника.  
 
Господа, повторюсь, я занимался только некоторыми опытами и некоторые приблизили меня к пониманию. Мне нужны предложения, потому что моя фантазия ограничена в некоторых рамках, за которые я как раз и хочу выйти, услышав новые мысли. Я хочу начать все с начала, желательно в соавторстве. И не обязательно соавторы должны быть программистами (хотя неплохо бы). Так что, почти от всего, что есть у меня теперь, я могу отказаться, если новые подходы будут логичными.  
 
ЗЫ. Может кто-то что-то знает про устройство Tierra?

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 18:13 31-03-2004
beeos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crazy_Shrike
Под свойствами среды я подразумевал несколько иное: если абстракция мира -- матрица, то каждая ячейка не просто поле, в которое может характеризовать местоположение организма, а, грубо говоря,  обладающий своими свойствами неодушевленный объект. Соответсвенно, организмы взаимодействуют не только друг с другом и с организмами другого вида (хищниками), но и со средой. Они могут изменять свойства ячейки, у организмов есть свои предпочтения в среде обитания, некоторые организмы не могут жить в определенных ячейках или могут переселяться туда только в вынужденных обстоятельствах.
 
Важно понять грань, до которой можно увеличивать количество параметров системы, т.е. придерживаться заданного уровня абстракции.

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 10:30 01-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
... что то в этом есть. Развейте, пожалуйста, мысль про свойства ячеек... Пример, какой-нить...
 
ЗЫ. Абстракция мира - матрица.   Гы.
 
Добавлено
Да, чуть не забыл ... Про количество параметров.  Это на самом деле основной ограничивающий фактор - количество параметров, медленно все происходит. У меня есть на работе 4-х процессорный Xeon 2.2 GHz, на котором удобно гонять подобные программки, но есть проблема, которая меня выводит из себя и невозвращает обратно - загружается только один процессор! Я тут спрашивал, как, мол, всю мощность использовать - никто понятия не имеет. Обидно, что такая штука и простаивает.
 

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 11:29 01-04-2004 | Исправлено: Crazy_Shrike, 11:30 01-04-2004
ssx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
У меня есть на работе 4-х процессорный Xeon 2.2 GHz, на котором удобно гонять подобные программки, но есть проблема, которая меня выводит из себя и невозвращает обратно - загружается только один процессор! Я тут спрашивал, как, мол, всю мощность использовать - никто понятия не имеет. Обидно, что такая штука и простаивает.

посмотри функцию SetProcessAffinityMask

Всего записей: 500 | Зарегистр. 06-10-2003 | Отправлено: 11:48 01-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Это че за функия??? Де смотреть-то?  =)   В Билдере нету....

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 12:47 01-04-2004
beeos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crazy_Shrike
Пример такой: есть существо, обладающее определенными параметрами (масса, энергия, etc.) и свойствами, расчитываемыми через параметры (например сила = масса*энергия). Есть свойство ячейки, характеризующее ее тип: 0 - простая ячейка, 1 - ячейка отдает энергию, 2 - ячейка поглощает энергию, 3 - для занятия ячейки необходима определенная сила (для простоты можно зарезервировать диапазон индексов, напр. 31-39 будет означать силу от 10 до 90 (масштаб естественно приблизительный)).  
 
Если проводить аналогии -- третий параметр можно сравнить с горами, первый с лесом а второй -- с водой. Опять же грубо.
 
Таким образом существо получает ограничения по перемещениям, слабые существа, оказавшиеся рядом с опасностью не смогут спастись, переместившись на ячейку, которая им "не по силам". Или же наоборот, сильные существа могут оградить себя от контактов с более слабыми существами.  
Такая схема позволяет ввести дополнительные факторы, влияющие на взаимодействие и, следовательно, размножение существ.

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 13:36 01-04-2004
ssx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Это че за функия??? Де смотреть-то?  =)   В Билдере нету....

http://msdn.microsoft.com .....

Всего записей: 500 | Зарегистр. 06-10-2003 | Отправлено: 14:52 01-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2 beeos
 
Это немного похоже на задачу оптимизации...  Подозреваю, что они позанимают самы "удобные" ячейки и будут там торчать до скончания веков. Нужны изменяющиеся факторы среды...  
 
Мне кажется, важнее спроектировать хромосому, которая будет отвечать за свойства (фентотип) и поведение организма в среде. Хромосома как основа для определения жизнеспособности организма. Вот, например, как я рассказывал, в хромосоме есть информация о времени жизни. По истечении организм должен умереть. Вот и фактор отбора - чем дольше организм может прожить, тем больше потомков оставит, причем, потомков с тем участком хромосомы, которая отвечает за время жизни. Имеем однофакторную оптимизацию. Так вот, нужно напридумывать свойств, которые можно запихнуть туда же. Хромосома - это двоичный массив (булев). С такой хромосомой можно делать очень много и легко, как то, кроссинговер (скрещивание), мутации... Единственное неудобство - дешифровка генов (участков хромосомы, отвечающих за конкретный признак), но это не такая уж и большая проблема.
 
2 ssx
 
М-да... довольно конкретная ссылка. Лучше скажите, это много мороки для не очень опытного программиста?

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 16:52 01-04-2004
beeos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crazy_Shrike

Цитата:
 Подозреваю, что они позанимают самы "удобные" ячейки и будут там торчать до скончания веков. Нужны изменяющиеся факторы среды...  

Если кто и займет ячейки, которые окажутся объективно удобными, будет рано или поздно вытеснен оттуда более сильными особями. Или же наоборот, там и погибнет в одиночестве.  
Изменяющиеся факторы среды сделать тоже можно -- каждое существо, "поселившись" в ячейке, оказывает влияние на нее, т.е. например уменьшает фактор барьера, или вычерпывает одну единицу ресурсов, содержащихся в ячейке. Таким образом, получаем среду, которая изменяется в зависимости от существ, которые ее населяют. Идея с хромосомами -- просто супер.  
Есть предложение: составить краткое описание каждого объекта в системе с тем, чтобы написать рабочий и, главное, расширяемый вариант программы. А уже потом заняться экспериментированием с параметрами.

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 17:04 01-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ой, ой!!! Что это???  У Вас текст тоже перекорежило???
 
Добавлено
Вы программируете?

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 17:19 01-04-2004
beeos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это такие первоапрельские шуточки...
Crazy_Shrike
Да. Но это не главное. Грамотно спроектированную и документированную систему может закодировать студентка-третьекурсница...  
Или интересуют именно решения конкретных программных задач?

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 17:32 01-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ага. Все нормально.  
 
Как вы думаете, нужен ли хищник?
 
Добавлено
Вы второй человек, говорящий про 1-апрельские шуточки. Это что, серьезно???
 
Начнем с размеров поля...

Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 17:35 01-04-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Эволюция в виртуальной машине


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru