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

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

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

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

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

beeos



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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ага. Хорошо. Давайте делать класс?

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



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

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



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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По порядку.
  • Простейший вариант либидо -- число, показывающее, на каком удалении особь будет "замечать" объект для продолжения рода. Можно ввести дополнительный ген, отвечающий за индивидуальные предпочтения в выборе партнера. Т.е. при встрече двух особей будут сравниваться такие показатели, и если их разность лежит в определенном диапазоне, то пара способна произвести потомство. Можно поиграться с этим показателем и заложить в него количество и приблизительное смещение генов будущих детей
  • Коэффициент выживаемости. Пример такой: есть существо, у которого этот коэффициент равен 0.2 и существо с коэффициентом 0.3. Текущая энергия первого существа - 30, второго - 20. Их жизнеспособность в данных условиях рассчитывается как произведение коэффициента выживаемости на энергию. Нетрудно заметить, что она одинакова. При достижении низкого уровня жизнеспособности, например 5, существо погибает.
  • Аськой и мылом общаться пока не получится. И потом это будет означать, что тему закроют и приток единомышленников прекратится... их и так не слишком много...  

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

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 19:02 01-04-2004 | Исправлено: beeos, 19:07 01-04-2004
GreyGendalf

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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2  GreyGendalf
 
Про биологов - это правильно. Это не проблема. У меня есть друг - профессиональный генетик. Он-то и внес немалую лепту в мои размышления.
 
Насчет многопоточности.... Как его сделать многопоточным? У меня об этом ровно ноль представлений.
 
2 beeos
 
Значит, либидо - это, грубо говоря, радиус видимости потенциального партнера. Ясно.  
Что такое смещение генов? Не понял. Если это про скрещивание, то, знаю по опыту, оно должно быть случайным: потомку передается хромосома одного родителя, а потом в нее вставляется кусок случайной длины второго родителя, начиная со случайной точки.
Сразу возникает вопрос: как быть с генами? Будут они неразрывными при кроссинговере, либо будет возможным заменять участок хромосомы без учета локализации генов... Нуна подумать.
 
Коэффициент выживаемости... Может пока обойдемся простым ограничением времени жизни? А там видно будет. Или убедите меня в обратном.
 
 

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



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

Цитата:
Коэффициент выживаемости... Может пока обойдемся простым ограничением времени жизни? А там видно будет. Или убедите меня в обратном.  

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

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 13:12 02-04-2004 | Исправлено: beeos, 13:44 02-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ага... Это доминантные и рецессивные гены. В приближении, когда встречаются два одинаковых гена разных родителей, то наследуется именно доминантный.... Хотя, да, я спрошу по этому поводу точнее... Еще есть такая штука, как аллели... Через часик напишу...
Значит, пока обходимся временем жизни...
 
Добавлено
Вопрос по технической части...
 
В моей старой программе была одна кривая сторона (ну, не одна, конечно)... как мне кажется... У меня был массив объектов, так что популяция ограничивалась этим массивом. У каждого объекта-элемента был признак живой или нет. Это неправильно?

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



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

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 16:19 02-04-2004 | Исправлено: beeos, 16:20 02-04-2004
GreyGendalf

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

Всего записей: 272 | Зарегистр. 06-01-2003 | Отправлено: 16:22 02-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ой, ой!!! Подождите!  
Если можно, попроще... Есть класс (CEssence), описывающий существ. Что нужно делать дальше?  С чего будет стартовать программа?
 
 
 
Добавлено
Среду делать объектом? По-моему, неплохая идея... beeos, Ваше мнение?

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



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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Логично. Делаем среду массивом. Давайте теперь обсудим конкретные свойства ячеек.
 
Добавлено
И я не совсем представляю одну практическую вещь... Как сделать начальную инициализацию популяции... Случайно число объектов... Как их создать?

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

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crazy_Shrike
Вы бы тему назвали как генетические алгоритмы или что-то на подобии.  

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

Ответ простой, но реализация не очень простая. Использовать потоки, т.е. писать программу как многопоточную. Но, тут возникает проблема как синхронизировать рачет, и что можно распаралелить а что нельзя. Читать в Итернете по Multithread programming.
Цитата:
Это че за функия??? Де смотреть-то?  =)   В Билдере нету....

врядли ее там нету, у меня в Delphi она есть, скорей всего нужно заголовочный файл подключить. Нужно смотреть Win32 SDK (Windows SDK), или в MSDN, адрес указали.

Цитата:
Лучше скажите, это много мороки для не очень опытного программиста?

да, довольно много. Хотя все зависит от индивидуальных способностей и наличия соответстующей литеретуры для въезжания в тему. Теория не очень сложная, но реализация (отладка) может занимать месяцы. Попробуйте поискать соответствующую инфу и понять, будете ли вы делать много потоковость или будете ждать с одним потоком. Если ваши алгоритмы могут быть распаралелины, тогда смотрите в сторону многопотоковости.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 19:05 02-04-2004
Crazy_Shrike



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

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не забывайте классическую игру ЖИЗНЬ


----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 17:53 05-04-2004
beeos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да с нее все и началось... у меня по крайней мере...

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

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

Цитата:
Насчет энергии: думаю, как лучше сделать. Стоит ли делать ресурсы исчерпаемыми.

по хорошему, исчерпаемыми, но возобновляемыми, для разных ячеек - разная дельта прироста
 
 
Добавлено
организмы же будут передвигаться?
поэтому в рыбных местах будет больше жизни, а более актиынве получат больше пищи

Всего записей: 272 | Зарегистр. 06-01-2003 | Отправлено: 18:33 05-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