In this tutorial, we discussed many practical tips to optimise and improve the obstacle avoidance scheme that was previously designed. Among the most important things, we showed that learning within a real-time environment can be challenging, since the fitness functions cannot always be trusted blindly. Many tips to make the evaluation process more reliable were introduced.
We also optimised our model for avoiding walls, notably by improving the quality of the data passed to the neural network. Performance was increased so much that among about 8 randomly generated individuals, you can expect one of them to have above average capabilities to avoid collision.
We also briefly looked into genetic algorithms, and basic theory to how they work. This was not essentially important to the scheme, as the representation was solid, and little optimisation was really necessary!
Finally we discussed how complex behaviours such as ducking, swimming, straffing and even jumping can be added to the model. This makes the system robust enough to handle any kind of FPS environment.
Now we've dealt with the obstacle avoidance, the next step is to start learning the structure of the level. This is a fairly controversial issue, as many approaches are possible, ranging from convex hulls, to waypoints, to flow volumes and occupancy maps in robotics.
The trick will be to combine our existing work (so that our time was not wasted) with such high-level approaches. I hope you'll join me for the unfolding of this series
Remember you can visit the Message Store to discuss this tutorial. Connect($db); $result = mysql_query("SELECT children FROM threads WHERE id=89",$db) or die( mysql_error() ); $children = mysql_fetch_row($result); if ($children[0]<=1) { ?> Comments are always welcome!. } else { ?> There are already = $children[0]-1 ?> replies in the thread, why not join in? } Disconnect($db); ?>
Footer(); ?>