Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - trimalchio

Pages: [1]
1
Bugs and fixes / 2.44.1 Delete Button
« on: March 09, 2009, 12:48:05 PM »
Workaround:
Before deleting last species in list, rename it to something like "a" or "0"

I've been ignoring the bugs, but I'll try the older version now.

Perhaps I could just peek at the code and fix some stuff. Visual basic doesn't sound hard. This isn't my computer, so I can't install Visual C#, but it already has VB 6.0. Hmmm... might as well peek.

2
Darwinbots3 / Anyone out there?
« on: February 17, 2009, 11:07:12 AM »
Quote
I think you're underestimating the prey. I'd bet at the end you'd have predators and prey with similar motors. Instead, you might want to consider a fast twitch vs. marathon type motor. Like a cheetah motor would give great bursts of speed but consume crazy amounts of energy to do it. A marathon motor is capable of almost continous motion cheaply, but isn't capable of great bursts of speed. And you could have a gradient between the two types. That more closely models the way actual animals work.

That may or may not also address the size issues between an elephant and a mouse. An elephant is so huge that it needs a more marathon type motor compared to the mouse. But elephants are also capable of some pretty impressive bursts in speed, well above and beyond how fast a mouse can go...

That's very close to what I was saying: the marathon motors are expensive at birth, so they would be smaller. The twitch ones are cheap at birth, but expensive to run, so they could be bigger. The bigger ones would go faster, no matter which type.

Also, I was thinking of each bot having a distinct body shape with different line segments as functional parts. The neural network does sound too ambitious, so I suppose I'll drop that for now. I do think my way would theoretically work well. Without the network, the parts thing wouldn't work either, and you would end up with what you seem to have now. I'll try to get DB3 working if I can. I'll think about some other ways to improve stuff.

See my nice paragraphs?

I think the (cost at birth)/(cost for use) relationship would work well, and would be a model for metabolism to build on. The plants could have an expensive shell at birth, costing energy for .repro, or a cheap shell that would lose more energy when they were attacked.

The mutations also need to be able to change numeric constants by little bits, such as changing (8 .shoot store) to (10 .shoot store). Changing (8 .shoot store) to (469 .shoot store) is not helpful or realistic. Changing (8 .shoot store) to (8 .mrepro store) is also bad.

3
Darwinbots3 / Anyone out there?
« on: February 16, 2009, 10:00:16 PM »
I was sort of depressed when I made my first paragraph-less mushy post, but I've decided that starting my own project is a poor decision. I could help with DB3, as long as you aren't serious about the 3D thing. That seems to be what mostly put me off. It would make every other part of the program many times harder, but I suppose you've thought about this more than me already. Anyway, I've looked at your ideas so far, and I'll just ramble and hope some ideas emerge:

Similar to certain compression algorithms, each bot would have a "library" or "table" of body parts, such as an eyespot or motor. It would be defined by a polygon, perhaps with enforced symmetry, with each segment referencing a part in the library. Mutations would jitter the points defining the segments, and the length of the segment would determine how powerful that part is. Larger eyes would see farther. Larger motors would push harder. The library would also define an efficiency for the part, which would be some sort of ratio between the cost for each part at reproduction and the cost to use it. A motor on the back of a small prey bot would be inexpensive at birth but expensive to use, since it wouldn't be used much except to run from a predator. A predator bot would have an expensive motor at birth but cheap to use, since it would move around chasing so often. Other parts would work similarly. Part 0 would be the standard skin, which could have toughness, color, friction, bounce, or whatever. A high enough friction could become a sticker for parasite gnat bots. Color might be visible to advanced eyes, or perhaps each eye would be sensitive to certain color ranges. An eye might only return a positive number if it sees green, for plants. This brings me to the hardest part of the whole thing, which seems to be necessary to make truly interesting evolution bots: a neural network. They are very complicated, but I think I have a simple way to make them work using matrix multiplication. The size of the table would be proportional to the square of the number of line segments on the bot, plus some. I'll explain later. It might not work. I haven't had any way to test it yet, but it seems robust and computationally efficient. Each part would get its own "neuron" which would serve as input/output/both for the part. The eye neuron would respond to the eye seeing its favorite color. The motor neuron wouldn't really serve as an input, but move when the other neurons influenced it. Perhaps the motor neuron may respond when the bot smacks into a wall. The skin would respond to touch. A chameleon bot might be able to change color. If an eye is attacked, the neuron would max out with pain. A poison spot might release poison when its neuron is excited, respond to touch, and therefore release poison when anything touches it. A plant might have photosynthesis spots for skin. A part could be a mouth, which could pull other bots when its neuron is activated and respond to taste, or negatively to poison. That way it would automatically "swallow" if it tastes food or spit out poison. The sticker could simply respond when it sticks to something. The sticker would be very helpful for any multibots, being able to make a circle easily, since other shapes would be impossible if the stickers were placed correctly. Blobs would be even easier. Mutation would be simple and robust, change the library value of a segment here, split a segment in two there, switch two library parts, delete a part, jitter segment points, shuffle this, randomize that, whatever. Sexrepro would work pretty well, too. If a part referenced a library position that didn't exist or was out of range, it could be expressed as part 0, or perhaps modded around. This would even allow for recessive genes and more interesting hybrids. Hybrids from completely different species wouldn't work almost every time, which is good. They would die a mutanty death. Bots could also have specialized repro spots, which wouldn't copy all the genes. Perhaps a bot might want to reproduce a small, sterile, simple, cheap, suicide/search minibot. It could perhaps copy the mouth and motor only. This would greatly encourage multibot specialization, with starting "stem cells" that systematically produce simpler bots around it with partial DNA. I need to wrap this up, this is one of the longest forum posts ever. I think that's about all. Fluid dynamics is too hard, and would go with the env grid. There must be a better way, so I'll think about it. Oh, I almost forgot: the neural network is able to learn and adapt faster and smarter than mutation. I think this about covers it. The relationship between mutation and learning is very important. If you've gotten this far, I congratulate you. I'll see what I can do with what you've got so far if I happen to find a few hours of free time lying around. Could I borrow some paragraphs from someone so my posts aren't all in one blob? If you have any questions, read it again. Maybe even three or four times. Five couldn't hurt. I haven't said anything useful for a while now, so I'll push the Add reply button now.

4
Darwinbots3 / Anyone out there?
« on: February 12, 2009, 01:53:48 PM »
I'm still not sure what's going on with this community here, but this program is very interesting. If you're making Darwinbots 3, that's fine, but it doesn't seem to be moving very fast. I have many ideas about a similar evo/sim but it goes in a very different direction than what you seem to be visualizing. In fact, what I have in mind would be very different from what Darwinbots is or will be. I should probably look harder to see if anyone else is doing what I'm thinking, but it doesn't seem to be out there. Anyway, I have experience in C++/Java, I could learn C#, I'd rather not learn VB, and I am interested in making my own program, probably in Java for various reasons. I've never worked on a team programming project before, and I'll probably lose interest in a week or two. If there is actually anyone here, I would appreciate talking about whether I would help this project or do my own thing. I think that my ideas are strong and practical, and could eventually become a useful program. Anyway, I'd just like to know if there's actually anyone here, since there seem to be about six posts in the last month. I suppose I should get started. I could explain what I'm thinking if anyone is interested.

5
Untagged bots / Diversa reflexum (F3)(Trimalchio)-11.02.09
« on: February 11, 2009, 01:22:26 PM »
Code: [Select]
'DIVERSA REFLEXUM
'Made by Trimalchio
'for F3 League


'====Sync====
cond
start
  9 .timer store
  .delgene inc
stop


'====Birth====
cond
  *.numties 0 >
start
  9999 rnd .out4 store
  .in4 .memloc store
  *.timer .out3 store
  .deltie inc
  300 .eye5width store
stop


'====Repro====
cond
  *.nrg 2000 >
  *.eye5 0 =
  *.out1 0 =
  *.robage 0 >
start
  25 .repro store
stop


'====Combat====
cond
  *.eye5 0 >
  *.refage 0 >
start

'----Friend----
  *.in3 *.timer =
    *.in1 *.out1 store
    *.in2 *.out2 store
    *.refveldx sgn 30 mult .dx store
    .dx inc

'----Enemy----
  not
    *.refxpos .out1 store
    *.refypos .out2 store
    300 .eye5width store

'----Tactics----
    2425 *.refveldx dup mult sub sqr dup
    *.refveldn add 10 mult *.out1 *.out2 dist > and
      *.xpos add *.ypos *.refveldx sub angle .aimshoot store
      *.body *.refbody sub 50 div .up store
      25 .shootval store
      .shoot dec
      *.refnrg 700 > and
        -6 .shoot store
        *.velsx 2 div .dx store
        *.veldn .up store

'----Retreat----
  *.memval *.out4 =
    -100 .up store
stop


'====Search====
cond
start
  .out3 inc

'----Spin and search----
  *.out1 0 =
    490 .aimdx store
    *.eye5width 50 add 2 div .eye5width store

'----Follow target----
  not
    *.out1 *.out2 angle .setaim store
    *.up 30 add .up store
    *.eye5 0 = *.in3 *.timer = or and
      0 .out1 store
stop


'====Body====

'----Grow----
cond
  *.nrg *.body 200 add >
start
  100 .strbody store
stop

'----Shrink----
cond
  *.nrg *.body <
start
  100 .fdbody store
stop
end

Is this site normally this slow or is it because of all the broken forum links everywhere?

I've used only original code, no copying from other bots. While it still has room for evolution, it currently seems to be very, very strong. It has perfect aiming, a very good search pattern, clever tactics, infallible conspecs, and everything else I could put in. Again, it is completely original. Can you beat it? I may make other versions for other leagues if I feel like it. Tell me what you think.

Edit: I may have set the maxvel a little low during testing. I'm pretty sure that most of the links to the forum scattered throughout the wiki are broken, or were a couple days ago. I probably should reply, not edit. Too late.

[attachment=1169:Diversa_reflexum.txt]

Pages: [1]