Jan 11, 2007

[Other] Moving on

I finally got the futility pruning working as it should, though the gains seem very limited at the moment.

I am not quite sure what causes this. Probably a combination of alot of things, like inCheck checks being too costly and the evaluation being very fast as it is.

Perhaps down the line when other things get optimized and extended we will see more benefits from futility pruning.

But for now I am not going to use it. It introduces a risk of missing combinations for very little gain (atleast in Mediocre's current state).

So now it is time to move on to a big project. The hash tables. With zobrist keys and transposition tables and more.

10 comments:

Genorb said...

I did the quick test for Mediocre V.012b. The result is still very low: 11 over 600. The chess engines from the division 1 on my website are all avove 420. Mediocre found only 1 solution over 24. But this is normal, this is mainly due to the fact that Mediocre cannot reach a depth big enough with 1 minute.

I have tried to find some easier test on the web, like tests to estimate the ELO of players around 1500, but I found nothing.

But this is anyway a good test, because we start so low, we can follow easily the evolution of Mediocre. I am curious to make additional tests when the hash table will be implemented.

I have also some games played by Mediocre, I don't know if it can be useful for you. If you want just send me your email via my email that you can find on my website. So I could send you those games.

Genorb said...

Your chess engine played a competition here

http://f50.parsimony.net/forum200321/messages/16898.htm

and he did pretty well!!

It was games with 5 minutes for all moves.

Genorb said...

The link is HERE

Sorry

Jonatan Pettersson said...

Yeah, I was expecting that kind of result. Hopefully it will get a bit better with hashtables and some optimization of the code. But as you say it is good to have a starting point to compare with later.

I didn't realize Mediocre could actually win games against other engines. :) That's very encouraging.

You can now find my contact info on the main page. I didn't realize my e-mail wasn't there yet, it's mediocrechess@gmail.com.

I'm interested in any games played by Mediocre. I'm running mini tournaments every night myself, but it's hard to cover many different engines and setups.

Lars said...

I have run som games with mediocre and found that phalanx with the -e 1 switch is a good opponent. With this setting phalanx moves nearly instantly, but I guess it reches a deapth of 3 or 4. With default settings it has a rating of 2450 and it has a pretty good evaluation. Mediocre wins most of the games, but when it looses it's often because it doesen't seem know the power of rooks on the 7th rank and the imoprtance of passed pawns.

I also ran a profiling on the engine, and the fen-generation consumes about 35% of the cpu time. The zobrist keys should fix that...
The next methods on the list:
quisSort 20%
filterMoves 16%
sortMoves 9%

Lars said...

The cost of the quisSort method is probably due to the allocation of the 30 vectors.

Jonatan Pettersson said...

Wow, thank you. That was really interesting.

How did you do to see what method consumes the most cpu time? Seems extremely useful when optimizing.

Jonatan Pettersson said...

The vectors in the quisSort() method will be gone in the next version. It was a really clumsy way of doing it obviously, and not intented as a permanent feature. :)

Lars said...

I used the eclipse IDE (the IDE I use at work). It has a plugin suite called Test And Performance Tools Plattform(TPTP) wich also includes a profiler. I ran the engine in the IDE, feeding it commands manually. The TPTP profiler gives you time spent in each method, average time spent executing each method, the number og time each method was executed and so on.. Really handy for finding bottlenecks :)

Try eclipse.org - it's free, open source, and fast becoming a defacto standard in the business.

Jonatan Pettersson said...

Yeah I should try it.

I've been hesistant to using any sort of advanced developing environment since I'm allergic to code and files I didn't put there myself. :)

I'm using plain old VIM, configured to suite my needs.

But I guess I really should take the step up by now.

I think I'll give eclipse a go.