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

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

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

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

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

unhappy



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

Всего записей: 681 | Зарегистр. 25-10-2002 | Отправлено: 21:46 14-04-2004
ArtSh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Между прочим сложность алгоритма генерирования ч-л динамически для данного объекта будет порядка количества объектов, тогда как генерирование для всего массива координат будет пропорционально количеству ячеек в квадрате (как минимум).
кроме того, при координате предложенной мной объектам можно будет создать иллюзию бесконечности их мира.
 
В связи с этим предлагаю следующий тип объекта коордтнаты:
 
class t_coord
{
  double x,y;
  double energy,garbage;
  constr  ...
  destr  ...
  friend get_new_coord(double dx,double dy);
  friend get_new_energy(double x,double y,double *obj_energy, double *obj_garbage);
  friend get_new_garbage(x,y,*obj_energy,*obj_garbage,*world_garbage);
};  
 
 
class t_obj
{
   ...
   t_coord my_coord;
   class t_gen_set;
   ...
};
 
 
class t_gen_set
{
  ...
  double my_energy,my_garbage,my_age;
  ...
};
 

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здрасьте.
 
Я тут немного покодировал за последние дни, с динамическими массивами разобрался...
Нужно ли все-таки вводить объем ячейки? Было предложено, что объемом будет выступать максимально возможное количество особей, пребывающих в ней одновременно. Я так и не понимаю цели этого. Не лучше ли, что бы просто шла борьба за лучшие ячейки? А нападать можно только с соседних, где условия, по всей видимости, хуже.  Еще один аргумент - если в одной ячейке будет несколько организмов, а поле 100х100, какова же может быть численность популяции? У меня она автоматичнски ограничивается числом ячеек - 10*4. Господа! В ходе проведенных экспериментов выяснилось, что на обработку одного такта при популяции 3 тыс. особей уходит больше секунды! (P-IV, 1,6GHz) Это при том, что выполнялось всего несколько методов кодирующих и декодирующих параметры двоичной хромосомы. Имхо, аргумент сильный. Можно, конечно, уменьшить размеры среды... но это будет уже не интересно.  
Насчет псевдобесконечности пространства, я почти ничего не понял, но если то, о чем я подумал, пространство можно легко замкнуть, т.е. когда после 100-й ячейки идет нулевая, ну и т.п.

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

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

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



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

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

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

Всего записей: 92 | Зарегистр. 30-03-2004 | Отправлено: 15:43 19-04-2004
Crazy_Shrike



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

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



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

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

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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Тут, мы, наверное, разойдемся во мнениях. Я делаю более прямолиннейнее, при этом отдавая себе отчет, что прямолинейность не всегда оптимальна. Зато прозрачна.  
Лучше еще раз обсудим бесконечность. Мне эта идея нравится все больше. Я так понимаю, Вы предлагаете не ограничивать координаты. Что помешает им бесконечно увеличиваться?

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вы ушли в дебри. Ничего продуктивного у вас не выйдет так.
ArtSh
Против твоих идей один простой пример - надо определить кто находится рядом с неким существом - если мы берем матричную систему - все просто, делаем +1 -1 к координатам ячейки и смотрим кто в ней находится. Если же ячеек нет и координата - вещественное число - чтобы определить например какие существа в радиусе R надо будет перебрать всех и посчитать квадрат расстояния по векторам с вещесвенными числами. Нужен будет суперкомпьютер - точно говорю. И это самый простой пример.

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



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

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



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

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 15:08 22-04-2004
Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Давайте. Мой клас:
Хромосома:
                  - отведенное твари время жизни;
                  - масса;
                  - энергия;
                  - пол;
                  - либидо (то бишь радиус видимости партнера);
                  - ген, отвечающий за принадлежность твари обычной расе или расе хищников;
                  - радиус обзора (сколько клеток может видеть, т.е. получать информацию о них);
                   
Координаты: х,у;
Возраст.  
 
Методы...  
- методы для возвращения десятичных значений всех параметров, заложенных в гене,  
- методы для прибавления и отнимания единицы к тем же параметрам. (Решил, что параметры могут меняться только с шагом 1);  
- метод случайного шага (сам не знаю зачем);
- метод, собирающий информацию о клетках, анализирующий ее и принимающий решение сделать шаг в определенном направлении, для чего есть  
- 8 методов - напрвлений шага.
 
- ну и два приватных метода, делающих десятичную интерпритацию генов и записывающего десятичную информацию в гены.  
 
У меня, например, пока псё.

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

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

Цитата:
если мы берем матричную систему - все просто, делаем +1 -1 к координатам ячейки и смотрим кто в ней находится

 
Не бывает, чтобы один мед, а дегтя нет, зато при дискретных координатах, чтобы изменить к-л свойство у всех объектов придется перебирать все клетки.
 
А объекты можно хранить и в сортированном виде, и использовать  скоростные алгоритмы сортировки и поиска.
 
И на счет суперкомпьютеров. При вставке 1000000 объектов типа int у меня ушло 5сек. (Athlon2500+, nForce2Ultra400, DDR700MB )

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ArtSh
Ты где то далеко от нас

Цитата:
 чтобы изменить к-л свойство у всех объектов придется перебирать все клетки

Во первых есссно перебирать надо не все клетки, а все объекты по индексу массива (списка).
 

Цитата:
И на счет суперкомпьютеров. При вставке 1000000 объектов типа int у меня ушло 5сек. (Athlon2500+, nForce2Ultra400, DDR700MB )

Куда и зачем ты их вставлял ? Ты попробуй сгенери хотя бы 1000 объектов с случайными координатами типа real и расчитав расстояние от одного объекта до всех остальных определи какие объекты находятся в радиусе досигаемости Rd.


Crazy_Shrike

Цитата:
Хромосома:  
                  - отведенное твари время жизни;  
                  - масса;  
                  - энергия;  
                  - пол;  
                  - либидо (то бишь радиус видимости партнера);  
                  - ген, отвечающий за принадлежность твари обычной расе или расе хищников;  
                  - радиус обзора (сколько клеток может видеть, т.е. получать информацию о них);  
                   
Координаты: х,у;  
Возраст.  

 
1)Во первых, время жизни ДОЛЖНО зависить от условий обитания. В генах заложено только максимальное время жизни от которого каждый тик должна отниматся некая дельта зависящая от того насколько сыто, одето, обуто существо (фигурально конечно )
2)Во вторых, масса я так понимаю тоже начальная ? Или существо не растет при жизни ? - Значит надо добавить массу в свойства помимо хромосомы.
3)То же самое о энергии.
4)С полом понятнее
5) Либидо - тоже должно имется в свойствах отдельно, так как тоже зависит от здоровья существа.
 
Пока все, подумай пока об этом.
 
 
 
Добавлено
И еще, предлагаю всю информацию нужную в процессах обсчета дублировать вне хромосомы, дабы не забирать время на дешифровку, а хромосому оставить только для скрещивания.

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



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

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



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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Секундочку. Соображение насчет начальной массы, времени жизни etc.
Предлагаю хранить в хромосоме не начальные значения, а модификаторы, эмулирующие генетическую предрасположенность. Я уже как-то упоминал об этом, но было несколько сыровато...
Живой пример: среднее время жизни существа положим в 1000 тактов. Вводим в хромосому модификатор жизнеспособности. Имеем существо с жизнеспособностью 0.7 и существо с жизнеспособностью 0.8, живущие в нормальных условиях 700 и 800 тактов соответственно. На первый взгляд принципиальных различий нет, но модификаторы позволяют рассчитывать параметры более гибко, т.е. при глобальном катаклизме среднее время жизни уменьшается до 900 тактов, и пропорционально меняется время жизни существ. Точнее, даже правильнее было бы рассчитывать не полное время жизни, а остаток, но это уже подробности технической реализации.
Другие параметры рассчитываются аналогично.  
Конечно, на ресурсы придется разориться, но тем больше поводов придумать красивые оптимизированные алгоритмы..

Всего записей: 329 | Зарегистр. 06-01-2004 | Отправлено: 16:37 23-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