shvarz: (Default)
[personal profile] shvarz
Всевозможные увлечения, проекты, и игрушки имеют свойство захватывать внимание на некоторый срок, но потом надоедать. У меня есть одно увлечение, которое я переодически забрасываю, но потом опять к нему возвращаюсь, и так вот уже 11 лет.

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

Концепция этого симулятора отличная, но вот сама программа это "ужос". Она писалась на протяжении многих лет самыми разными людьми, которые постепенно добавляли к ней все новые и новые фичи, не особо заботясь об удобстве пользователей. Это программа для небольшой кучки фанатов, которым не лень перелопатить кучу описаний, разобраться самим в том для чего описаний нет, и найти способы обходить баги (которых в программе изрядно).

Я ее пару дней назад загрузил после несколько-летнего перерыва и начал гонять, но даже мне, опытному пользователю, в ней непросто разобраться.

Поэтому вопрос к залу: А нет желающих попробовать эту программу привести хотя бы в более-менее божеский вид? Я программировать не умею, но могу помочь с объяснениями того, как устроены все функции и для чего они нужны. Все исходники есть и вроде как в них не так уж трудно разобраться (это мне сказал человек, который сам одно время работал над этой программой). К сожалению, программа написана на Visual Basic, а это (насколько я понимаю) мертвый уже язык (но может остались старожилы).
Альтернативный вариант для особых энтузиастов: Взять основную концепцию симулятора и написать схожую программу с нуля.
Page 1 of 3 << [1] [2] [3] >>

Date: 2014-09-19 08:26 pm (UTC)
From: [identity profile] kiselev-dv.livejournal.com
А где исходники посмотреть можно?

Date: 2014-09-19 08:47 pm (UTC)
From: [identity profile] mudak.livejournal.com
они ж там вроде версию 3 на C# пишут http://wiki.darwinbots.com/w/Darwinbots_3

Date: 2014-09-19 08:50 pm (UTC)
From: [identity profile] friendlystrnger.livejournal.com
OMG, "кто так пишет?!" :)
===
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) ;)

Date: 2014-09-19 08:54 pm (UTC)
From: [identity profile] friendlystrnger.livejournal.com
>Все исходники есть и вроде как в них не так уж трудно разобраться
в каждой строчке-то нетрудно, но что бы нормально переписать надо понимать вообще всё что, зачем и к чему...

"Взять основную концепцию симулятора и написать схожую программу с нуля"
А есть описание концепции? Чтоб оценить размах так сказать :)


p.s. в жабаскрипт ее переписать надо, чтоб в броузере запускать ;)

Date: 2014-09-19 08:55 pm (UTC)
From: [identity profile] ahiin.livejournal.com
А такую штуку видели?
http://ahiin.livejournal.com/97628.html

Гораздо проще устроено, но тоже весело.

Date: 2014-09-19 09:01 pm (UTC)
From: [identity profile] cema.livejournal.com
Well, they have a C# version and a C++ version, so all is swell.

I wish I had time to play with it. Maybe ask some students?

Date: 2014-09-19 09:52 pm (UTC)
From: [identity profile] shvarz.livejournal.com
Это один человек уже несколько лет работает и самое раннее, когда она ожидается - через год.

Date: 2014-09-20 12:32 am (UTC)
From: [identity profile] shvarz.livejournal.com
Ммм, описание концепции. Частично рассказано в постах по ссылкам в тексте.
В общем, идея в том, что свойства каждого организма (его поведение, способности, репродуктивная стратегия и т.д.) определяются программой. Эта программа и есть мутируемая ДНК. Она может быть очень простой, а может быть очень сложной. Программа на входе берет параметры, поставляемые "органами чувств", а выдает на выходе действия на следующий ход (это все Markov Chain). Программа написана на языке, который устроен так, что небольшие изменения (мутации) в программе как правило не ведут к ее полной и немедленной недееспособности (хотя могут), а часто лишь слегка ее изменяют.
Организмы эти забрасываются в "среду" и никто не определяет согласно каким свойствам эти организмы выживают или погибают, все происходит "естественно" - сумел оставить размножающееся потомство, значит преуспел. Это единственный критерий.
Разнообразие функций в программе позволяет создавать очень разные условия среды.
Насколько я понимаю, основное, что тормозит программу это необходимость прогонять для каждого из роботов индивидуально его "органы чувств", его программу, и его положение на следующий ход. Последнее особенно сложно, потому что эти организмы имеют разные размеры и массы, и приходится просчитывать как все эти "шарики" ведут себя в этаком виртуальном бильярде.
Edited Date: 2014-09-20 12:33 am (UTC)

Date: 2014-09-20 01:35 am (UTC)
From: [identity profile] smalgin.livejournal.com
I will take a look. No promises though.
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.

Date: 2014-09-20 02:07 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
Hello Yegor, thank you for the kind post, and for playing with the software again.

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.

Date: 2014-09-20 02:11 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
Agree, there is an iif function support in vb6. The reason it was done as above was because the compiler will interpret both the same speed. And we where looking for code clarity. It is best to break up your formula on more then one line when possible. Never blame a language, blame the programmer. And please stop killing a solid programming language further.

Date: 2014-09-20 02:15 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
There where several attempts to rewrite in Java over the years. Java is not optimized for performance. C/C# combination is optimized. Too bad it is a little over my head. Version 3 will be released sometime next year if everything goes well.

Date: 2014-09-20 02:21 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
I have played with that program for a good three hours before. The physics model is very limited and even less biologically accurate then what we have. Also there is an external fitness function, we do not have one. Also, we simulate all or entities together and watch them evolve progressively. We do not have entities pre-generate at the beginning of the simulation. We have a true(ish) DNA that can be designed by a user as well as evolved by the program from nothingness.

Date: 2014-09-20 02:22 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
All is well? vb6 is dead...

Date: 2014-09-20 02:46 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
Very well written comment :)

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.

Date: 2014-09-20 02:51 am (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
вот когда в следующей жизни рыбаком будут работать, я тогда обязательно в свободное время, для развлечения эту или другую какую программу перепишу, с Бейсика на Це. а нынче -- извините. слишком уж анекдот про станки на пляже напоминает

Date: 2014-09-20 02:58 am (UTC)
From: [identity profile] paul kononov (from livejournal.com)
Somewhat accurate description. :)

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.

Date: 2014-09-20 04:07 am (UTC)
From: [identity profile] obiwanus.livejournal.com
When I see someone writing in English in Russian threads without a decent reason I cannot get rid of the feeling that they are f*cking showing off.

Date: 2014-09-20 06:12 am (UTC)
From: [identity profile] ahiin.livejournal.com
Как много текста вам пришлось написать на английском (wtf, btw?), чтобы в итоге повторить исходную мысль:

Гораздо проще устроено, но тоже весело.

Date: 2014-09-20 06:40 am (UTC)
From: [identity profile] 3seemingmonkeys.livejournal.com
а вы планируете управиться быстрее? разработка сложного ПО может вообще никогда не кончаться, особенно когда сроков нет.
наверное имело бы больший смысл скооперироваться с ним

Date: 2014-09-20 06:42 am (UTC)
From: [identity profile] 3seemingmonkeys.livejournal.com
занятно, а не могли бы вы еще рассказать, какие там фишки есть, кроме симуляции зрения?

Date: 2014-09-20 07:08 am (UTC)
From: [identity profile] harmala.livejournal.com
Maybe they just got no russian keyboard?

Date: 2014-09-20 07:11 am (UTC)
From: [identity profile] obiwanus.livejournal.com
That's not a decent reason. There are services on the Internet that turn transliterated texts into normal ones.

Date: 2014-09-20 08:05 am (UTC)
From: [identity profile] kiselev-dv.livejournal.com
Вы если возьметесь - то нас будет двое.
Page 1 of 3 << [1] [2] [3] >>

March 2022

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 04:17 am
Powered by Dreamwidth Studios