Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2012, 16:23   #11
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Интересно, интересно. Вы это на делфи пишите?
Добавьте в последствии, системы гнезд для существ, различные эвалюционные способности, типо маскировки, защитный покров и т.д. физические качества, типо скорости передвижения и т.д.
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 21.05.2012, 03:20   #12
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

В дальнейшем все это конечно планируется сделать. Данный вариант предназначался для проверки некоторых идей, но и по нему можно сделать кое какие выводы:
Главный из них это то что идея была правильной, т.е. все развивается и эволюционирует, и это происходит даже не так медленно как я предполагал. Живность довольно быстро учится обходить черные области, затем понимает что нужно искать зеленые точки, и что размножаться выгодней половым путем. Еще интересная особенность обнаружилась когда одного из травоядных хищники загнали на черную область, в этот момент он наплодил кучу потомков и помер. Что то подобное есть у простейших когда попадают в неблагоприятные условия, они выбрасывают кучу спор и погибают. Так что у живности появляется довольно сложное поведение, за которым иногда очень интересно наблюдать.
В дальнейшем конечно хотелось бы разнообразить мир, сделать разделение видов на подвиды увеличить кол-ва нейронов у животных и много чего еще. Но обнаружилась и проблема. Даже в данном варианте при количестве животных более 1000, вычисление их НС занимает столько времени что их малейшая заметная эволюция будет идти недели, и говорить про увеличение НС или усложнение мира и вовсе не приходится.
В общем нужно думать над оптимизацией вычислений.
gusluk вне форума Ответить с цитированием
Старый 21.05.2012, 10:33   #13
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

А на чём у Вас вычисления ?

если у Вас есть дробные вычисления - выкиньте и замените на целые, уберите все операции деления с округлением и замените на div или вообще shr ( для деления на 2 , равно и операции умножения на 2 можно заменить на shl)
Просмотрите все циклы и выкиньте то, что не изменяется в цикле за проход цикла с введением локальной переменной под хранение нужного значения, введение локальных переменных также задействуйте для многих операций взятия подэлементов структур или массивов (обращение к локальной переменной быстрее чем к структурам/массивам)

можете использовать inline подпрограммы (для дельфи2009+) либо кое-где свести к минимуму обращение через подпрограммы, особенно в циклах, чтобы уменьшить такты процессора на джампы

выкиньте всю работу со строками , если сильно надо, можно заменить string на тип shortstring или вообще на массив char
выкиньте процедуры отрисовки основанные на canvas.pixels и замените на bitmap.scanline (примеры я давал в теме уроки по созданию игр для новичков, гляньте поиском мои посты)

Постарайтесь поменьше выделять/перераспределять память - setlength или create-free или т.п.

Ну есть и ещё методы для оптимайза, но без кода так вот чётко не скажешь на что лучше сделать упор.

Последний раз редактировалось phomm; 21.05.2012 в 10:35.
phomm вне форума Ответить с цитированием
Старый 21.05.2012, 14:20   #14
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Когда новая версия?) Жду не дождусь
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 22.05.2012, 09:55   #15
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

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

И вот решил упростить структуру НС.

Был классический четырехслойный перцептерон с обратной связью.
На рисунке его сокращенная схема.

Считал его так:
Код:
for i:=1 to 100 do for j:=1 to 100 do NS[n].N2[j]:=NS[n].N2[j]+NS[n].Sin_1_2[i,j]*NS[n].N1[i];
for i:=1 to 100 do NS[n].N2[i]:=Fx(NS[n].N2[i]);
for i:=1 to 100 do for j:=1 to 100 do  NS[n].N3[j]:=NS[n].N3[j]+NS[n].Sin_2_3[i,j]*NS[n].N2[i];
for i:=1 to 100 do NS[n].N3[i]:=Fx(NS[n].N3[i]);
for i:=1 to 100 do  NS[n].N2[i]:=0;

for i:=1 to 100 do for j:=1 to 100 do  NS[n].N4[j]:=NS[n].N4[j]+NS[n].Sin_3_4[i,j]*NS[n].N3[i];
for i:=1 to 100 do NS[n].N4[i]:=Fx(NS[n].N4[i]);
for i:=1 to 100 do  NS[n].N3[i]:=0;

if NS[n].NeyrReset>0 then for i:=1 to 100 do for j:=1 to 100 do  NS[n].N2[j]:=NS[n].N2[j]+NS[n].Sin_3_2[i,j]*NS[n].N3[i];

for i:=1 to 100 do for j:=1 to 10 do  NS[n].Nout[j]:=NS[n].Nout[j]+NS[n].Sin_4_out[i,j]*NS[n].N4[i];
for i:=1 to 100 do NS[n].Nout[i]:=Fx(NS[n].Nout[i]);
for i:=1 to 100 do  NS[n].N4[i]:=0;
Понятно что куча циклов не способствует увеличению скорости расчета, потому решил чуть чуть упростить НС.


Это полносвязная НС, она является более универсальной чем остальные и может их всех повторить.
Считал так:
Код:
for i:=1 to 296 do
    begin
    if i>103 then NS[n].N[i]:=Fx(NS[n].N[i]);
    for j:=104 to 300 do
             begin
             if (i<>j) then NS[n].N[j]:=NS[n].N[j]+NS[n].Sin[i,j]*NS[n].N[i];
             end;
    NS[n].N[i]:=0;
    end;

NS[n].N[297]:=Fx(NS[n].N[297]);
NS[n].N[298]:=Fx(NS[n].N[298]);
NS[n].N[299]:=Fx(NS[n].N[299]);
NS[n].N[300]:=Fx(NS[n].N[300]);
Циклов тут гораздо меньше, соответственно и работать должно побыстрее.

Теперь одних животных оставлю со старой структурой НС, других с новой. Посмотрим кто будет быстрее развиваться.
Изображения
Тип файла: jpg Безымянный456.jpg (8.5 Кб, 194 просмотров)

Последний раз редактировалось gusluk; 22.05.2012 в 09:57.
gusluk вне форума Ответить с цитированием
Старый 24.05.2012, 03:03   #16
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Судя по развитию живности за последние два дня, второй вариант структуры НС как минимум не уступает первому, а может даже и превосходит его. Но при одинаковом количестве нейронов он дает выигрышный в производительности всего ~20%. Так что остается тока разбивать все это дело на потоки. Тут мне видится два варианта:
1. три потока на животных (каждому виду свой) и один на вывод графики.
2. каждому животному свой поток, плюс поток на графику.
Думаю первый вариант лучше.
gusluk вне форума Ответить с цитированием
Старый 24.05.2012, 13:31   #17
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Потоки на 1процессорных машинах не дадут ощутимого ускорения, разве что графика будет работать с видео (OGL/DX), а не процессором (GDI), а на 2процессорных дадут 20-30% выигрыша имхо.
3-4 процессорные машины всё же пока редковаты, тем более их обладателям до таких эмуляций обычно нет дела.

Может немного борзо/нагло, но дайте код, я попробую поотимайзить на свой манер и скину обратно, не обещаю конечно что будет летать, но может что и выйдет ))
phomm вне форума Ответить с цитированием
Старый 24.05.2012, 15:58   #18
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

По моим замерам без вывода графики около 90% времени занимают расчеты НС, и в виду того что это всего лишь тестовый вариант, поэтому оптимизировать тут имеет смысл только их. Как я считаю НС я приводил в предыдущих постах. Ну и как я уже писал, использовать буду полносвязную сеть, а не перцептрон.
gusluk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра жизнь Fi11eR Общие вопросы C/C++ 8 22.05.2014 16:52
Клеточный автомат (Игра Жизнь) в Delphi nitroes Фриланс 4 12.03.2012 13:11
Возможна ли жизнь с девушкой, будущей женой без детей всю жизнь? + Ипотечная тема :) Kasper1 Свободное общение 68 11.01.2012 00:54
Игра Жизнь VovanZ Софт 14 02.02.2010 16:46