I'm currently trying to make a Othello-playing program. My biggest concern at the moment is the evaluation function of game positions. Currently my evaluation function is quite primitive...move counting, looking for corner plays etc.

I tried to implement the evaluation functions of IAGO(1981) and BILL(1986).

I tried to read a bunch of papers, Michael Buro's stuff especially, but I failed horribly. It seems as I miss some fundamental knowledge. I neither get to understand how patterns work nor how to create them.

As far as I understand they are used to rate constellations of rows, columns, edges, 3x3 corners etc.

I'd highly appreciate if someone could provide me the following information:

  • What data structure has a pattern?
  • Given a certain game position how would I make use of this pattern to evaluate the situation?

I think if I get answers to those questions, I'll probably be able to understand the following aswell, but I'll mention them anyway.

  • How are patterns created? I saw that an approach is to assign static values to different squares of the game board, dependant of their current properties(color, stability). But then there is some iterative algorithm called.
  • So are patterns created on the fly e.g. while searching a tree? Or computed before and used like a mask?

I hope this question isn't too broad, but I got the impression that creation and use of patterns is some obvious common knowledge, that everyone does almost the same way, like use of alphabeta.

  • \$\begingroup\$ You can take a look at my basic open source implementation here: github.com/ShinDarth/Othello \$\endgroup\$ – Francesco Borzi May 12 '17 at 19:42
  • \$\begingroup\$ @ShinDarth I'm sry to ask this, but can you give me a further hint where to look, actually I'm not even sure what I have to look for...:( \$\endgroup\$ – Felix Crazzolara May 12 '17 at 19:59

This 1986 paper by Kai-Fu Lee of Carnegie Mellon University seems to be more focused on pattern classification. It's called A pattern classification approach to evaluation function learning.

Personally I struggle to understand the maths because I'm not very good with high level mathematics, but it seems that it's based on some sort of weighted summation of board features. Such features include "piece-count advantage, center control, and pawn structure".

Wikipedia also has a much simpler overview of pattern-based techniques.

Aparently there are also various pattern searching strategies that are worth looking into. For example here is an article about zero-window/null search (I know it's for chess, but chess and othello are somewhat similar in some respects).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.