• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Miscellanous / Other] Evolving Artificial Neural Networks

Status
Not open for further replies.
Level 10
Joined
Feb 22, 2008
Messages
619
Hello everyone. Today I'd like to discuss a difficult project I worked on for a couple of months.

Some material related to the subject:
Wikipedia's general page about the artificial neural network
Feedforward neural network, the simplest kind
Other types of artificial neural networks
Artificial evolution (evolutionary algorithms)
I was inspired by some evolution simulator videos and a little game called NERO.
NERO is a kind of strategy game where you evolve your units to complete certain tasks in a sandbox with the tools they give you, like walls, automated turrets, etc. You can selectively breed your army into laser-barraging wall of death, a team of closely knit maze navigators, a group of dodge ball players or even a kind of super-organism with all of the units working as one whole.

My goal is to create something similar, using the World or Galaxy Editor for its great multiplayer access. (Check out those last two links)
I checked pretty thoroughly for some kind of neural network created in a Blizzard editor, but couldn't find one. Yay!
I've already created most of the senses and the network itself, and most of the framework for evolution, but there are many ways to do what I've done (as you may have seen with the Wikipedia page).

I haven't attached the map yet because I'd love an outside perspective and some input on the links I've provided. I'd be happy to share my work and ideas (incomplete as they are) as a contrast in this thread.

Just to be clear, I'm not looking for a specific kind of neural network, other than that the networks should represent individuals in the simulation. I prefer to use natural selection as opposed to a fitness function for general free evolution. The networks and evolution aspects are part of a larger whole, similar to how NERO has separate gametypes and maps for your evolved networks to interact in, but with more depth and deliberation.
Thank you for your time, I look forward to reading your creative insight.
 
Last edited:
The problem with neural networks is that you need an absurdly high amount of input data to "teach" the network properly.
This is usually no problem in science or IT, as they have either large databases of test data to feed or a huge userbase to generate data (google reverse image search uses neural networks). A Starcraft map, on the other hand...?

I mean; go ahead and do it; coding a neural network can be fun, but be aware that it probably won't generate anything usable in practice.
 
Level 10
Joined
Feb 22, 2008
Messages
619
The problem with neural networks is that you need an absurdly high amount of input data to "teach" the network properly.
This is usually no problem in science or IT, as they have either large databases of test data to feed or a huge userbase to generate data (google reverse image search uses neural networks). A Starcraft map, on the other hand...?

I mean; go ahead and do it; coding a neural network can be fun, but be aware that it probably won't generate anything usable in practice.
Yes, training neural networks can be difficult. That's why I prefer the magic of evolution!
I don't need to have any clue what's going through the minds of the individuals in my simulation, natural selection will decide for me.
The evolution simulator video link is especially good at demonstrating this. As long as the framework is able to mutate in response to its environment, it should be complex enough.

Of course, the amount of input data would still be relatively high for a single unit.
First, I worked on its sight, it should be able to make out other units, their team colour, dead units, vegetation, or emptiness. This is arguably the most useful and complex sense for a unit to have.
Sound is used to communicate, using several calls. This way they won't have to communicate like bees via movement.
Internal senses are the simplest, but one of the most necessary. The unit should be able to tell how much health it has, if it should eat, etc

While I'd be interested to see any suggestions for new senses, I'm also very interested in any way that we can create these senses in the editor. The sight was the largest portion of the project that I finished, but I would be surprised if there weren't a better way to do it.
But what I'm really interested in is the framework behind the whole thing. For example, I decided to go with a specific type of variable for my networks, but it may not be the most efficient one.
Because I'm planning on rewriting all or most of it, I'd hate to leave that unchecked.
 
Status
Not open for further replies.
Top