General > Bot Challenges

Challenge #3: Neural Network

(1/7) > >>

Elite:
I'm going to have another shot at these, but I'm going to do them in a more informal way. There will still be a hall of fame for those authors and their bots that suceed at the challenges. I'm just going to put out a bunch of open challenges out for bot programers to have a go at, and if you manage to program a bot that meets the criteria, post it.

Also, instead of pretty useless challenges like mazerunning and cliff-jumping, I'm going to be setting challenges at the cutting edge of bot programing.

Okay, so ...

CHALLENGE #3

Code a bot that with behaviors that do not come straight from the dna. Specifically, create a bot who's behavior is controled by an artificial neural network. You'll probably need to find out how they work before starting if you don't know already.

Use the following inputs and outputs only:

Input nodes:

*.eye5

*.refeye

Output nodes:

.up (continuous)

.aimdx (continuous)

-1 .shoot store (boolean)

Those are the only sysvars you can use. Don't bother with anything else, reproduction, body management, combat etc. Just the neural network and the above inputs + outputs.

The network must learn by reinforcement learning, using *.pleas averaged over the last 50 cycles as the reinforcement anti-cost. To get the average pleas over 50 cycles, please use this gene:

def avpleas 13

cond
start
*.pleas *.robage 50 mod 991 add store
*991 *992 add *993 add *994 add *995 add *996 add *997 add *998 add *999 add *1000 add *1001 add *1002 add *1003 add *1004 add *1005 add *1006 add *1007 add *1008 add *1009 add *1010 add *1011 add *1012 add *1013 add *1014 add *1015 add *1016 add *1017 add *1018 add *1019 add *1020 add *1021 add *1022 add *1023 add *1024 add *1025 add *1026 add *1027 add *1028 add *1029 add *1030 add *1031 add *1032 add *1033 add *1034 add *1035 add *1036 add *1037 add *1038 add *1039 add *1040 add *1041 add 50 div .avpleas store
stop

(In case you're wondering, no. I didn't do that by hand)

Peter:

--- Quote ---Code a bot that with behaviors that do not come straight from the dna. Specifically, create a bot who's behavior is controled by an artificial neural network. You'll probably need to find out how they work before starting if you don't know already.
--- End quote ---

Behavior that does not come straight from the DNA?  ? Controled by an artificial network, I am beginning to feel stupid, I have a slight idea what a neural network is, but can you give a slight example for what the meanig is, I haven't got a really clue.

To want the bot to learn itself something or something. Look here I can get nrg, and the bot has to learn to come and shoot or so. I think I totally miss the point.

Oh wait I missed this

--- Quote ---Also, instead of pretty useless challenges like mazerunning and cliff-jumping, I'm going to be setting challenges at the cutting edge of bot programing.
--- End quote ---

I don't feel like I am really part of the cutting-edge of bot-programming, but if I understand the idea a little, I just want to see the result when it comes, could be interesting.

Numsgil:
Neural network.

Elite:
That's definitely going to be useful

What I mean by behavior that doesn't come straight from the dna, and by meta-coding, is behavior that isn't genetically deterministically generated by a list of if ... then triggers. Bots that can be affected by their environment, and find their own strategies, rather than reading off a rigid instruction manual.

(Endy has produced some bots which begin along these lines that use evolutionary algorithms made possible by epigenetics. Reproduction values, thresholds and the like are all free-floating and determined by epigenetic inheritance, with slight mutations each time)

An ANN is one such nongenetic approach. The way I think I'm going to start to go about it is to assign each node (~5 invisible nodes, if that?) to a gene, and reserve a bunch of non-sysvar memory locations for weightings (which can be made epigenetic in later functional versions).

Any advice Num?

Numsgil:
I thought about implementing a neural net in DNA before.  However, I don't think you should try to code it straight.  Neural nets need alot of memory for the different weightings and such.  Because the free memory locations are scattered throughout the bot's memory structure, trying to hand code everything would lead to alot of insanity.  Instead, I'd program something in a scripting language and "compile" it to working bot DNA.

Neural nets are one of the few instances where 1000 memory locations is actually restrictive   Also, depending on how you look at it, a bot's gene structure is sort of like a complex neural net with non linear weightings.  Each gene takes some inputs, manipulates them, and produces some outputs.

Once upon a time I was playing with the idea of setting up codules in the new DNA system in a network like a neural net.  Each codule would take its input and feed it to another codule, which would either manipulate it some more or feed it to an output codule.  Each codule could have any DNA it wanted, so it could act as a simple additive weighting or a more complex evaluation.

You could also set up a neural net with several bots.  Have each bot act as a node, with either tieval or in/out (or some combination) as the method of communication.  Have most of the bots be blind ("hidden"), with a few designated as inputs (eyes) and a few as outputs (motion and shots).  You could theoretically have the large neuralbot be robust as to the number and connectivity of its bots, and have the connections be determined by some simple genetic code subject to mutation.

Navigation

[0] Message Index

[#] Next page

Go to full version