Feb 26, 2007

[New Version] v0.23b - Evaluation

Changes:
  • Completely new evaluation, now accounts for king attacks, pawn evaluation and more
  • Check extension added
  • Draw repetition is now accounted for in the search tree as well
  • A bug concerning contempt factor was fixed
  • Piece lists added, no more 120 loops
  • Now gives correct mate count (and not just a high number) for both uci and winboard, but evaluations from the transposition tables gives the count when the mate was found (this is on the todo-list)
  • The broken 'force' mode in winboard should now be fixed
  • Winboard protocol now sends the score when the game is finished (still needs some work)
Note: The evaluation is an ongoing process and not a one time implementation. There are still a lot of adjustments to be done.

I decided to include jlaunch in this release since people have been complaining about Mediocre not working in the Shredder and Chessbase interfaces. I might not include this in the future but simply link to it.

mediocre_v0.23b

6 comments:

Anonymous said...

I've been testing the new version of Mediocre and it periodically crashes when I run it in Winboard with this exception in the debug file:

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at Board.pieceTypeOnIndex(Board.java:681)
at Mediocre.isGameOver(Mediocre.java:586)
at Mediocre.winBoard(Mediocre.java:481)
at Mediocre.main(Mediocre.java:40)"

I haven't looked at the code, but it sounds like there is a bug in the piece lists here.

Anonymous said...

After watching some more games, it looks like the crash always happens just after the black a-pawn is captured. I imagine that should narrow things down a bit.

Jonatan Pettersson said...

I did have some problems with a similar bug before, but it was fixed. Seems like there is another one somewhere, thanks for the information I'll look into it.

Anonymous said...

Good News...

I have done the "quick test" for the last release of Mediocre. Here are a recall of the results

Mediocre 0.12b : 11/600
Mediocre 0.20b : 16/600
Mediocre 0.22b : 0/600
Mediocre 0.23b : 45/600

The last version of Mediocre was able to find 2 solutions (very quickly: 1 and 3 seconds). He was almost able to find a third one, he started to look at the good solution and finally chosed another one. And it should also be able to find a mat in 7 that he didn't find (the version 0.2b found it). So there is still (easily) room for improvement according this test!

Keep on your good work.

Anonymous said...

Your evaluation improved is noticeable.

The check extension suffers from the following problem: If some move is extended, it won't be recalculated in the next step because the hash table already contains a solution; perhaps you should store an extended move with the search depth it would obtain if it were not extended.

Your nullmove implementation (inherited from the former versions) is more risky than the common implementation that only extends moves with depth>R+1. You gain some speed with your way of doing nullmove, but you also miss some short checkmates - I don't know which is more important.

Jonatan Pettersson said...

fritz that is really interesting, I will take a look at both those.

The null move I was semi aware of, I tried only using it for deeper depths but somehow I always seemed to lose strength while doing so. This was a while ago though so perhaps things have changed.

The check extension thing is very interesting, that needs to be taken care of.