SoC Ideas AI Defense Strategies 2013

From The Battle for Wesnoth Wiki


This page is related to Summer of Code 2013
See the list of Summer of Code 2013 Ideas



This is a Summer of Code 2013 Idea


Description

AI: Implement a 'total defense' strategy

Page for the idea: SoC Ideas AI Defense Strategies 2013

AI in wesnoth's is good at killing things but is bad at defending. Therefore we are forced to make it attack at 2:1 odds. This is the single biggest limiter of the AI skill at the moment. To solve that, we need to teach the AI to defend.

Suggested skills: C++, knowledge of wesnoth's gameplay (can be learned during the project)

There are 7 submitted student proposals for this idea

Arkist - AI: Implement a total defense strategy

When AI calculates how to attack don't consider what could happen in next turn. I want to change this, caulculating different possibilities without increasing the computation complexity (or increasing it slightly, not increasing the 'loading' time). Maybe I could use 'branch and bound' algorithm, trying different heuristics.


See Arkist for more information.

Dragos Ristache: Implement a total defense strategy

I intend to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.
See Dragos/GsoC 2013/AI: Implement a 'total defense' strategy for more information.

elf11 - AI Project

TODO: Write a small (1-4 sentences) description of your proposal here. I am thinking about working on one of the AI projects, the total defense project. I still have to talk with a mentor and write a patch for the project, so after doing that and getting better understanding of the existing code I will update this section.

TODO: Add more first-level sections to detail your proposal
See Elf11 for more information.

Jeffrey Eldridge - AI: Implement a 'total defense' strategy

I believe that the defense of the AI can be improved by aiming to move units into the best position, instead of simply maximizing the number of losses the enemy takes. Assuming that the AI wants to actually hold and defend a position against the enemy (as opposed to just running away and minimizing its own losses), the best position would be the one that minimizes enemy presence in the defended area while also minimizing the amount of damage that can be done by the enemy to the AI's own units.
See Jleldridge for more information.

PL_kolek - AI 'total defense strategy'

My goal is to make AI play more cautiously. Currently it only tries to kill as many units as possible without taking into account possible enemy moves. I'm going to build into the current algorithm some mechanism to improve AI behavious, that connected together would boost it's thinking great boost.
See PL kolek for more information.


See YoungWolf for more information.

Zazweda - Total defense Strategy

The defense project would include taking more information and probabilities into account (next turn for example).
See Zazweda for more information.

Additional Information

Currently, the aim is to maximize (enemy losses - aggression*own_losses), where aggression is currently set to 0.4 by default. Teaching the AI to defend would allow us to lower the default aggression value. If we can bring the aggression value close to 0, the problem would be solved.

What would happen if we set aggression to 0 now? AI would only do the attacks which are 'good at killing things', but would not do the attacks, leaving only several units on the frontline. Moreover, the formula max(enemy_losses - aggression*own_losses) is broken, because it does not consider next_turn retaliation properly. A correct (but not calculable) formula would be max(enemy_losses_defending - aggression*own_losses_attacking - aggression*own_losses_next_turn + enemy_losses_attacking_next_turn + enemy_losses_defending_in_two_turns - aggression*own_losses_attacking_in_two_turns - … ). It's not calculable because we can't predict all the turns in advance with any degree of confidence. However, if we take the *next* turn into account better, then the AI would be able to play in styles other than 'all-out-attack' - because, if you take next turn into account, it makes sense to form defensive lines, block enemy units from reaching your vulnerable units, etc.

First steps

If you haven't played Wesnoth yet, play one-on-one vs AI, to learn the game rules and to observe how AI plays its turn and selects attacks.

Change default aggression (by modifying the text file data/ai/utils/default_config.cfg , changing {DEFAULT_ASPECT_VALUE aggression 0.4} to other values like 1.0 or 0.1 or -0.5) and observe results

Also, set up everything that is required to compile Wesnoth from source.

Whom to ask about this

Crab_ on irc.

This page was last edited on 9 April 2013, at 09:40.