Poll

league-options

Scap old SB-league.
6 (14.6%)
Invent new SB-league.
4 (9.8%)
Fuse F1 and F2.
3 (7.3%)
Invent efficienty-league.
5 (12.2%)
Veggie-league.
3 (7.3%)
Blind-bots league.
5 (12.2%)
new F3. (if F1 and F2 fuse, F2)
6 (14.6%)
Zerobot-league.
3 (7.3%)
Dog fighting-league.
4 (9.8%)
evo league(later added)
2 (4.9%)
Anyone who comes with a clever idea, click here.
0 (0%)

Total Members Voted: 10

Author Topic: Overall league thoughts  (Read 35655 times)

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Overall league thoughts
« Reply #30 on: October 19, 2008, 08:01:02 AM »
Currently the best bot is Saber... not a MB or anything but definately more compex than fruitflies...
But F1 is just the league with no rules, so ofcourse exploit behavior aplied by small vermin will often shine untill the exploits get fixed.
And complex organisms are rarely the dominant species in nature, some people even theorize that we're actualy nothing more than an advanced container for viruses and bacteria, that we exist only because they exist and thrive within us. At the very least we know that viruses and bacteria that kill the host don't stay around long, but the flue comes around every year a litle different and we actualy have a gland that holds a bacteria wich helps us digest... the large majority of diseases are surpisingly harmless to us considering what they could be doing, because they need us and it would seem that natural selection favors organisms that are less likely to kill their host or change into something that does.

But the efficiently league could promote more interesting behavior... or league with more fluid resistance, making volontary movement slow and expensive forcing the use of ties for movement.
If you can't use venom or mem shots or ties, then attacking from several angles won't be a grat advantage. Usualy the whole point of attacking from different angles is that atleast one of your bots will inject it's venom or use it's other dirty trick to rendering the oponent harmless. But if you can't use dirty tricks all you have is firepower and suddely larger organisms who can share energy and resources can be much stronger. You can transfer shell to the bot who is getting attacked, then transfer any surplus back when the fight is over. And in an environment with very litle food the bots that hamster and breed their food can easily outstarve a simpler species.

My sugestions for the setup would be something like this :
- No agressive use of ties. That means no tieing to enemies or alge, no tie attacks, no tie defences. If you use .sharenrg and such then you need to have a condition that makes sure you're tied to one of your own.
- No memmory shots of any kind.
- No use of venom.
- No viruses.
- No sexrepro. (Although the lack of mem shots should prevent raping anyway)
- Very large field, possibly without toroidal borders and with some shapes in there (Could be cool if we had some coustom maps, maybe with designated spawn points, both for bots and the initial veggies)
- Low veggy cap.
- Medium fluid resistance.
- F1 costs, possibly a litle more expensive, like set a 1.5-2 multiplier or something like that. And maybe cut the code execution costs completely.

I think these setting should encourage more interesting behavior. Especialy the big field with few alge.
Worker antbots can just push the alge if they need to gather them.
And ofcourse a very strong clever simple species can beat and complex species, but a complex species wich is clever and well made should dominate all the simple species I think.

And I think the NN league using mutations will be the easiest one to get going, for the other league we should make a setup showing how to implement BP in DB... I think there might be a clever way of doing it, but it's a litle tricky, so I think most people won't participate in that league unless the realy hardcore part of it can be copy pasted from somewhere.
I may try to set something up... but... not sure when if I do... finaly starting a new job on monday so there's agoing to be less free time for DB.
« Last Edit: October 19, 2008, 08:04:23 AM by Moonfisher »

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Overall league thoughts
« Reply #31 on: October 19, 2008, 10:57:25 AM »
Okay, so maybe an IB league with your rules, and a mut/non-mut NN league. Sounds good!
I'm for it.

P.S I can't make the BackProp code, considering I haven't even been able to learn DBCode yet.
« Last Edit: October 19, 2008, 10:59:58 AM by jknilinux »

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Overall league thoughts
« Reply #32 on: October 19, 2008, 05:55:20 PM »
I think the main issue here will be that the laguage doesn't allow loops... for good reasons...
So either each cyle could be treated as a loop, but then it would just take too long to adjust weights for evey action...
The other option is to copy the code for each loop you need, but this depends on the size of the network...

Generaly it's a pain to manage... I think you can set it up so you just have the exact same code to copy paste, but it's still a bit of a pain to have to do...
I'll try to figure something out when I have some spare time and feel like a chalenge... but not making any promises.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Overall league thoughts
« Reply #33 on: October 19, 2008, 06:29:20 PM »
This is my idea for looping through the weights, got no idea how to handle PB yet, haven't looked at it so far, but hoping I can do something similar...

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']'Example, just on using the weights, no BP yet :
' 3 inputs, 3 hiden neurons, 1 hidden layer, 2 outputs
'Not sure I got it right either, but something like this is what I had in mind to handle loops...
'this would be the core, then people push in the in values and use the out values as they see fit, either directly in a sysvar or as a condition for a gene or whatever.
'And then ofcourse it needs PB
'either way this should make it easyler to loop through all the weights by copy pasting...
'I'll add coments and all that once I figure out how to implement BP and know if it actualy works


def init 110
def h1wit 111
def h1it 112
def outwit 113
def outit 114

def in 120

def h1w 125 '9 first are in weights last 6 (outw) are out weights

def outw 135

def h1 150

def out 160


start
'Input

.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
.init inc
.h1wit inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
.init inc
.h1wit inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
0 .init store
.h1wit inc
.h1it inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
.init inc
.h1wit inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
.init inc
.h1wit inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
0 .init store
.h1wit inc
.h1it inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
.init inc
.h1wit inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store
.init inc
.h1wit inc
.in *.init add * .h1w *.h1wit add * mult .h1 *.h1it * add .h1 *.h1it add store


'Output

0 .h1it store
.h1wit inc
.h1 *.h1it add * .outw *.outwit add * mult .out *.outit * add .out *.outit add store
.h1it inc
.outwit inc
.h1 *.h1it add * .outw *.outwit add * mult .out *.outit * add .out *.outit add store
.h1it inc
.outwit inc
.h1 *.h1it add * .outw *.outwit add * mult .out *.outit * add .out *.outit add store
0 .h1it store
.outwit inc
.outit inc
.h1 *.h1it add * .outw *.outwit add * mult .out *.outit * add .out *.outit add store
.h1it inc
.outwit inc
.h1 *.h1it add * .outw *.outwit add * mult .out *.outit * add .out *.outit add store
.h1it inc
.outwit inc
.h1 *.h1it add * .outw *.outwit add * mult .out *.outit * add .out *.outit add store
stop

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Overall league thoughts
« Reply #34 on: October 20, 2008, 02:28:34 PM »
Thanks Moonfisher!

So, does anyone else besides me, Bacillus, and Moonfisher want a NN/ant/IB league? Because the way were going, even if a MB/IBB does have some advantage, I don't think we'll see an antbot in the top ten for a Looong time.

Anyway, I guess I could be wrong, but I've just never seen an IBB in F1. Maybe someone else has.

EDIT:

I also think even Abyaly would agree that a NNbot would do miserably in F1. So at least maybe a NNbot league?
« Last Edit: October 20, 2008, 03:18:48 PM by jknilinux »

Offline Commander Keen

  • Bot Builder
  • **
  • Posts: 91
    • View Profile
Overall league thoughts
« Reply #35 on: October 20, 2008, 07:54:25 PM »
I like the idea of an antbot/IB league

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Overall league thoughts
« Reply #36 on: October 20, 2008, 08:37:57 PM »
Did I miss something?  What's IB?  Interesting Bot?  What's IBB?

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Overall league thoughts
« Reply #37 on: October 20, 2008, 10:00:58 PM »
Quote from: Numsgil
Did I miss something?  What's IB?  Interesting Bot?  What's IBB?

IB means Interesting Behavior.

IBB means Interesting Behavior Bot.


Sorry for the confusion.  

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Overall league thoughts
« Reply #38 on: October 21, 2008, 12:06:18 AM »
Quote from: jknilinux
Thanks Moonfisher!

So, does anyone else besides me, Bacillus, and Moonfisher want a NN/ant/IB league? Because the way were going, even if a MB/IBB does have some advantage, I don't think we'll see an antbot in the top ten for a Looong time.

Anyway, I guess I could be wrong, but I've just never seen an IBB in F1. Maybe someone else has.

EDIT:

I also think even Abyaly would agree that a NNbot would do miserably in F1. So at least maybe a NNbot league?

Spiral was in F1 for a while when I ran it.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Overall league thoughts
« Reply #39 on: October 21, 2008, 12:25:18 AM »
I like the idea of encouraging more advanced behavior in leagues, but I think that requiring a specific kind of complex behavior for eligibility in the league is not good. Your rejection criteria would have to be specific so that people don't waste time building borderline cases that you later decide don't fit. But once you have this set of rejection criteria, you are also shutting out a lot of possible behaviors that you would not have intended to.

Rather than this artificial complexity requirement, why not just put the league in an environment where these things are actually necessary for survival? Increasing the field size a bit would weed out many of the simplest strategies (eg: dashing forward at max velocity is a very effective food hunting strategy in the smallest field size). Ban any base level functions that lead to trivial strategies. Movement speed could stand to be lowered, as well as bang efficiency. There are many possible things you can do to create a situation where complexity flourishes without saying "only bots that do suchandsuch are eligible".
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Overall league thoughts
« Reply #40 on: October 21, 2008, 12:31:52 AM »
Talking of field size, would the antbot league have a massive field size? And can the queen be a MB? I'm thinking of rewriting my antbot so the workers each pull in a veggie, then assign themselves to that veggie and relay the nrg to the queen when it's low on nrg. This would only work on large maps with enough veggies, however.
 An interesing idea for a bot would be one that forms 'gangs' to combat each other instead of just interspecies competition.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Overall league thoughts
« Reply #41 on: October 21, 2008, 03:33:04 AM »
Maybe some kind of random chapes league. I know Eric had a lot of ideas for different kind of chapes, not all are worked out yet.
But still if at every fight there are different chapes, those bots have to think instead of forwarding in a straight line. That could break a number of bots. See shape, not my specie, kill it. Most of F1 would act a lot weaker already.
Oh my god, who the hell cares.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Overall league thoughts
« Reply #42 on: October 21, 2008, 02:50:37 PM »
Abyaly:

So, you agree with moonfisher?

Quote from: Moonfisher
...
But the efficiently league could promote more interesting behavior... or league with more fluid resistance, making volontary movement slow and expensive forcing the use of ties for movement.
If you can't use venom or mem shots or ties, then attacking from several angles won't be a grat advantage. Usualy the whole point of attacking from different angles is that atleast one of your bots will inject it's venom or use it's other dirty trick to rendering the oponent harmless. But if you can't use dirty tricks all you have is firepower and suddely larger organisms who can share energy and resources can be much stronger. You can transfer shell to the bot who is getting attacked, then transfer any surplus back when the fight is over. And in an environment with very litle food the bots that hamster and breed their food can easily outstarve a simpler species.

My sugestions for the setup would be something like this :
- No agressive use of ties. That means no tieing to enemies or alge, no tie attacks, no tie defences. If you use .sharenrg and such then you need to have a condition that makes sure you're tied to one of your own.
- No memmory shots of any kind.
- No use of venom.
- No viruses.
- No sexrepro. (Although the lack of mem shots should prevent raping anyway)
- Very large field, possibly without toroidal borders and with some shapes in there (Could be cool if we had some coustom maps, maybe with designated spawn points, both for bots and the initial veggies)
- Low veggy cap.
- Medium fluid resistance.
- F1 costs, possibly a litle more expensive, like set a 1.5-2 multiplier or something like that. And maybe cut the code execution costs completely.

I think these setting should encourage more interesting behavior. Especialy the big field with few alge.
Worker antbots can just push the alge if they need to gather them.
And ofcourse a very strong clever simple species can beat and complex species, but a complex species wich is clever and well made should dominate all the simple species I think.

And I think the NN league using mutations will be the easiest one to get going, for the other league we should make a setup showing how to implement BP in DB... I think there might be a clever way of doing it, but it's a litle tricky, so I think most people won't participate in that league unless the realy hardcore part of it can be copy pasted from somewhere.
I may try to set something up... but... not sure when if I do... finaly starting a new job on monday so there's agoing to be less free time for DB.

The thing is, although I agree, I'm not perfectly sure this will lead to complex behavior, instead of some new simple method of "cheating". With a complexity requirement, I know we'll get complex behavior. But then again, if we do get "cheating", where a fruitfly 2.0 can win, then maybe that points to a flaw in our rules/DB that we can fix...

Okay, you guys convinced me. I'm for an IBB league and a NNbot league, so long as we fix DB whenever a fruitfly-like thing wins the IBBL (IBB- league).
However, I still think we should have 2 separate NNBot leagues (one for point mutations changing weights, the other for BP-learning), simply because they're cool, a great starting point for evosims, can actually learn during a bot's lifetime, and will never survive in the IBBL.

One problem- the mutating NNBot league will need point mutations to adjust the weights and Mutation Protection to protect the NN structure. At least Mutation protection is getting closer to being implemented... We just need eric back so we can finally conclude the voting.

In the meantime, we can get the no-mutations-allowed BP-NNBot league started, although it might be hard to code up something like that...


Bacillus-

Either way, if we have a specific antbot league or an IBB league, the field size will be huge and the queen can be a MB.
By the way, do you also think we should lump everything together into an IBB- league?


Peter-

Sorry, could you explain that in more detail? Did you mean "random shapes league"?
« Last Edit: October 21, 2008, 02:59:57 PM by jknilinux »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Overall league thoughts
« Reply #43 on: October 21, 2008, 03:35:43 PM »
Quote from: jknilinux
One problem- the mutating NNBot league will need point mutations to adjust the weights and Mutation Protection to protect the NN structure. At least Mutation protection is getting closer to being implemented... We just need eric back so we can finally conclude the voting.

If you're just interested in mutating the weights you can do that right now.  Turn off mutations, and have the bots randomly modify different weights.  You can either set it up as something that happens when a bot is born, or just set it up to happen randomly every couple of thousand cycles or so.  The hard part would then be transferring the weights to the child.  But you have 10 in/out pairs, so it shouldn't be impossible.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Overall league thoughts
« Reply #44 on: October 21, 2008, 04:53:25 PM »
Quote from: abyaly
I like the idea of encouraging more advanced behavior in leagues, but I think that requiring a specific kind of complex behavior for eligibility in the league is not good. Your rejection criteria would have to be specific so that people don't waste time building borderline cases that you later decide don't fit. But once you have this set of rejection criteria, you are also shutting out a lot of possible behaviors that you would not have intended to.

Rather than this artificial complexity requirement, why not just put the league in an environment where these things are actually necessary for survival? Increasing the field size a bit would weed out many of the simplest strategies (eg: dashing forward at max velocity is a very effective food hunting strategy in the smallest field size). Ban any base level functions that lead to trivial strategies. Movement speed could stand to be lowered, as well as bang efficiency. There are many possible things you can do to create a situation where complexity flourishes without saying "only bots that do suchandsuch are eligible".

I agree... that's why I was sugesting something like this :
- No agressive use of ties. That means no tieing to enemies or alge, no tie attacks, no tie defences. If you use .sharenrg and such then you need to have a condition that makes sure you're tied to one of your own.
- No memmory shots of any kind.
- No use of venom.
- No viruses.
- No sexrepro. (Although the lack of mem shots should prevent raping anyway)
- Very large field, possibly without toroidal borders and with some shapes in there (Could be cool if we had some coustom maps, maybe with designated spawn points, both for bots and the initial veggies)
- Low veggy cap.
- Medium fluid resistance.
- F1 costs, possibly a litle more expensive, like set a 1.5-2 multiplier or something like that. And maybe cut the code execution costs completely.

A lot of those rules and settings help encourage more complex behavior and larger organisms.

Also for the NN league I think the blank network would be the most interesting, but it would also be hard for a lot of people to build them. So maybe it should just be a blank bot league... where your bot isn't allowed to have a behavior when it starts...
But I'm having a hard time working out how the rules for such a league would go, since you could just have a strong bot in one gene with a condition that could easily break and protect everything but that condition... I figure you could limit mutation protection, but that would just make it hard to create interesting networks (On the other hand it may also force the authors to allow more interesting changes in the networks). You could also require that no sysvars that cause an action are allowed to be written into by the "zerobot". This would probably put some more focus on making a bot that evolves well, rather than ways to activate strong genes withing few mutation cycles through complex conditions and such. And I know a NN can evolve to use the network realy well even in the sims I've run with no mutation protection, so if you can protect the structure of your network it should be able to evolve all sorts of interesting behaviors (Only problem is it can take a while).

Also if you wan't to try running NN bots without mutation protection you can either transfer weights manualy or you can just write them in a redundant way.
0 mult
is the same as
20 20 sub 20 add 20 sub 20 add 20 sub '... asf depending on how long you want them.
In this case you also don't need to limit yourself to point mutations... but you may want to cut back on the mutation rate if you're making a realy large network...
I've only tryed running with point mutations but I think all mutations should work with this (Maybe cut the ones that delete stuff).
If you wan't I can post the bot I used for the last NN sim I ran, and the sim if you wan't to see where it got. (Longest sim I've run, because it kept evolving new behaviors, but got a litle tired of it, it reached 2K in population and the sim was just so damn slow. And carnivores never managed to get strong enough to eat other bots and had some code preventing tie formation (Since I find that fungus bots slow down sims a lot) so in the end I was just watching them improve their soccer skills).

Also about the BP thing, when regulating the weights manualy it means they need to be transfered to the offspring... now if the bots don't break the birth ties that would leave a max of 170 weights allowed (Unless you make your own ties and prolonge the birth process, then you have 10 more per cycle)... so for instance you could have 10 inputs, 10 hidden neurons and 7 outputs... (Not sure of BP actualy requires a bias). But if the tie breaks before the 15 cycles are past then the remaining weights won't get transfered.
Well that's one issue... the other issue is that BP if executed swiftly will just punish the bot for doing anything since it costs energy... so I guess it needs to wait a while to see how we're doing, but how long should it wait ? I men sometimes theres no alge around, but the bot may still be doing the right things, so BP would probably have to wait quite a while before knowing if whatever it's doing now is any better than before... I'm also not sure BP will even find the right aproach to survive, it may go in strange directions depending on what the network rewards and punishes (But ofcourse this could be part of the chalenge for the bot author). But there will be some issues figuring out how to avoid punishing bots for reproducing without encouraging a cancerous bot too much. And this brings the last issue... that the fitness function for the BP algorithm may end up becoming too specific, in the end it's just trying to ecourage a behavior that we encourage.
Not saying it's impossible or anything, just saying I'm seing a lot of issues for the NN league using BP...