Darwinbots Forum
Code center => Suggestions => Topic started by: Numsgil on September 28, 2005, 04:26:41 PM
-
I am issuing a formal call to all DB'ers who know anything about programming. There are tasks I want done but do not have time for myself.
To anyone interested in trying their hand at DB programming: I will personally help you get acquainted with the code. I may even release a code tutorial at some point on the wiki.
Once 2.4 is out, there are about 50 small things I want to see worked on. To do them all myself means about a month or even two.
-
THIS LINE IS BIZZY -OPERATORS ARE STANDIKNG BY EVOLVING FIRSTBOT AND GOING TO COLLAGE. PLEASE WAIT. plasmic007.tripod.com > music > Terminator's Dance...
ok ok , maybe I'll find time if its below masters math/ physics level I can handle it I think. (hey lest time don't say that I did not help at all)
P.S.
heh, know [ I ] anything [ / I ] about programming
-
I got VB but I dont know how to use it or where to find how I use it, could anyone of you link me to a site or something that tells all the commands that are possible to use? if I find out how to use VB I might be able to help.
-
A good place to start is searching for "visual basic tutorial".
Which is where I found this (http://www.vbtutor.net/vbtutor.html).
-
I'm going to borrow that link for the new MMORPG forum. :D
-
I'll give some coding a go!!
-
Awesome!
One of two things needs to be worked on in my mind:
1. I want somebody to start working on some sweet ass graphs. It doesn't sound exciting, but I think some cool graphs would totally kick the program up a notch, and it'd be a good, relatively safe way for someone to get their feet wet, so to speak.
For graphs I'd like the user to be able to set the x and y axis from a list of things. So you can do mutations per DNA length. Total mutations per cycle, etc. Mutations per bot nrg, etc.
I'd like the user to be able to export data in a form that can be read into and manipulated by Excel.
I'd like the user to be able to toggle between bar graphs, line graphs, point plots, and any other form you can think of.
I'd like the user to be able to perform regression analysis on the data inside DB. Create best fit curves/lines/parabolas/what have you. Also any other statistics observations anyone can think of. Perhaps mean and variance/standard deviation analysis.
I want these graphs to look superb. Excel quality. The current ones look ameteur.
I want these graphs to be scalable. So you don't have to wait 1000 cycles to see any lines being drawn in your graph at all.
I want these to be the smoothest, most user friendly aspect of the program. I want people to marvel at our superb graphs.
2. Scripts should be fleshed out. I haven't given this as much thought as the graphs, but basically anything the user can do, given a reason for doing so, the program should be able to do automatically. This inlcudes things like changing physics constants over time or based on population levels, etc.
Ideally, this would become another kind of language that's similar to the DNA language. Complex enough to perform some really amazing simulations.
-
3.) Must be done so Vb does NOT run out of memory.
-
Do you mean do 1 and 2 such that VB doesn't run out of memory, or make the current program work such that it doesn't run out of memory (that is, are you warning against a potential bug, or alerting us of a new bug?)
I don't think either 1 or 2 would be particularly memory intensive.
-
Why not export it directly into excel? VB does a great job of creating Excel files and moving data into them.
-
2. Scripts should be fleshed out. I haven't given this as much thought as the graphs, but basically anything the user can do, given a reason for doing so, the program should be able to do automatically. This inlcudes things like changing physics constants over time or based on population levels, etc.
I have a few ideas on improving the scripts. Particuarly expanding the way they are managed. Think Starcraft or Warcraft3 scripts. :)
-
We are getting close to that evil memory limit vb has... :(
I think it has it roots in complexity of flow. You may recall what happend when you had too mutch controls on the screen?
I dont know maybe all you need is better hardware.
-
VB has no maximum memory limit that I am aware of.
They do have a maximum control limit per form. But this can be easily gotten around by using control arrays.
-
sorry nums, but those kind of tutorials have never worked for me, isnt there anysite with the COMMANDS? I learn often faster if I see a list that says "this command do that and that" than I do if someone says "then we type blablabla" sorry but thats how I am
-
I have to agree with you Zelos.
The kind of tutorial I like is one that simply lists all of the keywords and tells you exactly what they do, what parameters are used etc.
Basically a reference book of the language.
-
yes, those are perfect for me, is there anyone PY or could anyone make it?
-
The MSDN help file that comes with a (real as opposed to pirated) version of VB kind of does this.
It's a bit difficult to navigate though and tends to assume a certain level of knowledge.
-
ive tried to install it, but it ask for somekinda cd, is it windows cd it ask for?
-
No, it's a MSDN CD that comes with your IDE (Integrated development environment) generally.
You can't find illegal copies of MSDN, beleive me I've tried. They just don't exist.
-
oki, :( does anyone know anywhere else I can get a list of all commands?
-
There's sort of an online MSDN (http://msdn2.microsoft.com/en-us/library/sh9ywfdk(en-US,VS.80).aspx).
-
a very nice site, but I cant find the list, where is it in there?
-
It's a general listing of all commands/functions/things in visual basic.
Do you know how to program? Like real languages I mean? Because if not you're not going to figure it out by staring at syntax. You need a basic amount of knowledge to figure out the syntax listings. It's sort of a catch-22.
Don't say I didn't warn you: This is a list of all keywords in VB (http://msdn2.microsoft.com/en-us/library/ksh7h19t).
There are other things you can do in the language too. Just damn explore the site I gave above.
If you want someone to hold your hand and walk you through, what you want is a walkthrough or tutorial. And I gave a nice one above.
-
Just a note, the list Nums has added it for Visual Studio 2005, what most of us use (#include Num ;)) is visual studio 6, and therefore the list is a little to updated... æøå
-
Note that not all the VB commands/operators/whatever you can find on the site I gave you can be used in VB6.0, the above is really a listing for VB2005, which is newer, and so has new features.
-
Jinx! :P
-
rhx, now for some try and error
-
Ive been trying some and this is what ive done yet. It can do simple math, like +/-
power square root, */"/" and even logarithm. But also convert one number in our 10 based system into what that number would be in the other base that is selected, what do you think for first try?
-
It is okay, but you need some exception handling, like division by zero, etc. Remember anything that can go wrong in a computer program, goes wrong!
-
And I have an idea that the base converter doesnt work 100 %!
159 dont give 105 in base 16, or have I misunderstood something?
-
It should give (in your notation) => 9.15 (9F in real hexidecimal) - were each '.' is a seperator for the numbers.
-
I know y it dont, we have only 10 numbers, but ure asking it to use numbers that dont exist, this one made for those lower than 10. but I´ll upgrade it to handle more ones
-
No not use numbers that doesnt exists, but to use decimal notation when writing the numbers in another base.
Explain how 105 == 159, explain how I should interprent 105?
9.15 means that 9*16^1 + 15*16^0 = 159 in decimal!
-
yes I know, well its fixed now so it can handle all number bases upto hexadecimal.
the explination is that it want to say 10 and 9
in the new math that would be A9, but it puts them toghater as one, so we see it as 109 but it should be 10 9 (A9)
-
Well I'm impressed. I assume then this isn't your first language? Especially if you know how to convert bases, then you've probably taken a computer class or two.
-
to be honest, this is the first langeage and the computer class I took only told me how to use WOrd/Excewl in ways I already knew. anything else then than have I learned today. But im very very very good in math, so base conversion have I known for quite sometime
-
Well, as long as you can program, and get things accomplished in DB code, I'm grateful.
-
as it is now I cant accomplish anything, but when I can VB more I´ll helpt some of course.
-
sweet
-
HEY, thats my line
-
Haha! Sucker.
-
Hi. Long time reader, first time poster
I can help out with programming if you like. I know my asm/c/c++ and can read VB. I'm brushing up on my C sharp now
I can also do algorithm analysis in the meantime if you wish, while I get familiar with C#/.NET/XNA
Thanks.
-
The C++ code is sort of dead, so it's either going to be Visual Basic or C#, depending on if you want to work on the current code or the future code (Darwinbots 3). Eric's maintaining the Visual Basic code, so he could probably help get you started there if you want.
With C# and Darwinbots 3, I'd really like to get someone other than me working on the GUI and graphics. It's an important step so I can start working on the physics, but it's a lot of work. I'll probably type up a post in the Darwinbots3 subforum explaining the different modules that need to exist.
Or if you're really ambitious you could help me work on the physics engine. The physics and mathematics involved is pretty intense, though, compared with most other things.
-
The C++ code is sort of dead, so it's either going to be Visual Basic or C#, depending on if you want to work on the current code or the future code (Darwinbots 3). Eric's maintaining the Visual Basic code, so he could probably help get you started there if you want.
With C# and Darwinbots 3, I'd really like to get someone other than me working on the GUI and graphics. It's an important step so I can start working on the physics, but it's a lot of work. I'll probably type up a post in the Darwinbots3 subforum explaining the different modules that need to exist.
Or if you're really ambitious you could help me work on the physics engine. The physics and mathematics involved is pretty intense, though, compared with most other things.
I'd rather help you out with the DB-3 work. I can also help you out with the physics if you wish, I'm almost finished my EE degree, so I'm pretty comfortable using vectors and transformations and all that jazz.
As for the GUI and graphics, I'm starting to dive into the Tao bindings and XNA. So I can eventually help with that.
-
Oh then you rock! I was thinking of using Tao for the graphics (played around a little with it already), or maybe XNA if they've built a version that runs on non-express studio versions.
I'll write up a post in the Darwinbots3 subforum explaining how to get the code I have and set up dependancies, the architecture I'm persuing, etc.
Have you any experience with unit testing or software system architecture?
-
I've had academic/project experience with testing procedures and software management. But yeah, I like evaluation before integration, just makes life easier.
-
I've set up the repository so everything is ignored properly, placed in the right directories, etc. I've also placed instructions on setting up the code. Find it all here (http://www.darwinbots.com/WikiManual/index.php?title=Darwinbots_3).
Try to download the repository and compile the code. Take careful not of anything that seems wrong or hard to set up as you do so, and report them in the Darwinbots3 forum. I'm going to be doing my best to make easing into coding on Darwinbots3 as easy as possible for whoever wants to do it.
-
I've set up the repository so everything is ignored properly, placed in the right directories, etc. I've also placed instructions on setting up the code. Find it all here (http://www.darwinbots.com/WikiManual/index.php?title=Darwinbots_3).
Try to download the repository and compile the code. Take careful not of anything that seems wrong or hard to set up as you do so, and report them in the Darwinbots3 forum. I'm going to be doing my best to make easing into coding on Darwinbots3 as easy as possible for whoever wants to do it.
Sweet. I'll take a look at it a.s.a.p.
I can start working on in about seven weeks time when I get out of my coursework.
-
Don't stress yourself out too bad. Darwinbots has a way of sucking up all your available time
-
I'm a little thin on spare time at the moment, but I am learning C# and looked at the existing code. I could help out, but I wouldn't know what to do and could only fill in stub classes and methods.
-
I could get you started doing something as simple as trying to break the existing code. It's all unit tested, which is this whole programming paradigm where you try to test every public interface in your class and try to break it, and check its results to make sure it's correct. So something as simple as writing some more tests to try and break the code would be helpful. I can't guarantee that all the tests I wrote already are 100% thorough, so it's good to have another brain thinking of ways to break it.
Alternatively the parsing code goes too far with exceptions. I'd like to replace things like Parse("string") with TryParse("string", ref basepair) that doesn't throw exceptions, and instead just returns a success or fail value.
Both would be pretty straightforward, and get you familiar with a section of the code.
-
Ok, I'll have a crack at it as soon as I finished this extensively thick C# book. I got most of the basics I think, just glossing over to make sure I haven't missed out anything.
-
I really like C# and XNA, however they're not so great for cross-platformness.
Don't stress yourself out too bad. Darwinbots has a way of sucking up all your available time
Of course, I already have enough other projects sucking up all my available time (but one of which is in C# 2.0 and uses XNA 1.0 refresh 1).
-
Ok, I'm working my way through the things and trying to find any possible loopholes.
I could implement chromosomes if I knew what they do; they still seem like an unnecessary layer of complexity.
-
Chromosomes are separate threads of execution. The effects of multiple chromosomes get averaged (probably something more complex than just averaging, I'm not sure yet) together into the final memory for the bot. So if one chromosome tried to do 5 .up store and the second chromosome did -10 .up store, the net result would be a -5 .up store. The idea being that two haploid bots can "fuse" during lean times in to a single bot. The original bots' DNA would share control of the new fused bot using the chromosome system like this.
Chromosomes and codules are the "big" features not implemented yet. I wouldn't recommend tackling them just yet.
BTW, did you get the unit tests to run properly? I can't remember how well I worked through the installation instructions for the source code on the wiki.
When you're ready to commit changes, let me know and I'll set you up with an SVN account.
-
I've looked through the unit tests, sealed them off where I thought they were a bit dodgy.
The Chromosome idea seems brilliant to me; I assume that would mean that viruses bias the behaviour instead of rupturing it. It isn't foolproof though; it's easy enough to get around if the variable is amplified.
-
Right, so I have to think about something better than just an average. Maybe weight the values somehow.
-
I'm looking over the changes to the source code you made. Just a quick couple of notes:
1. In the random tests, rnd should never return 10. The range should be 0 to 9, or -9 to 0. Also add a TODO note: at some point I'll implement a way to seed the random number generator with a specific value, and the rand calls will be deterministic, which will make them easier to test.
2. I like that you added some extra fizzles tests.
3. In int ParseLabel(string word, DNA dna), change the function to look like this: bool ParseLabel(string word, ref int value, DNA dna), and have it return true or false depending on if the value was successfully parsed. And then remove the try/catch block in the function below it and introduce something that checks for true/false. We want to avoid the case where unknown labels get parsed to 0. If a label really is unknown, it's a typo on the user's part, and we should be able to catch that and produce a warning or error message for them so they know right away.
Keep at it I'm impressed how quickly you've figured out the unit tests.
-
I often use the Java version of it, JUnit. It amazed me to see how similar C# and Java are to each other, especially in this regard.
-
Yeah, I think Microsoft realized that Java was pretty good, but that they'd never have creative control of the language, so they invented their own. I get the impression that Microsoft has a bit of "it wasn't invented here" syndrome going on. DirectX vs. OpenGL being a good example. But they usually do good work after the third or fourth version release, so I guess it all works out for the consumers in the end.
-
Well, if they don't like one, they always have the choice to switch over, so it will always be good.
I tweaked the parser a bit, didn't have time to do much else.
-
I might spend some time this weekend and rearrange some of the parsing functions.
-
The only thing that looks ugly at the moment is the DNA parser. Might work on that next.
-
I built the whole thing from the ground up, so the whole way parsing is done wasn't really used in practice till the end, so yeah, it's a little messy. And I don't think the super high level parsing functions are even tested, IIRC.
-
Sweet, I found an Eclipse plugin for C#. That should increase my productivity massively.
-
What does your eclipse plugin do exactly?
-
Allows me to use C# in Eclipse.
Basically, Eclipse is the best Development Environment for Java, and whenever I learn a new language looking for an Eclipse Plugin is top priority.
Still haven't found any for English, Spanish, French or German yet...
-
So Eclipse is an IDE, and your plugin lets you use Eclipse to program C#? Gotcha.
-
Yes, IDE, that's it; I just spent the last half hour trying to remember what the proper word was.
-
I learned C#.
I'm currently making a Travian Bot, that will be completely autonomous.
Also I'm making a Settlers of Catan bots, that will self-improve using genetic algorithms.
I've come a long way since my last post under suggestions. I've been reading a lot about genetic programming.
I will take a look at the new code 3.0 code, if I can...
-
hey, long time no see
There's a wiki page which goes over how to look at the source and set everything up. It's under source code-> C# version.
-
I might be back on the project, if I can scrape up all the information I've misplaced on an extremely cluttered desktop (I use two screens, but sometimes the computer spontaneously decides to move all my stuff from one screen to another, so I categorize in folders. My junk programs folder for obsolete programs has 78 elements )
-
Cool. I use two screens, too. They set me up like that at work, and once I couldn't do without. I moved my computer over to my 1080p $1000 TV and I use it as a second monitor now It's like 38" so it dwarfs my 19" computer monitor You might want to give this (http://www.mediachance.com/free/multimon.htm) a try, I've found it very useful.
Anyway, check out the wiki page for the code, I've moved it and reorganized it since last you saw it.
-
Cool. I use two screens, too. They set me up like that at work, and once I couldn't do without. I moved my computer over to my 1080p $1000 TV and I use it as a second monitor now It's like 38" so it dwarfs my 19" computer monitor You might want to give this (http://www.mediachance.com/free/multimon.htm) a try, I've found it very useful.
All the devs where I work have two and some even three screens; I have always used two, both for home and work. Though my 24” dell wide screen now seems small compared to Numsgil’s 38” TV , but at least it’s a higher res at 1920x1600
-
My screen is oddly shaped, like an A3 piece of paper except a bit narrower and longer.
Anyway, I installed C# development edition, now all I have to get is the subversion program, might use SVN3 (are different programs compatible? I have no idea.)
-
Well as for SVN, I am using http://tortoisesvn.net/ (http://tortoisesvn.net/) 1.53 and that seems to work fine. I don’t really use SVN much, so I have been getting to grips with it myself.
Just create a ‘darwinbots3’ folder then right click on it, select checkout and type/paste in the svn url and click ok.
-
Yes, I heard of TortoiseSVN, seems to be pretty good.
-
TortoiseSVN is pretty standard. I used it for a while, but I liked the GUI for SmartSVN better. You can use anything you want, it shouldn't matter.
-
2. Scripts should be fleshed out. I haven't given this as much thought as the graphs, but basically anything the user can do, given a reason for doing so, the program should be able to do automatically. This includes things like changing physics constants over time or based on population levels, etc.
Ideally, this would become another kind of language that's similar to the DNA language. Complex enough to perform some really amazing simulations.
Cool, I had the same idea but I was going to wait for DB3 to suggest it, because it is kinda a lot of work.
We can also add "LFO" based on cycles. Check out how FLStudio uses LFO.
1. I want somebody to start working on some sweet ass graphs. It doesn't sound exciting, but I think some cool graphs would totally kick the program up a notch, and it'd be a good, relatively safe way for someone to get their feet wet, so to speak.
For graphs I'd like the user to be able to set the x and y axis from a list of things. So you can do mutations per DNA length. Total mutations per cycle, etc. Mutations per bot nrg, etc.
I'd like the user to be able to export data in a form that can be read into and manipulated by Excel.
I'd like the user to be able to toggle between bar graphs, line graphs, point plots, and any other form you can think of.
I'd like the user to be able to perform regression analysis on the data inside DB. Create best fit curves/lines/parabolas/what have you. Also any other statistics observations anyone can think of. Perhaps mean and variance/standard deviation analysis.
I want these graphs to look superb. Excel quality. The current ones look ameteur.
I want these graphs to be scalable. So you don't have to wait 1000 cycles to see any lines being drawn in your graph at all.
I want these to be the smoothest, most user friendly aspect of the program. I want people to marvel at our superb graphs.
1.) This ended up as a dead end suggestion only based on the premise of: "Do we really need it?"
-
We can also add "LFO" based on cycles. Check out how FLStudio uses LFO.
What is a "LFO"? I haven't ever use FLStudio and I'm too lazy to dig through it to find out.
I'm going to guess "Low Frequency Operation", eg: performed every few hundred cycles.
1.) This ended up as a dead end suggestion only based on the premise of: "Do we really need it?"
Eh? I still plan on working on graphs. I'm going to be able to leverage the graphics system I'm working on right now to get it working right. Instead of drawing bots, you just draw graph lines instead. You can use the same camera system to zoom in and move around.
Still have to figure out how to collect the information of course. There's lots of naive ways, but depending on the frequency and whether it should always be collecting data whether the graphs are up or not, and how many cycles it should save, it gets pretty bulky.
-
What is a "LFO"? I haven't ever use FLStudio and I'm too lazy to dig through it to find out.
I'm going to guess "Low Frequency Operation", eg: performed every few hundred cycles.
Pretty close actually, LFO = Low Frequency Oscillator. They are originally from synthesizers, now they basically are a way to cyclically modulate something else. Often they have the shape of sine/sawtooth/square wave.
-
i know python but not much about VB (print statements are about all i know :P )
-
For graphs I'd like the user to be able to set the x and y axis from a list of things. So you can do mutations per DNA length. Total mutations per cycle, etc. Mutations per bot nrg, etc.
Ideally, this would become another kind of language that's similar to the DNA language. Complex enough to perform some really amazing simulations.
Implemented. Users now can create user defined graphs.
I'd like the user to be able to export data in a form that can be read into and manipulated by Excel.
Implemented, Users now can extract graph data, should be readable by excel.
I'd like the user to be able to toggle between bar graphs, line graphs, point plots, and any other form you can think of.
Should be easy enough to do when graph data is inserted into excel. (sorry, you will need to insert in 1000 data point intervals :/)
I'd like the user to be able to perform regression analysis on the data inside DB. Create best fit curves/lines/parabolas/what have you. Also any other statistics observations anyone can think of. Perhaps mean and variance/standard deviation analysis.
Sounds a little over my head, but should be possible when data is recombined in excel.
I want these graphs to look superb. Excel quality. The current ones look ameteur.
New component called "graph join" lets you recombine saved graph data as an image with any sweet formatting you like.
I want these graphs to be scalable. So you don't have to wait 1000 cycles to see any lines being drawn in your graph at all.
Ahm... not implemented, sorry.
I want these to be the smoothest, most user friendly aspect of the program. I want people to marvel at our superb graphs.
Somewhat implemented ?!
-
Woot I learnt C++ (I'm only a beginner though)