At work we are using very extensive modelling techniques to try to model the world we are trying to measure. We have so far been very successful in achieving this. Lately, a new project will add a very large amout of parameters to the model and I have really started to question if this model will really be possible to maintain. The problem with models is that they are only valid for a number of set conditions. Once a condition is not set, we don't really know exactly how to use the model or if the values produced by the model can be used in this "out of condition" situation.
I have come to realize that ANN or Artificial Neural Networks might be another way of trying to avoid the complexity of modelling the very complex world and instead concentrate on trying to measure, for each input into the system, how good or bad the result was. If this is done continously, we will very soon have a good knowledge of what consititutes good or bad behaviour. The good thing with this is that the system might also be able to learn to achieve better in situations where the traditional "model" would be out of condition, i.e. certain conditions are outside the bounds specified by the model itself. This is usually refered to by the term Artificial Intelligence in where the system seemlessly seems to be able to adapt to changing conditions. It will not be able to deduce new information from old knowledge but the adaption part is still a very good step forward.
The tricky step in using ANNs is to code the reward function properly. This function needs to learn the ANN what is good and what is bad and usually at levels inbetween the good and bad. In our situation I belive that it is easier to determine the good and bad compared to trying to find a model properly models the world. However, I see one critical aspect of using ANNs. If the reward function does not work properly the system will learn the wrong things. This is of course a very bad thing since the effect of that will be long lasting. Much like if we humans learn to perform a thing the worng way it is very difficult to re-learn.
ANNs are a very interesting concept for replacing complex models with a completely different approach. Unfortualtelly it seams that this is not yet generally accepted by software engineers. ANNs appears yet mostly be University products rather than products delivered from component vendors and such.