Recent Posts

Pages: [1] 2 3 ... 10
1
Darwinbots3 / Re: Bot testbed
« Last post by Numsgil on Today at 05:29:36 PM »
Looks good but I think shadowgod still has you beat :)

If you can figure out under which circumstances it bugs out that would be good.  It's possible it's a bug in the program that I should fix.
2
Suggestions / Re: GPGPU acceleration?
« Last post by Numsgil on Today at 05:16:27 PM »
Executing the DNA isn't really well suited for GPUs, unfortunately, since each bot has to run its own DNA on its own data.  Getting the physics to execute on GPUs is possible in principle but rarely done in practice.  Probably only shots are really suited for GPU calculations, but we just don't have enough shots in a typical sim to outweigh the upfront CPU cost of transferring things to/from the GPU.
3
Suggestions / GPGPU acceleration?
« Last post by Billy on Today at 10:04:56 AM »
I know it's pain to get working, but a simulation with many bots seems like an ideal problem for opencl or similar. One job for each bot, and perhaps even grouping similar bots into warps for SIMD execution on Nvidia chips. You wouldn't necessarily have to move much data between main memory and GPU memory if you don't need to observe the simulation in real time.

I've only dabbled with GPU programming though (circle detection in images), so maybe it's not as well suited as it seems. I am aware that it would take a lot of effort to port all of the DB simulation code to opencl, what with the physics, DNA interpretation, reproduction mutation... Maybe I'll try making something similar from scratch over the summer, specifically geared towards GPGPU execution.
4
Darwinbots3 / Re: Bot testbed
« Last post by Billy on Today at 09:44:36 AM »
Nice work, Nums! Took you long enough :P

Here's a quick 'swimmer' I threw together:

Code: [Select]
const myage 360
{ *myage 1 add myage store } call
//{ 0 myage store } call
*numspindles { dup *numspindles 2 div sub abs     *myage *numspindles 2 div mod sub abs 30 mul 100 swap sub 1000 add   swap store } loop

Sometimes it bugs out and you have to uncomment the line and recomment it to make it work.
5
I suspect PHP.
Though, I'm just too out of touch with web programming and haven't ever properly done PHP. You'd have to check really.

If we get a proper web programmer down here, it'd be nice to have an internet page where we can see what's happening on an internet sim.
6
Darwinbots Program Source Code / Re: Use http get and set requests instead of ftp
« Last post by Numsgil on April 22, 2017, 06:06:10 AM »
Yes, I think it's a reasonable approach and yes, it was one of the plans for a while.  It needs server side support, either PHP or python or whatever, and I'm not really a web programmer so I didn't know how to do that.
 There's also security concerns and I'm not enough of a web programmer or linux guy to know what is or isn't a good idea here.  I'd want to jail the custom server side code as much as possible so it can't break things and can't be used as an entry point to attack the server.
7
Darwinbots Program Source Code / Use http get and set requests instead of ftp
« Last post by Botsareus on April 19, 2017, 11:32:19 PM »
Hey Numsgil I was thinking (well actually I got the idea from a guy I hang out with at school)

Can we replace the ftp with simple http get and set requests? That way we can really streamline everything and make it scale.

Problem is, do not how a clue how to write the server side portion of it. I may be able to hack the client side into vb6 though.

Also, wasn't this exactly what Shasta was working on?
8
Darwinbots3 / Re: Bot testbed
« Last post by spike43884 on April 13, 2017, 04:45:09 AM »
Where'd 9600 come from?
Anyway, 9000 seems a pretty nice value.

Okay, I might just go with 9000, even though I think 9600 is better in a lot of ways, since 9000 is both a round number and evenly divided by 360, which should make math easier for humans.

In terms of where they come from: the prime factors help to determine how many different ways you can divide up the full circle evenly.  3, 4, and 6 are important, since triangles, squares, and hexagons form a full tesselation of the plane, and are the only regular shapes to do so, so you need some multiple of 12 at least (the lowest common multiple of 3, 4, and 6).

If you ever wondered why there's 360 degrees in a circle, it's because it's the closest round number to 365 in base 60 (which was the base the Sumerians used thousands of years ago).  Their number system was base 60 because it makes math easy: 60 divides cleanly in to all sorts of different divisors.  For Darwinbots, we have a similar requirement.  The more ways there are to divide the circle in to even parts, the more different symmetries are possible, or at least easy.  The prime factors show you the raw ingredients to combine to divide the circle up.

2 is an important prime factor, because splitting things in to halves, or quarters, or sixteenths, etc. are very natural ways to break things apart, and can easily mimic the way cells in biology cleave in half during reproduction.  3 is important, but multiple copies of 3 aren't so much: being able to split things in to thirds and being able to represent 30, 45, and 60 degrees is important, but being able to represent 40 degrees or divide things in to 9ths isn't very important.

Sunweaver is sort of built to be base 10, to make math easy for humans, so 5 is an important factor in so far as 10 is.

But 7 isn't an important factor.  It would let you split circles in to 7ths, but there probably isn't much call for that.    As the prime factors get larger, they become less useful.  About the only use 101 would be for is if the bot had 101 segments.  Otherwise there's not much call for splitting a circle evenly in to 101 pieces.

So generally speaking finding a good number is balancing the needs for 2, 3, and 5 as prime factors, taking up as much of the [0,9999] range as possible, and making it easy for humans to do the math.

I knew about prime factors, I just meant the number 9600 as an option in and of itself. It didn't divide cleanly at all into 360 so even as an option for better primes seemed a bit unusual.

I suspect actually having 7 could be a useful prime. Less useful then 2, 3 and 5, however there's still a reasonable chance a bot could have 7 segments, 11 and 13 and 17 being reasonably useful as it's not unimaginable for a bot to have that many segments, and in the case of multi-bots. As you get larger primes less numbers use them, however these are just the first few primes so will crop up regularly.
9
Darwinbots3 / Re: Bot testbed
« Last post by Numsgil on April 12, 2017, 08:03:16 AM »
Where'd 9600 come from?
Anyway, 9000 seems a pretty nice value.

Okay, I might just go with 9000, even though I think 9600 is better in a lot of ways, since 9000 is both a round number and evenly divided by 360, which should make math easier for humans.

In terms of where they come from: the prime factors help to determine how many different ways you can divide up the full circle evenly.  3, 4, and 6 are important, since triangles, squares, and hexagons form a full tesselation of the plane, and are the only regular shapes to do so, so you need some multiple of 12 at least (the lowest common multiple of 3, 4, and 6).

If you ever wondered why there's 360 degrees in a circle, it's because it's the closest round number to 365 in base 60 (which was the base the Sumerians used thousands of years ago).  Their number system was base 60 because it makes math easy: 60 divides cleanly in to all sorts of different divisors.  For Darwinbots, we have a similar requirement.  The more ways there are to divide the circle in to even parts, the more different symmetries are possible, or at least easy.  The prime factors show you the raw ingredients to combine to divide the circle up.

2 is an important prime factor, because splitting things in to halves, or quarters, or sixteenths, etc. are very natural ways to break things apart, and can easily mimic the way cells in biology cleave in half during reproduction.  3 is important, but multiple copies of 3 aren't so much: being able to split things in to thirds and being able to represent 30, 45, and 60 degrees is important, but being able to represent 40 degrees or divide things in to 9ths isn't very important.

Sunweaver is sort of built to be base 10, to make math easy for humans, so 5 is an important factor in so far as 10 is.

But 7 isn't an important factor.  It would let you split circles in to 7ths, but there probably isn't much call for that.    As the prime factors get larger, they become less useful.  About the only use 101 would be for is if the bot had 101 segments.  Otherwise there's not much call for splitting a circle evenly in to 101 pieces.

So generally speaking finding a good number is balancing the needs for 2, 3, and 5 as prime factors, taking up as much of the [0,9999] range as possible, and making it easy for humans to do the math.
10
Darwinbots3 / Re: Bot testbed
« Last post by spike43884 on April 11, 2017, 08:53:22 AM »
How about one full circle = 9000 units.  That's 360 degrees * 25, which gives prime factors of 2^3, 3^2, 5^3.  And it's relatively easy to remember.  By comparison, 9720 gives prime factors of 2^3, 3^5, 5.

Another option is 8640, which is 360 * 24, which has prime factors 2^6, 3^3, 5.  Not as easy to remember as 9000, but lets you split the full circle in to 64 equal slices instead of just 8, at the cost of not being able to slice things in to as many 5ths.

Yet another option is 9600.  That's not a multiple of 360 degrees, but it does have a lot of nice dividers.  Its prime factors are 2^7, 3, 5^2.

Where'd 9600 come from?
Anyway, 9000 seems a pretty nice value.

If you want to get close to 9999 then the following options:
9360 is 360*26 giving 2^4,3^2, 5 and 13.
9720 as you mentioned is 360*27 giving 2^3, 3^5 and 5 however is a bit of a weirder one for remembering.
9900 is 55*180 giving 2^2,3^2, 5^2 and 11. (quite a nice pattern of squares there...)
9990 is 111*90 giving 2, 3^3 , 5 and 37.

I don't think there is really many other sensible alternatives as multiples of 45,90,180 or 360
Pages: [1] 2 3 ... 10