[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4586: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3765)[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4588: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3765)[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4589: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3765)[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4590: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3765)AI Challenge Forums • View topic - Post-mortem

Endgame evaluation is huge, but there's also a lot of opportunity in the heuristic board position evaluator. The first thing that pops into my mind is extracting better features than just node and edge counts from an open space and doing more data mining on existing games between higher-ranked bots, and then iteratively improving a bot and running more games and re-feeding those games in as data. No idea how successful that approach will prove to be, but there's still quite a lot of room for improvement.

Not only that but there are a number of bugs that could use fixing.

Still, I don't know what bruudruuster is doing, but he's made extremely significant improvements in his bot today, if dhartmei's ELO ratings are any judge:

In a rush to make tree-of-chambers very efficient, I managed to squeeze in a few horrible bugs 2 minutes before the deadline, so I ended somewhere not-so-near to the top.The version on dhartmei's server is the one with the bugs removed. I'm sure I was up for a top-10 position.

What I do is basically the same as most others. Alpha-beta with voronoi+tree-of-chambers as static evaluation function.The voronoi calculation also assumes weights for each square: 0 if there is one edge, 12 if there are 2, 16 if there are 3 edges and 20 for squares with 4 edges. Squares in the center quarter of the board get an additional weight of 3.I do something similar to your battlefront idea: each player gets only his part of the battlefront chamber. I also allow multiple battlefront chambers, important for maps such as triangle, square etc.I also do quiesence search: null window search for moves to squares that look like articulation vertices, based on the immediate surrounding.

Draws are penalized slightly: a draw gets a weight between -1 and -100 depending on the number of moves it takes to get to the draw. This is correct as long as the static evaluation is correct.

The end-game play is a simple optimized version of the alpha-beta: it considers only one player. First it computes how many squares to fill and then does iteratively deepened DFS with the same evaluation function, except that center squares don't get a bonus. If a sufficiently long trajectory is found then search stops; otherwise the "accessibility" of the remaining area after the trajectory is optimized.

I also use the warnsdorff heuristic to order moves in alpha-beta and DFS.

I think the strength of my bot comes mostly from highly optimized algorithms, allowing it to look deep. At least that's what I like to think. I haven't checked other players code in detail yet.For instance, several analyses require that a state for every square on the board is initialized (e.g. an initial distance to the players equal to infinity for dividing the map in each players area, or labelling all squares as WHITE when computing articulation vertices.) These initializations take somewhat time, usually some O(N) as the analysis pass itself. So I optimize that away by setting a global cur_color and bumping it up by 2 before every analysis. Then I define WHITE to cur_color and BLACK to cur_color+1. The query IS_WHITE(color) tests (color <= WHITE) instead of (color == WHITE). This avoids initializing every cell to WHITE and saves a scan over the board. There is no overflow on cur_color since I can't do 2G evaluations per second

I think it's extensive use of tricks like these that give my bot deeper lookahead than similar alpha-beta approaches.

I wanted to optimize static evaluation further. Now it does:1) division of maps between players and determining connectedness and the battlefront2) DFS for each player to determine their reachable tree-of-chambers3) DFS on the articulation vertex tree to compute the max weight of divergent paths in the tree-of-chambers.What I wanted to do was to calculate chambers while dividing the map in step 1) and come up with a much smaller graph to run the DFS on in steps 2 and 3. That would have been much faster but I couldn't get it correct immediately.I guess we all have our wish list of things to do

That's pretty close to what mine does, except with the battlefront modification. (Yes, a gate is pretty much the same as an articulation vertex, but articulation vertices aren't computed from a particular direction so there are more of them.) But consider this: if a given chamber has a battlefront, then the territory inside it is liable to not stay "yours" unless you head directly toward the middle of it. If you instead try to fill another chamber efficiently, your opponent can head towards you and take over that space. Therefore the chamber you're in is of no use at all unless you intend to not use the battlefront chamber.

So my code just figures out whether it will last longer if it cuts off battlefronts and fills up the rest of the space, or if it cuts off its useless space and stakes a claim on the battlefront.

for big maps like used on http://www.benzedrine.cx/tron/getratingsthere algoritmas realy needbut the statistical assessment of areas is questionable and depends strongly on the mapsa1k0n's implementation not perfect but I was too lazy to rewrite the free