<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Henning</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Henning"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Henning"/>
	<updated>2026-05-05T21:12:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=30058</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=30058"/>
		<updated>2009-04-09T15:15:50Z</updated>

		<summary type="html">&lt;p&gt;Henning: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. &lt;br /&gt;
&lt;br /&gt;
The idea is to provide a feedback mechanism for instant evaluation of game positions. For this project I propose this mechanism to be one way - the algorithm will not try to suggest moves to the function caller.&lt;br /&gt;
&lt;br /&gt;
Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]). The algorithm can be used to allow for a test of previously calculated candidate moves for their strategical viability. &lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
In general the aims for the 3 phases are as following:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Description&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| '''Phase 0''' - Create a dataset of games. Prototyping&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| '''Phase 1''' - Development of algorithm in C++ with implementation optimized for performance and simplicity.&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| '''Phase 2''' - Integration of algorithm into code base. Collection of feedback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are two main milestones to be achieved during this project:&lt;br /&gt;
#The algorithm needs to be developed so that it converges towards the end of the game as one side begins to gain advantage. At the very least the algorithm should have more predictive power than an evaluation based on material in the game alone. I plan to measure the prediction of the algorithm at every stage of the game. If my algorithm is able to predict the outcome of the game either earlier or more reliable than the control then this part of the project will have succeeded.&lt;br /&gt;
#Secondly, if milestone one has been achieved the algorithm needs to be implemented in a fashion that is intuitive and useful to both users and developers:&lt;br /&gt;
#*I will make both the algorithm and test database accessible to the public &lt;br /&gt;
#*I will write a function to provide in-game feedback to the players (if they so wish). &lt;br /&gt;
#*Most importantly, I will create an interface between the algorithm and formula AI providing a function that can calculate evaluations during move planning.&lt;br /&gt;
&lt;br /&gt;
====Phase 0====&lt;br /&gt;
*20-26 Apr: Compile wesnoth. Create game export function.&lt;br /&gt;
*27 Apr-3 May: Create database scenarios and collect data. Start implementing prototype algorithm.&lt;br /&gt;
*4-10 May: Add complexity - fighting. Come up with solution for probability distributions and make algorithm understand ''chance to kill''.&lt;br /&gt;
*11-17 May: Add complexity - special abilities.&lt;br /&gt;
*18-23 May: Add complexity - terrain.&lt;br /&gt;
&lt;br /&gt;
All through phase 0 I will familiarize myself further with the code base in order to be up to speed for phase 1. &lt;br /&gt;
&lt;br /&gt;
====Phase 1====&lt;br /&gt;
*25-31 May: Develop specification for interface between algorithm and codebase.&lt;br /&gt;
*1-21 Jun: Implement algorithm in C++&lt;br /&gt;
*22-28 Jun: Benchmark algorithm.&lt;br /&gt;
*29 Jun-5 Jul: Write report.&lt;br /&gt;
&lt;br /&gt;
====Phase 2====&lt;br /&gt;
*6-19 Jul: Integrate algorithm into code base.&lt;br /&gt;
*20-26 Jul: Collect feedback from community&lt;br /&gt;
*27 Jul-2 Aug: Update algorithm according to feedback.&lt;br /&gt;
*3-9 Aug: Write final report.&lt;br /&gt;
&lt;br /&gt;
====Phase 3====&lt;br /&gt;
After the summer of code, if the project has been successful I would like to continue by looking at move generation in combination with the position evaluation algorithm.&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. &lt;br /&gt;
&lt;br /&gt;
I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then. Getting back on the saddle has proved to be quite easy.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=30023</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=30023"/>
		<updated>2009-04-08T10:59:12Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Estimated timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
In general the aims for the 3 phases are as following:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Description&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| '''Phase 0''' - Create a dataset of games. Prototyping&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| '''Phase 1''' - Development of algorithm in C++ with implementation optimized for performance and simplicity.&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| '''Phase 2''' - Integration of algorithm into code base. Collection of feedback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are two main milestones to be achieved during this project:&lt;br /&gt;
#The algorithm needs to be developed so that it converges towards the end of the game as one side begins to gain advantage. At the very least the algorithm should have more predictive power than an evaluation based on material in the game alone. I plan to measure the prediction of the algorithm at every stage of the game. If my algorithm is able to predict the outcome of the game either earlier or more reliable than the control then this part of the project will have succeeded.&lt;br /&gt;
#Secondly, if milestone one has been achieved the algorithm needs to be implemented in a fashion that is intuitive and useful to both users and developers:&lt;br /&gt;
#*I will make both the algorithm and test database accessible to the public &lt;br /&gt;
#*I will write a function to provide in-game feedback to the players (if they so wish). &lt;br /&gt;
#*Most importantly, I will create an interface between the algorithm and formula AI providing a function that can calculate evaluations during move planning.&lt;br /&gt;
&lt;br /&gt;
====Phase 0====&lt;br /&gt;
*20-26 Apr: Compile wesnoth. Create game export function.&lt;br /&gt;
*27 Apr-3 May: Create database scenarios and collect data. Start implementing prototype algorithm.&lt;br /&gt;
*4-10 May: Add complexity - fighting. Come up with solution for probability distributions and make algorithm understand ''chance to kill''.&lt;br /&gt;
*11-17 May: Add complexity - special abilities.&lt;br /&gt;
*18-23 May: Add complexity - terrain.&lt;br /&gt;
&lt;br /&gt;
All through phase 0 I will familiarize myself further with the code base in order to be up to speed for phase 1. &lt;br /&gt;
&lt;br /&gt;
====Phase 1====&lt;br /&gt;
*25-31 May: Develop specification for interface between algorithm and codebase.&lt;br /&gt;
*1-21 Jun: Implement algorithm in C++&lt;br /&gt;
*22-28 Jun: Benchmark algorithm.&lt;br /&gt;
*29 Jun-5 Jul: Write report.&lt;br /&gt;
&lt;br /&gt;
====Phase 2====&lt;br /&gt;
*6-19 Jul: Integrate algorithm into code base.&lt;br /&gt;
*20-26 Jul: Collect feedback from community&lt;br /&gt;
*27 Jul-2 Aug: Update algorithm according to feedback.&lt;br /&gt;
*3-9 Aug: Write final report.&lt;br /&gt;
&lt;br /&gt;
====Phase 3====&lt;br /&gt;
After the summer of code, if the project has been successful I would like to continue by looking at move generation in combination with the position evaluation algorithm.&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. &lt;br /&gt;
&lt;br /&gt;
I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then. Getting back on the saddle has proved to be quite easy.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29772</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29772"/>
		<updated>2009-04-03T11:59:20Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Open questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
In general the aims for the 3 phases are as following:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| '''Phase 0''' - Create a dataset of games. Prototyping&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| '''Phase 1''' - Development of algorithm in C++ with implementation optimized for performance and simplicity.&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| '''Phase 2''' - Integration of algorithm into code base. Collection of feedback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Phase 0====&lt;br /&gt;
*20-26 Apr: Compile wesnoth. Create game export function.&lt;br /&gt;
*27 Apr-3 May: Create database scenarios and collect data. Start implementing prototype algorithm.&lt;br /&gt;
*4-10 May: Add complexity - fighting. Come up with solution for probability distributions and make algorithm understand ''chance to kill''.&lt;br /&gt;
*11-17 May: Add complexity - special abilities.&lt;br /&gt;
*18-23 May: Add complexity - terrain.&lt;br /&gt;
&lt;br /&gt;
All through phase 0 I will familiarize myself further with the code base in order to be up to speed for phase 1. &lt;br /&gt;
&lt;br /&gt;
====Phase 1====&lt;br /&gt;
*25-31 May: Develop specification for interface between algorithm and codebase.&lt;br /&gt;
*1-21 Jun: Implement algorithm in C++&lt;br /&gt;
*22-28 Jun: Benchmark algorithm.&lt;br /&gt;
*29 Jun-5 Jul: Write report.&lt;br /&gt;
&lt;br /&gt;
====Phase 2====&lt;br /&gt;
*6-19 Jul: Integrate algorithm into code base.&lt;br /&gt;
*20-26 Jul: Collect feedback from community&lt;br /&gt;
*27 Jul-2 Aug: Update algorithm according to feedback.&lt;br /&gt;
*3-9 Aug: Write final report.&lt;br /&gt;
&lt;br /&gt;
====Phase 3====&lt;br /&gt;
After the summer of code, if the project has been successful I would like to continue by looking at move generation in combination with the position evaluation algorithm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. &lt;br /&gt;
&lt;br /&gt;
I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then. Getting back on the saddle has proved to be quite easy.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29771</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29771"/>
		<updated>2009-04-03T11:58:54Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Estimated timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
In general the aims for the 3 phases are as following:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| '''Phase 0''' - Create a dataset of games. Prototyping&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| '''Phase 1''' - Development of algorithm in C++ with implementation optimized for performance and simplicity.&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| '''Phase 2''' - Integration of algorithm into code base. Collection of feedback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Phase 0====&lt;br /&gt;
*20-26 Apr: Compile wesnoth. Create game export function.&lt;br /&gt;
*27 Apr-3 May: Create database scenarios and collect data. Start implementing prototype algorithm.&lt;br /&gt;
*4-10 May: Add complexity - fighting. Come up with solution for probability distributions and make algorithm understand ''chance to kill''.&lt;br /&gt;
*11-17 May: Add complexity - special abilities.&lt;br /&gt;
*18-23 May: Add complexity - terrain.&lt;br /&gt;
&lt;br /&gt;
All through phase 0 I will familiarize myself further with the code base in order to be up to speed for phase 1. &lt;br /&gt;
&lt;br /&gt;
====Phase 1====&lt;br /&gt;
*25-31 May: Develop specification for interface between algorithm and codebase.&lt;br /&gt;
*1-21 Jun: Implement algorithm in C++&lt;br /&gt;
*22-28 Jun: Benchmark algorithm.&lt;br /&gt;
*29 Jun-5 Jul: Write report.&lt;br /&gt;
&lt;br /&gt;
====Phase 2====&lt;br /&gt;
*6-19 Jul: Integrate algorithm into code base.&lt;br /&gt;
*20-26 Jul: Collect feedback from community&lt;br /&gt;
*27 Jul-2 Aug: Update algorithm according to feedback.&lt;br /&gt;
*3-9 Aug: Write final report.&lt;br /&gt;
&lt;br /&gt;
====Phase 3====&lt;br /&gt;
After the summer of code, if the project has been successful I would like to continue by looking at move generation in combination with the position evaluation algorithm.&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. &lt;br /&gt;
&lt;br /&gt;
I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then. Getting back on the saddle has proved to be quite easy.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29554</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29554"/>
		<updated>2009-04-01T13:33:05Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Gaming experience */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. &lt;br /&gt;
&lt;br /&gt;
I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then. Getting back on the saddle has proved to be quite easy.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29553</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29553"/>
		<updated>2009-04-01T13:31:51Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Open questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29552</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29552"/>
		<updated>2009-04-01T13:31:26Z</updated>

		<summary type="html">&lt;p&gt;Henning: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the position evaluation with move evaluation in order to allow for multi-move forward planning.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29548</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29548"/>
		<updated>2009-04-01T11:00:45Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Parameter definitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable). Similarly the health of the units under a player's control has a direct influence on the value of his material. &lt;br /&gt;
Another important factor determining a player's material is gold, both present and future (in the sense of current income). &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
While Material is certainly very important in determining the strength of a position in wesnoth it has one major flaw in its predictive power - it is not deterministic. Development and Synergy on the other hand can be predicted well with the exception of units being killed.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29547</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29547"/>
		<updated>2009-04-01T10:54:45Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Egocentric position evaluation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
I have compiled some example formulae for this in the example below.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29546</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29546"/>
		<updated>2009-04-01T10:54:02Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29545</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29545"/>
		<updated>2009-04-01T10:53:43Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [[http://www.ini.uzh.ch/~henning/wesnoth-algorithm.html this example]] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29544</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29544"/>
		<updated>2009-04-01T10:53:14Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Check out [[https://www.ini.uzh.ch/~henning/wesnoth-algorithm.html | this example]] that will hopefully shed some light on my rather cryptic description above.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29543</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29543"/>
		<updated>2009-04-01T10:45:10Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Egocentric position evaluation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. Furthermore, the outcome of each move is undeterministic due to the chance involved in fighting between units.&lt;br /&gt;
&lt;br /&gt;
I propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. Units have a certain internal activity value (roughly corresponding to the unit's HP). Interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. This can evaluate the strength of a players position in terms of development and synergy. &lt;br /&gt;
The overall energy of a players network consisting of material, development and synergy values is then a correlate of the strength of his position. Evaluating the development and synergy values has the added advantage of providing deterministic position evaluation before any fighting has been done, potentially warning the AI that a certain move weakens the structure of ones units significantly.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
''currently preparing the figures''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29489</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29489"/>
		<updated>2009-03-31T11:21:13Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Contact details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning__&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. &lt;br /&gt;
&lt;br /&gt;
I therefore propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. If we assume that units have a certain internal activity value (roughly corresponding to the unit's strength) then interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. The strength of connections will depend on the probabilities involved in mediating the units effect. &lt;br /&gt;
The overall energy of a players network of material is then a correlate of the strength of his position.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
''currently preparing the figures''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29488</id>
		<title>SummerOfCodeIdeas</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29488"/>
		<updated>2009-03-31T11:18:51Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* AI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):&lt;br /&gt;
&lt;br /&gt;
== I want to be one of your Google Summer of Code students, what should I do... ==&lt;br /&gt;
&lt;br /&gt;
Here is a quick list of things to do to get you started&lt;br /&gt;
* Create an account on gna.org&lt;br /&gt;
* Create an account on the wesnoth forum, and tell an admin on the IRC channel to mark is as a GSoC Student account (Admins are boucman, Ivanovic, mordante, Shadow_Master, Sirp and Turuk)&lt;br /&gt;
* Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of &amp;quot;every day communication&amp;quot; for Wesnoth. For the same reason, it's also a good idea to regularly read the [http://wesnoth.debian.net/?C=M;O=A IRC logs].).&lt;br /&gt;
&lt;br /&gt;
* Start a wiki page about your idea, add a link on the bottom of this page and add this information on it:&lt;br /&gt;
** List your account names (gna, forum, irc nick) so that we can recognize you&lt;br /&gt;
** Fill the questionnaire on this page: [[SoC_Information_for_Google#Does_your_organization_have_an_application_template_you_would_like_to_see_students_use.3F_If_so.2C_please_provide_it_now.| List of questions to answer]]&lt;br /&gt;
** Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done&lt;br /&gt;
** Add a link to the page at the bottom of this page&lt;br /&gt;
&lt;br /&gt;
* Though not mandatory, it is highly advisable to go to the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch.&lt;br /&gt;
&lt;br /&gt;
* For working on Wesnoth you have to be able to compile trunk. To do so you should have a look at the [[WesnothSVN|page about svn]] and afterwards [[CompilingWesnoth|compile Wesnoth svn]].&lt;br /&gt;
&lt;br /&gt;
* Once you have everything done here and think your idea is okay, go to [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants page at google] to submit your application. You have to submit it before '''Date to be supplied later''' or you have no chance to get in!&lt;br /&gt;
&lt;br /&gt;
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==&lt;br /&gt;
&lt;br /&gt;
Here is only a short description of possible Ideas we have, each has a page of its own with a more detailed version on it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize implementation of WML for memory usage ===&lt;br /&gt;
&lt;br /&gt;
Based on this idea: [http://dave.wesnoth.org/?p=9] optimize WML to minimize its memory usage. High memory usage has been a problem for Wesnoth, and this project will aim to reduce it.&lt;br /&gt;
&lt;br /&gt;
=== Implement campaign statistics reports on stats.wesnoth.org ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has an infrastructure which records details of campaigns that players play into a centralized MySQL database. However, we only have rudimentary reports based on this MySQL database available at this time, at [http://stats.wesnoth.org].&lt;br /&gt;
&lt;br /&gt;
This project would involve writing a stats reporting web site which would take the data from the MySQL database and produce reports in chart and table form. Campaign designers would be able to use these reports to gather feedback on their campaigns and get ideas for improvements.&lt;br /&gt;
&lt;br /&gt;
A student could largely make their choice of infrastructure for creating the Website -- whether they prefer Python, Perl, Ruby, PHP, etc. This is a great opportunity for someone who doesn't want to dive into hardcore C++ to make a valuable contribution to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Stats Server]] - Full Version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Extending the Multiplayer server ===&lt;br /&gt;
&lt;br /&gt;
Our multiplayer community is generally strong and healthy, but we believe its growth is limited by some problems in the interface of the multiplayer lobby.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Multiplayer server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Addon server ===&lt;br /&gt;
Wesnoth has an addon server which offers users to upload user &lt;br /&gt;
made content (UMC). This allows all other users of Wesnoth&lt;br /&gt;
to easily download and install this content. The server was &lt;br /&gt;
originally written for user-made campaigns but contains a lot&lt;br /&gt;
more types of addons nowadays. Both the server side and the &lt;br /&gt;
client side need to be improved.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Addon Server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== WML validation schemes ===&lt;br /&gt;
Wesnoth uses WML as basic data structure. Over the years&lt;br /&gt;
this language has evolved and got more complex. At the&lt;br /&gt;
moment the WML is validated at runtime and in case of a&lt;br /&gt;
problem the engine stops. With schemes these problems can&lt;br /&gt;
be validated when loading the WML, making it easier to find&lt;br /&gt;
problems before running into them.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Schemes]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Write a primitive library for Formula AI ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in Wesnoth: [[FormulaAI]]&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI is used as an opponent in most campaigns, and as such is an important piece of code for the Wesnoth project. Unfortunately, because the skills required to understand and modify it are rather arcane, it is also one of the most neglected parts of the Wesnoth code. This is a place where a lot of research and useful work could be done. But keep in mind that [[WhyWritingAWesnothAIIsHard|writing an AI for Wesnoth is difficult]].&lt;br /&gt;
&lt;br /&gt;
Writing a whole AI is so complicated that we believe it can't be done in a single Summer of code. All proposals should keep that in mind and try to identify an interesting subset that would be workable in the limited time of a summer of code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas FormulaAI]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Savegame reorganization ===&lt;br /&gt;
The savegame formats of Wesnoth for single player campaigns&lt;br /&gt;
and multiplayer differ from each other. And they are processed&lt;br /&gt;
differently as well. Now there is an additional request coming&lt;br /&gt;
up: Multiplayer campaigns. The task will be to unify the savegames&lt;br /&gt;
for all types of scenarios in order to provide a maintainable code&lt;br /&gt;
again.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Savegame]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible ideas to be fleshed out ===&lt;br /&gt;
A MapGenerator rewrite - better scalable for outdoor maps, plus the possibility to define areas (similar to the caverns in the cave generator) etc.&lt;br /&gt;
&lt;br /&gt;
=== Make your own ideas ===&lt;br /&gt;
If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.&lt;br /&gt;
&lt;br /&gt;
== Information about our Project ==&lt;br /&gt;
The information we provided google with about our project can be looked up at the site [[SoC Information for Google]].&lt;br /&gt;
&lt;br /&gt;
Also see the [[DeveloperResources]] link (from the [[Project]] page).&lt;br /&gt;
&lt;br /&gt;
== People to bug on IRC ==&lt;br /&gt;
We have prepared a list of people with their &amp;quot;area of competence&amp;quot;. This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:&lt;br /&gt;
&lt;br /&gt;
[[SoC People to bug on IRC]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Student pages ==&lt;br /&gt;
&lt;br /&gt;
Please add a link to your wiki page below&lt;br /&gt;
&lt;br /&gt;
==== AI ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Velory| Velory - SoC Proposal]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_AI_Improvement_Crab| Crab - SoC Proposal - AI Improvement]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Sparksteel | Sparksteel - Improving the AI engine design]]&lt;br /&gt;
&lt;br /&gt;
[[FormulaAISoC2009Dragonking | Dragonking - Improving the formula AI ]]&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Proposal_-_Position_Evaluation | henning - Position Evaluation ]]&lt;br /&gt;
&lt;br /&gt;
==== Savegame reorganization ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Euschn | Euschn - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_lmg| lmg - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_grantwu| grantwu - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
==== Extending the Multiplayer server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_rubend | rubend - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_IneQuation | IneQuation - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
[[MP Server Ilor | Ilor - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
==== Addon server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryochan7| Ryochan7 - Addon server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_iyonius| iyonius - Addon server]]&lt;br /&gt;
&lt;br /&gt;
==== Optimize implementation of WML for memory usage ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_res| res -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_jdmunro| jdmunro -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryanc| ryanc -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
==== WML validation schemes ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_orian| orian - WML validation schemes ]]&lt;br /&gt;
&lt;br /&gt;
==== Implement campaign statistics reports on stats.wesnoth.org ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Elbin| Elbin - New campaign statistics page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Munk| Munk - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_carlestyle| carlestyle - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_nerwa| NeRwa - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_mrfinch| mrfinch - New Campaign Statistics Page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_corn| corn - New Campaign Statistics Page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_csaunders | csaunders - SoC Proposal - Stats Server]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code|*]]&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29487</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29487"/>
		<updated>2009-03-31T11:18:11Z</updated>

		<summary type="html">&lt;p&gt;Henning: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. While this is not technically related to the improvement of formula AI, reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. As such it is part of the proposed AI changes for 1.7 (see [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=24511 Dave's forum post]).&lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: jp0186&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. &lt;br /&gt;
&lt;br /&gt;
I therefore propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. If we assume that units have a certain internal activity value (roughly corresponding to the unit's strength) then interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. The strength of connections will depend on the probabilities involved in mediating the units effect. &lt;br /&gt;
The overall energy of a players network of material is then a correlate of the strength of his position.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
''currently preparing the figures''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29486</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29486"/>
		<updated>2009-03-31T11:13:13Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Contact details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. &lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: jp0186&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. &lt;br /&gt;
&lt;br /&gt;
I therefore propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. If we assume that units have a certain internal activity value (roughly corresponding to the unit's strength) then interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. The strength of connections will depend on the probabilities involved in mediating the units effect. &lt;br /&gt;
The overall energy of a players network of material is then a correlate of the strength of his position.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
''currently preparing the figures''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29485</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29485"/>
		<updated>2009-03-31T11:10:37Z</updated>

		<summary type="html">&lt;p&gt;Henning: /* Project proposal */ added example stub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. &lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. &lt;br /&gt;
&lt;br /&gt;
I therefore propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. If we assume that units have a certain internal activity value (roughly corresponding to the unit's strength) then interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. The strength of connections will depend on the probabilities involved in mediating the units effect. &lt;br /&gt;
The overall energy of a players network of material is then a correlate of the strength of his position.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
''currently preparing the figures''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29484</id>
		<title>GSoC Proposal - Position Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_Proposal_-_Position_Evaluation&amp;diff=29484"/>
		<updated>2009-03-31T11:04:59Z</updated>

		<summary type="html">&lt;p&gt;Henning: Initial commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this year's summer of code season I would like to develop a position evaluator. Reliable position evaluation will improve the current AI in two different ways: In the short term it will be an important tool for developers in order to test their own move planning algorithms. &lt;br /&gt;
In the long run, it might be possible to couple the evaluation with move planning in order to allow for multi-move forward planning and evaluation.&lt;br /&gt;
&lt;br /&gt;
==About myself== &lt;br /&gt;
My name is Henning and I am a 27 year-old PhD student from Zurich, Switzerland. I am currently in my final year of post-graduate study at the Institute of Neuroinformatics where I model biological neural networks and study them theoretically.&lt;br /&gt;
&lt;br /&gt;
The brain has some unique solutions in dealing with complexity in the environment and my aim for the near future is to try to apply some of those principles in real-world applications. Summer of code gives me a great opportunity to test out some of my ideas in a friendly environment.&lt;br /&gt;
&lt;br /&gt;
===Contact details=== &lt;br /&gt;
* Email: henning at ini dot phys dot ethz dot ch &lt;br /&gt;
* Forums: henning &lt;br /&gt;
* gna: henning &lt;br /&gt;
* IRC: henning&lt;br /&gt;
* skype: jp0186&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Project proposal== &lt;br /&gt;
&lt;br /&gt;
===Parameter definitions===&lt;br /&gt;
The factors determining the value of a given position in wesnoth are &lt;br /&gt;
&lt;br /&gt;
* Material&lt;br /&gt;
* Development&lt;br /&gt;
* Synergy&lt;br /&gt;
&lt;br /&gt;
'''Material''' is the basic element determining the value of a wesnoth position and also the most easy to evaluate. The player with more units will have an advantage over the player with less units (if the units are comparable in strength). Similarly, the player with an experienced unit will generally have an advantage over the player with a weaker unit (again, only if the number of units is comparable).&lt;br /&gt;
In a similar sense, villages can also count towards the material evaluation as they enable a player to gather resources in order to increase his material strength in the future. &lt;br /&gt;
&lt;br /&gt;
'''Development''' refers to the position of material on the battlefield. It is easily imaginable that a player with a material advantage is in an inferior game position because he hasn't utilized his material to be useful for his purposes. This utilization can involve reaching a strategically valuable position, maneuvering close to a village that can potentially be captured, being able to attack an enemy unit, or blocking the way against an enemy attack. &lt;br /&gt;
Evaluating this utilization is non-trivial as it depends on overall strategical considerations as well as complex interactions between units.&lt;br /&gt;
&lt;br /&gt;
'''Synergy''' refers to the interactions between some friendly units that are not directly captured by the concept of Development. This can refer both to directly to special abilities or indirectly to some desirable combinations of unit specialities. For example, a healing unit in combination with a high damage, low health unit. As with Development these connections are difficult to evaluate within a classical approach.&lt;br /&gt;
&lt;br /&gt;
All of these factors should be taken into account for the evaluation.&lt;br /&gt;
&lt;br /&gt;
===Egocentric position evaluation===&lt;br /&gt;
The 10^10000 possible positions in a typical game of wesnoth (as discussed [[WhyWritingAWesnothAIIsHard|here]]) do not lend themselves well to a classical tree-search approach with material as the main evaluation factor. &lt;br /&gt;
&lt;br /&gt;
I therefore propose to represent each position in a massively simplified state space which is based on egocentric representation of each piece of material and corresponding areas of influence. This can be done efficiently and intuitively by representing material as nodes in a network. Connections between nodes represent units having a direct beneficial or detrimental influence on each other. If we assume that units have a certain internal activity value (roughly corresponding to the unit's strength) then interactions between units can be expressed in terms of excitatory or inhibitory connections that either increase or decrease a units activity. The strength of connections will depend on the probabilities involved in mediating the units effect. &lt;br /&gt;
The overall energy of a players network of material is then a correlate of the strength of his position.&lt;br /&gt;
&lt;br /&gt;
===General considerations===&lt;br /&gt;
This scheme has the following advantages:&lt;br /&gt;
&lt;br /&gt;
# It massively simplifies the space of possible moves and provides a simplified context in which moves can be represented.&lt;br /&gt;
# It takes into account the overall structure of the position making use of synergetic effects between units.&lt;br /&gt;
# It will be able to account for half-moves to maximize network energy.&lt;br /&gt;
# It can take into account special abilities by shaping a units areas of influence.&lt;br /&gt;
# It could potentially lead to more advanced strategical considerations by identifying the value of each unit in the context of its position in the game. &lt;br /&gt;
# A modular position evaluator can either be implemented statically into the current AI or serve as a tool within formula AI, depending on how successful the approach proves to be.&lt;br /&gt;
&lt;br /&gt;
===Benchmarking and parameter search===&lt;br /&gt;
In order to test an evaluation algorithm empirically as well as search for suitable parameter combinations of the network connections, I propose to first build a database of games between two human players (if these players so consent). Armed with this it will be possible to cycle through the games and evaluate each move with a prototype of my move evaluator. The predictive power of an evaluator can be tested by measuring convergence of evaluations. Alternatively data about single-player campaigns could be used. In any case a large database of played games will yield more accurate results in evaluating the position evaluator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimated timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time period !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
! 20 Apr - 23 May&lt;br /&gt;
| Start game database, prototyping using matlab, familiarization with code base&lt;br /&gt;
|-&lt;br /&gt;
! 23 May - 6 Jul&lt;br /&gt;
| Prototyping with matlab and C++, parameter search and architecture evaluation using game database&lt;br /&gt;
|-&lt;br /&gt;
! 6 Jul - 10 Aug&lt;br /&gt;
| Final implementation in C++ and integration into code base&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
How is such a system solved numerically in an efficient manner?&lt;br /&gt;
&lt;br /&gt;
How can the move evaluation be combined with move planning?&lt;br /&gt;
&lt;br /&gt;
How can mission objectives be implemented by shaping network architecture?&lt;br /&gt;
&lt;br /&gt;
How can mission designers influence the ''character'' of the AI by changing network parameters?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Programming experience== &lt;br /&gt;
Although I do not have a classical engineering background I consider myself a decent self-taught programmer. My languages are C++, perl and matlab. I know how to use build-tools and SVN. Since only half of this proposal is concerned with the actual implementation I am sure I will have enough time to familiarize myself with the code base before having to commit actual changes.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience== &lt;br /&gt;
I am an enthusiastic gamer both on my computer as well as my PS3. I generally, enjoy games that either push the boundaries of what is technologically possible, or surprise me in some way or other. Games I have enjoyed recently are Fallout3, World of Warcraft, and Grand Theft Auto 4. I used to play a lot of Wesnoth back in what must have been 2005. It is impressive to see how much the game has matured and developed since then.&lt;br /&gt;
&lt;br /&gt;
==Communication skills== &lt;br /&gt;
I am a native German speaker and speak English fluently (I studied in the UK for 4 years).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
I am mostly done with my thesis and expect to be working on this full-time during the Summer of Code period. I am awake 7 - 23 UTC and should be available on IRC from 7 - 17.&lt;/div&gt;</summary>
		<author><name>Henning</name></author>
		
	</entry>
</feed>