With those definitions in mind, it is clear that when randomness is introduced into the low-levels (like, at an individual unit level) of a game, it elevates many tactics to the level of strategy. When I refer to strategical moves, I refer to moves that are made in the absence of calculation, and instead guided by heuristics (in particular, experience). In other words, tactics are the little tricks that you can calculate in your head.
When I refer to tactics, I refer to a series of maneuvers designed to accomplish a specific task. Despite their differences however, when used properly they can combine nicely.įirst off, let me begin with some terminology. Strategy games emphasize the role of information in making decisions, while randomness is chaotic, and undermines planning. They stated that a better robot may have been found by evolving the Haikubot against multiple opponents at once.At first, randomness and strategy games would seem like unlikely partners. That is, the GA does not allow for generalization. In the paper, it is stated that when evolving a robot to fight against a single opponent, a winning robot was always found, but that winning robot was easily defeated by other robots. Their method (described in this link: ) uses this fitness function: Fitness = Genetic_Score/(Genetic_Score + Opponent Score).
Due to the small code size, the Haikubot category lends itself to the genetic algorithm. Shichel, Ziserman, and Sipper used a genetic algorithm to create a Haikubot that ranked third out of twenty-seven robots in the International Robocode League. There are Robocode leagues that feature limits on the size of an agent’s code base. The traits that I would desire to have crossed and mutated would be the driving pattern of the robot, the pattern of radar spin, and the shooting strategy of the robot. Devising a convenient representation for crossover and mutation may be difficult. The more it wins or loses by, the farther from zero its fitness value will be. Therefore, at the end of a battle, if the genetic robot wins, its fitness will be positive, and if it loses, the fitness will be negative. I would define the fitness function to be Fitness = Genetic_Robot_Health – Opponent_Robot_Health. First, note that Robocode’s health system lends itself to a useful fitness function. The author of the video does not explain how the genetic algorithm was set up, so I will describe how I would set up my own genetic algorithm for Robocode. A potential solution to this problem could be to pit the genetic robot against a field of ten different robots, so that it evolves features that will help it in a larger variety of situations. If this genetic robot were pitted against a robot with a different movement pattern or shooting method, it would be significantly less effective. However, the genetic algorithm has a large shortcoming: it finds a robot that is only effective in defeating the opponent that was used in its evolution. This video provides a visual demonstration of the concept of Wave Surfing:īy the 111th generation, the genetic robot was defeating the Spinbot approximately 75% of the time, which shows the capability of the genetic algorithm to find a good solution rather quickly. The resulting motion resembles “surfing” the waves of the bullets. Therefore, using machine learning techniques, the defensive robot can predict what direction of travel the bullet was most likely to travel in, and then it can avoid areas that have a high probability of containing a bullet. The direction of travel of the bullet is unknown to the defensive robot. It captures the initial location of the bullet, the velocity of the bullet, and the time passed since the bullet was fired. A wave is an imaginary circle that expands outward from a robot when it fires a bullet. A “Wave” is a way to represent all possible locations of a bullet based on the information known to an agent. “Wave Surfing” is the colloquial term for using machine learning to dodge bullets in the Robocode world. In order to combat intelligent shooting strategies, many robots with good defensive strategies make use of AI techniques. These techniques work well enough against naiive offensive strategies, but fail miserably against offensive strategies that use machine learning and pattern matching. Many naiive Robots do this by automatically driving in circles, moving randomly, or moving in complex, predefined patterns. Defense in Robocode consists of avoiding enemy bullets.