Author Topic: Ambitious MB project  (Read 8099 times)

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7722
    • View Profile
Ambitious MB project
« Reply #45 on: February 23, 2010, 09:16:03 PM »
Quote from: Ta-183
If anyone would care to try, it would be nice to see a proof-of-concept bot that would create and maintain "dead-weight" memory cells that it ties to and stores and retrieves data, such as veggie positions and densities over time, its health over time, what enemies it sees, how easy/hard they are to kill, ect.

It would be extra cool if you used veggies for this.  Mark certain veggies as "seeds", and never eat them (mark certain memory locations probably.  Maybe some of the outs).  These "seed" veggies would act as seeds for local veggy colonies as well as signposts that bots could use to post locations for other "seeds" that presumably would have veggies starting to grow.

Sort of like posting maps to other oases in each oasis.

Not sure how efficient a strategy it would be, but it would be pretty cool.  Especially if you set it up on a huge world, so the veggies are really far apart.  And you had roving bands of animals that travel from seed to seed, feed on all veggies but the seed, and then travel on to the next seed.  The animals could efficiently aim themselves at the nearest seed and then go completely dormant for however long it takes to get their (hundreds of cycles probably).
« Last Edit: February 23, 2010, 09:17:04 PM by Numsgil »

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
Ambitious MB project
« Reply #46 on: February 24, 2010, 05:39:39 PM »
On the subject of file formats.

A 'file format', used in the context of bot based data storage, is the term that I would use to describe a system of creating different types of memories (files) and determining the beginning and end of a file, a date/time format, and how the data is stored. For example, all files have headers. Raw text files (.txt) have nearly no header, save for the beginning of the file. In a memory, a memory file would require a 'header'. A 'beginning of file' marker, a filetype marker, a date marker (or order of creation marker), and any other identifying details that it would require. Thinking about it a bit more, a bot would also have to make use of a file directory system to cut down on processor time and code required to locate files. Accessing things such as lists of 'seed' locations (to borrow your example of a potential application of such a system) will be difficult without loops, but I think it shouldn't be too terribly difficult to come up with something.

Also, tentacle cells. I don't think using them for memory is a great idea. Tentacle cells are often right out in the thick of it, exposed to attack and wayward virus/venom shots. Besides, the ties used to create the tentacle would be better used to transfer data between itself and its hub cell. Not to mention that the operation of a tentacle is already a data intensive operation.

Offline Houshalter

  • Bot Destroyer
  • ***
  • Posts: 312
    • View Profile
Ambitious MB project
« Reply #47 on: February 24, 2010, 07:18:22 PM »
I think the cells toward the center of the bot should be for long term storage and long term decision making (eg, what do i do with my life?), as well as transferring information between the other body parts. For example, if a swarm of veggies is detected moving north, then it should send info about it to the tentacles in the front asap to curl around and catch as many of them as possible. The cells on the outside like the tentacles are the ones that ultimately collect information about and manipulate the enviroment. These cells should store the "need to know now" information and distribute anything important back to the inside cells for long term storage. They have to have some kind of system for recieving/spreading instructions from the brain.

Once you have an "operating system" for the bots then you might be able to make some kind of higher level interpretor to program for it, kind of like you do for db code now. What kind of file types would there be for this "operating system". For one you have information about the enviroment, including tons of raw statistics and random facts. Then you might have more "proccessed" data that has averages and some rudimentary patterns in it. Then you might have some of the highly proccessed data which is just like the proccessed data but its done better with more patterns and stats. You also have to have instruction files for different bots which would carry instructions. These would somehow be created from the statistics files and distributed throughout the bot or at least to the cells that needed it. Any other ideas?

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
Ambitious MB project
« Reply #48 on: February 25, 2010, 12:00:22 AM »
A lot of that requires extra memory. When you get down to it, you have to remember that each bot is restricted to less than 1000 spaces for individual pieces of data. Not to mention that you have to become much more specific if anything is to happen. I shall demonstrate;

A bot is developed with these traits, focusing on a central nervous system consisting of a brain with specialized thinking cells and many memory cells. For this example, we shall assume this organism is in its young/infantile stage, and has one processing cell and four memory cells, plus the three data bus cells required due to the three tie limit. The primary brain cell (henceforth referred to as the brain itself) is connected to the memory cells by the bus cells. It is connected by a single tie to the first data bus, which ties to the other two data buses. They tie to the remainder of the memory cells. The primary job of the data bus is to manage the cells connected to it and allocate data received, such as coordinates, info about a species encountered, etc. The bus cells themselves can allocate some memory to themselves, as well. Lets say the organism detects another bot (the method of how it accomplishes this can be ignored in this demonstration) and decides to store information about it. Gene length, body and energy levels, shell/poison/venom/slime levels, indications of other capabilities such as viruses, etc. It reads the data through its eyes or whatever it uses, and then sends the individual numbers to the data bus, along with the indication that this is a new data entry about a new species. The data bus then decides which cell is currently the least full (or alternatively it could allocate memory sequentially, filling one after another. In this manner, a full simulation of a computer could result, using a series of opcodes and reading programs from memory to form a ridiculously primitive and slow, though nonetheless incredible, CPU) and allocates the data to it. It saves the location and ID of this entry in its own directory. It may be a good idea for a bus to have its own storage for storing directory entries, at least for the first bus. But this would be better servd if it is possible to send data through multiple ties (more than three) reliably.

For example, if you were to use a safety margin of 500 usable memory locations per bot, and store data in integer form between 0-255, you are looking at two bots per kilobyte of data. This becomes very claustrophobic for a long term data storage system. Efficient management and allocation of information is an absolute necessity.

Offline Houshalter

  • Bot Destroyer
  • ***
  • Posts: 312
    • View Profile
Ambitious MB project
« Reply #49 on: February 25, 2010, 07:02:20 AM »
Bots can have more than 3 ties by the way. Im not sure what the use of a "data bus" would be. Why not just have a group of "brain cells" that would each store memory and do some proccessing each cycle. You might be right about the limited memory but bots don't really need that much memory and if you compress you can get even more. For example, You encounter bots without any slime/poison/shell/venom, etc. Just store a single negative number to mark that all of those were equal to zero.

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
Ambitious MB project
« Reply #50 on: February 25, 2010, 07:00:47 PM »
True. The format still needs to be ironed out, with species entries possibly using only two or three memory locations, with the ID in plain ASCII numerals and data stored as binary, each bit corresponding to a capability, but there would still need to be even more memlocs used to account for saving the values for things like the average energy and body levels. And the purpose of a memory bus would be to, for the most part, take a huge load off of the central brain cells for memory related tasks, such as finding and storing memory entries. Locating a single data entry in a large memory bank if it was all attached at a single point would take hundreds of cycles. And since there are no loops in DB-DNA, it would require the use of sim cycles as the loop used for searching memory and building/searching through lists. In addition, searching through memory requires building lists and arrays to iterate through, and this requires scratchpad memory to be allocated to bus operations, further reducing storage, meaning even more cells must be used. And yeah, it will need TONS of memory space. Once you start adding up all the entries that it will possibly be entering, it starts to get HUGE.

Once you really begin to think about what it will take to get this kind of thing working, it becomes clear that this thing would in no way be a viable evosim or combat organism. Evosim, maybe. But if you include commands and opcodes to be interpreted and executed, mutation goes out the window. But it would be SO freaking worth it. I wouldn't be able to do ANY of the coding required in such a bot, but I can help figure out how to make the thing go. I have a lot of free time to ponder things. This concept has taken up a lot of my thinking time recently.

Offline Houshalter

  • Bot Destroyer
  • ***
  • Posts: 312
    • View Profile
Ambitious MB project
« Reply #51 on: February 25, 2010, 07:38:37 PM »
I want to see it work to. The dna would be huge, yes, but it would be mostly repetitive and structured, so once you figure out how it works you can piece together how it will work. I don't think the memory is the big issue here, its how it needs to use the memory. I think every cell should have an event it stores every cycle. This will include everything of importance that happened that cycle. It will keep several of these past cycles stored up. Every cycle it will make another one and, if theres no more room, probably delete one to. Every cycle it will look for important information thats being broadcasted and broadcast as much important things it knows as it can. This will require some kind of system for coordinating this mess. First you'll need a system for just making sure the bots are as aware of the other bots as possible and know whos reading from their touts and try to predict which bots touts it should be reading from. It can use the tloc/tval (im not sure thats the right sysvar but you get my point) to send a single piece of data to one other bot to, probably one that isn't actively reading from it. This will mostly be used to inform other cells that it has important information it needs to spread and they should read from them on the next cycle. Next you need a system of deciding whats important information and whats not. If a bot encouters a rare event, how important is the info it collected on the cycle before? How important is info collected from other bots on that cycle or previous cycles? This might have some flexibility in that over time bots can learn whats important and whats not, but in they still need some grand system for determining it. You can store the memory in the same manner. You'll need a system for creating "directories" which could be one way of organizing it. Bots would combine similiar pieces of information into a single more broader peice. They might be wrong alot but it would still be cool.  Heres how you can compress a single value to store 5. Just take each value you want, divide them by 5, and put them in binary into a single memory location. Sure, it will be off by 5 because of the stupid rounding, but most important values can be off by much more than 5 before they become usless.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #52 on: February 26, 2010, 05:57:38 PM »
Sounds like a really good idea. If it helps, there's no tie limit...

Sorry I've been out so long. My old computer totally stopped working, and I've got a new mac to replace it. Sadly, I haven't gotten round to figuring out how to run DB yet, and my time will be limited this year anyways - I'm doing a full high school course, as well as several uni papers, and five scholarships (harder than both) on top, so it's pretty much non-stop for me. In addition, I'm trying to make a national sports team, which eats up the rest of my time. Bottom line, I'll check in every now and then, but don't expect many contributions.
 
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan