Is there a type of Neural Network able to do this?

Started by
9 comments, last by Nypyren 18 years, 6 months ago
Hi, I am creating a spaceship game, and I have ships with thrusters strategically placed around the ship to allow strafing, rolling, pitching etc. And I was wondering if it would be possible to use some kind of network where I could input the linearVelocity and angularVelocity vectors into the network, which would be 6 input neurons. and the output the amount of thrust(probably in percentage form, 0.0 to 1.0) for each thruster on the ship. So there would be a output neuron per thruster. And to get the error amount, you get the difference between the 'change in the ship's velocities' and the 'inputted velocities'. eg: veloctiesDifference = shipNewVelocities - shipOldVelocities - inputtedVelocties; So I'm guessing I would just use a feedforward network for this, but does anyone have any ideas on how I would train it? I don't think backpropagation could be used here. Thanks btw I know someone else posted a question like this a while ago, but they didn't end up using an ANN.
Advertisement
Provided you can create a good fitness function (a fn that is able to tell you if one ship is performing better than another) you can use a genetic algorithm to train the ANN. See my website for more detail.

Something like this was already discussed here. Have a peek.
The problem here is that your "error" isn't really an error at all. The error in the backpropagation algorithm is supposed to be the difference between the desired output and the actual output. It is used to determine how to shift the weights to move the output closer to the desired output.

If you don't know what you want your function to output, a nueral network using backpropagation won't be able to figure it out either.
Quote:Original post by johnnyBravo
And I was wondering if it would be possible to use some kind of network where I could input the linearVelocity and angularVelocity vectors into the network, which would be 6 input neurons.


Do you intend to feed the network the curent linearVelocity and angularVelocity, or the desired linearVelocity and angularVelocity? This will make a difference to your network architecture and training scheme.

Timkin
Why bother with the complexity, overhead, training, untweakability, and inefficiency of an ANN? This is well-trodden ground for control systems.
Quote:Original post by Sneftel
Why bother with the complexity, overhead, training, untweakability, and inefficiency of an ANN? This is well-trodden ground for control systems.


I agree absolutely... but the problem around here Sneftel is that people typically pick up a hammer and then start trying to make all their problems look like nails!

Quote:Original post by Timkin
Quote:Original post by Sneftel
Why bother with the complexity, overhead, training, untweakability, and inefficiency of an ANN? This is well-trodden ground for control systems.


I agree absolutely... but the problem around here Sneftel is that people typically pick up a hammer and then start trying to make all their problems look like nails!


hehe, yeah! They do have a habit of doing that.

There is one thing to point out though: If you just want to learn about ANNs then it helps to get some practical experience trying to solve *any* kind of problem; especially if it's fun.
Call me practical, but I think that problem can be solved with a good old math analysis, without the use of any learning at all.
Quote:Original post by Timkin
Quote:Original post by johnnyBravo
And I was wondering if it would be possible to use some kind of network where I could input the linearVelocity and angularVelocity vectors into the network, which would be 6 input neurons.


Do you intend to feed the network the curent linearVelocity and angularVelocity, or the desired linearVelocity and angularVelocity? This will make a difference to your network architecture and training scheme.

Timkin



I think to feed it 'new' velocities, eg roll by 0.2

Quote:Original post by Timkin
Quote:Original post by Sneftel
Why bother with the complexity, overhead, training, untweakability, and inefficiency of an ANN? This is well-trodden ground for control systems.


I agree absolutely... but the problem around here Sneftel is that people typically pick up a hammer and then start trying to make all their problems look like nails!




:)

Quote:
Call me practical, but I think that problem can be solved with a good old math analysis, without the use of any learning at all.

I'm making the program more like a simulation to test my attempts at ai, so its more of a learning experience than making a game.

Quote:Original post by fup
Provided you can create a good fitness function (a fn that is able to tell you if one ship is performing better than another) you can use a genetic algorithm to train the ANN. See my website for more detail.




I'm trying out the genetic algos right now, i think they're looking quite promising.

I read all the tutorials you had there, they were pretty good.


Quote:
Why bother with the complexity, overhead, training, untweakability, and inefficiency of an ANN? This is well-trodden ground for control systems.

I've thought about doing that, like would it be better to have the ai use them instead of me trying to evolve something to do it automatically. And that I could use state-based ai, and hard code all the things like targeting, moving to positions etc, but there are just so many nails....

edit:

actually i've been thinking of using two different ai schemes.
as there are two opposing teams in this app, iv been thinking about having one use state-based ai, and the other a bunch of genetic evolved ann's.

..might be cool if i can get the Anns ones to work.

This topic is closed to new replies.

Advertisement