Darwinbots опять
Sep. 19th, 2014 04:18 pmВсевозможные увлечения, проекты, и игрушки имеют свойство захватывать внимание на некоторый срок, но потом надоедать. У меня есть одно увлечение, которое я переодически забрасываю, но потом опять к нему возвращаюсь, и так вот уже 11 лет.
Программа Darwinbots - симулятор биологической эволюции. Я о ней писал уже здесь и потом еще здесь. Вкратце - это лучший из известных мне симуляторов эволюции. Вернее даже так: программ симулирует биологические процессы, но вот эволюция внутри нее не симулируется, а действительно происходит, со всеми полагающимися свойствами - случайными мутациями, естественным отбором, генетическим дрейфом, непредсказуемостью решений, генетическим мусором, эволюцией новых функций с нуля и т.п.
Концепция этого симулятора отличная, но вот сама программа это "ужос". Она писалась на протяжении многих лет самыми разными людьми, которые постепенно добавляли к ней все новые и новые фичи, не особо заботясь об удобстве пользователей. Это программа для небольшой кучки фанатов, которым не лень перелопатить кучу описаний, разобраться самим в том для чего описаний нет, и найти способы обходить баги (которых в программе изрядно).
Я ее пару дней назад загрузил после несколько-летнего перерыва и начал гонять, но даже мне, опытному пользователю, в ней непросто разобраться.
Поэтому вопрос к залу: А нет желающих попробовать эту программу привести хотя бы в более-менее божеский вид? Я программировать не умею, но могу помочь с объяснениями того, как устроены все функции и для чего они нужны. Все исходники есть и вроде как в них не так уж трудно разобраться (это мне сказал человек, который сам одно время работал над этой программой). К сожалению, программа написана на Visual Basic, а это (насколько я понимаю) мертвый уже язык (но может остались старожилы).
Альтернативный вариант для особых энтузиастов: Взять основную концепцию симулятора и написать схожую программу с нуля.
Программа Darwinbots - симулятор биологической эволюции. Я о ней писал уже здесь и потом еще здесь. Вкратце - это лучший из известных мне симуляторов эволюции. Вернее даже так: программ симулирует биологические процессы, но вот эволюция внутри нее не симулируется, а действительно происходит, со всеми полагающимися свойствами - случайными мутациями, естественным отбором, генетическим дрейфом, непредсказуемостью решений, генетическим мусором, эволюцией новых функций с нуля и т.п.
Концепция этого симулятора отличная, но вот сама программа это "ужос". Она писалась на протяжении многих лет самыми разными людьми, которые постепенно добавляли к ней все новые и новые фичи, не особо заботясь об удобстве пользователей. Это программа для небольшой кучки фанатов, которым не лень перелопатить кучу описаний, разобраться самим в том для чего описаний нет, и найти способы обходить баги (которых в программе изрядно).
Я ее пару дней назад загрузил после несколько-летнего перерыва и начал гонять, но даже мне, опытному пользователю, в ней непросто разобраться.
Поэтому вопрос к залу: А нет желающих попробовать эту программу привести хотя бы в более-менее божеский вид? Я программировать не умею, но могу помочь с объяснениями того, как устроены все функции и для чего они нужны. Все исходники есть и вроде как в них не так уж трудно разобраться (это мне сказал человек, который сам одно время работал над этой программой). К сожалению, программа написана на Visual Basic, а это (насколько я понимаю) мертвый уже язык (но может остались старожилы).
Альтернативный вариант для особых энтузиастов: Взять основную концепцию симулятора и написать схожую программу с нуля.
no subject
Date: 2014-09-19 08:26 pm (UTC)no subject
Date: 2014-09-19 08:34 pm (UTC)no subject
Date: 2014-09-19 08:47 pm (UTC)no subject
Date: 2014-09-19 08:50 pm (UTC)===
Public Function Min(ByVal X As Single, ByVal Y As Single) As Single
If (X < Y) Then
Min = X
Exit Function
End If
Min = Y
End Function
===
Уже давно пишут так:
(X<Y?X:Y) ;)
no subject
Date: 2014-09-19 08:54 pm (UTC)в каждой строчке-то нетрудно, но что бы нормально переписать надо понимать вообще всё что, зачем и к чему...
"Взять основную концепцию симулятора и написать схожую программу с нуля"
А есть описание концепции? Чтоб оценить размах так сказать :)
p.s. в жабаскрипт ее переписать надо, чтоб в броузере запускать ;)
no subject
Date: 2014-09-19 08:55 pm (UTC)http://ahiin.livejournal.com/97628.html
Гораздо проще устроено, но тоже весело.
no subject
Date: 2014-09-19 09:01 pm (UTC)I wish I had time to play with it. Maybe ask some students?
no subject
Date: 2014-09-19 09:52 pm (UTC)no subject
Date: 2014-09-20 12:32 am (UTC)В общем, идея в том, что свойства каждого организма (его поведение, способности, репродуктивная стратегия и т.д.) определяются программой. Эта программа и есть мутируемая ДНК. Она может быть очень простой, а может быть очень сложной. Программа на входе берет параметры, поставляемые "органами чувств", а выдает на выходе действия на следующий ход (это все Markov Chain). Программа написана на языке, который устроен так, что небольшие изменения (мутации) в программе как правило не ведут к ее полной и немедленной недееспособности (хотя могут), а часто лишь слегка ее изменяют.
Организмы эти забрасываются в "среду" и никто не определяет согласно каким свойствам эти организмы выживают или погибают, все происходит "естественно" - сумел оставить размножающееся потомство, значит преуспел. Это единственный критерий.
Разнообразие функций в программе позволяет создавать очень разные условия среды.
Насколько я понимаю, основное, что тормозит программу это необходимость прогонять для каждого из роботов индивидуально его "органы чувств", его программу, и его положение на следующий ход. Последнее особенно сложно, потому что эти организмы имеют разные размеры и массы, и приходится просчитывать как все эти "шарики" ведут себя в этаком виртуальном бильярде.
no subject
Date: 2014-09-20 01:35 am (UTC)If i take it, I'll fork vb6 to my own repo and port it to csharp on my own. You will have to negotiate merging with original csharp branch, if that will be possible.
Again, no promises.
no subject
Date: 2014-09-20 02:07 am (UTC)I added a couple warning to the program as requested. I also added a pretty new startup screen that does a small description for existing settings packs.
I would love to get more information from you as you reviewed the program recently. Contact me by email. And yes I do tend to obsess on this project a little. So I guess your post overall was appropriate. Did not get a reply from you in a while so starting looking for you online. :)
There is a difference between natively bypassing a bug, like turn off error checking. And actually fixing bugs. I have physically fixed about 10, 15 bugs so far trying to figure out what is actually wrong and not just hammering a fix in place. Also, no new features will be added at this point, so you may take that as good news.
I still hate how visual basic was murdered on me, I grew up on it.
no subject
Date: 2014-09-20 02:11 am (UTC)no subject
Date: 2014-09-20 02:15 am (UTC)no subject
Date: 2014-09-20 02:21 am (UTC)no subject
Date: 2014-09-20 02:22 am (UTC)no subject
Date: 2014-09-20 02:46 am (UTC)We have two svn sources one for the complete vb source, the other for the c# work in progress.
This program does not have to be object oriented as it is not. The only thing I need is stack tracing and parallel support.
I needed a project to learn on that I can actually comprehend. I got one. That does not necessarily make the design philosophy slow.
no subject
Date: 2014-09-20 02:51 am (UTC)no subject
Date: 2014-09-20 02:58 am (UTC)Talking from experience, what makes the program slow is all the extra features.
We have to do a lot of calculations that go beyond collision physics.
To name a few we have eye calculations, correctly interpreting all particle types, data being calculated for status updates, weather modes, pond modes, gravity modes, the list is a long one.
no subject
Date: 2014-09-20 04:07 am (UTC)no subject
Date: 2014-09-20 06:12 am (UTC)Гораздо проще устроено, но тоже весело.
no subject
Date: 2014-09-20 06:40 am (UTC)наверное имело бы больший смысл скооперироваться с ним
no subject
Date: 2014-09-20 06:42 am (UTC)no subject
Date: 2014-09-20 07:08 am (UTC)no subject
Date: 2014-09-20 07:11 am (UTC)no subject
Date: 2014-09-20 08:05 am (UTC)