ENGINE SPEED AND STRONG

Discussion about development of draughts in the time of computer and Internet.
Post Reply
Joost Buijs
Posts: 471
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: ENGINE SPEED AND STRONG

Post by Joost Buijs » Fri Feb 17, 2017 08:47

Fabien Letouzey wrote:
Joost Buijs wrote:Well, I understood that Catherine uses the Kingsrow GUI to play the games against Scan and the standard DXP mode doesn't allow you to enter games with a duration of less than 1 minute, the Fisher DXP mode does, but maybe I'm completely wrong and she or he uses a different GUI or protocol.
I see, thanks. I assumed the same about the GUI, but that it used another DXP extension by Ed that uses syntax like "0.5" minute instead of Fischer. Catherine specifically mentioned 75 moves. I didn't even expect the Fischer extension to be publicly available in the GUI as, presumably, very few programs would be compatible with it.
You can enable Fisher mode in the GUI very easily, but you have to ask Ed because I don't know whether Ed wants this to be publicly known.

Joost

Ed Gilbert
Posts: 859
Joined: Sat Apr 28, 2007 14:53
Real name: Ed Gilbert
Location: Morristown, NJ USA
Contact:

Re: ENGINE SPEED AND STRONG

Post by Ed Gilbert » Fri Feb 17, 2017 13:23

Kingsrow does indeed allow game times like 0.5 minutes to be sent in the GAMEREQ message. I don't think Frank's description of the protocol actually prohibits sending a decimal point in the number. I did modify my local copy of scan to accept it. Also, a few people once asked for a version of scan that did not require the popcount intrinsic, which I provided. I don't remember if that version will accept fractional minutes for game times, but it's possible.

Kingsrow will not send the GAMEREQ_FISCHER message unless a configuration file is present that allows this. I have not published those details. Only Joost and another developer know how to enable it.

edit: my tests of bullet games between kingsrow and scan indicate that scan is stronger at very fast time controls (as well as longer games).

-- Ed

Ed Gilbert
Posts: 859
Joined: Sat Apr 28, 2007 14:53
Real name: Ed Gilbert
Location: Morristown, NJ USA
Contact:

Re: ENGINE SPEED AND STRONG

Post by Ed Gilbert » Fri Feb 17, 2017 13:37

You can enable Fisher mode in the GUI very easily, but you have to ask Ed because I don't know whether Ed wants this to be publicly known.
I was reluctant to enable Fischer mode by default because most engines will not understand it, and it will just cause problems for most kingsrow users. But of course I'll be happy to document the details of this extension if other developers are interested in supporting it.

-- Ed

Joost Buijs
Posts: 471
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: ENGINE SPEED AND STRONG

Post by Joost Buijs » Fri Feb 17, 2017 16:19

The ability to run sub minute games comes in very handy, the last day I made more progress tuning the search parameters than in the whole week before.

I've added fractional time to the standard GameReq as well, the internal timing routines were already sub microsecond floating point, it was just a matter of replacing std::stoi() by std::stod().

Joost

Catherine
Posts: 129
Joined: Tue Aug 14, 2012 22:24
Real name: Catherine Bourneuf

Re: ENGINE SPEED AND STRONG

Post by Catherine » Fri Feb 17, 2017 23:57

Hi to all,

For the fast games, i admit that it was with the "original" version of Scan, realeased and uploaded on Harm Jetten's site.

So i don't knew that 0.5 minutes/75 wasn't allowed into dxp protocol.
It was just for a test to see.

Like Ed said, in 1min Scan take the upper. It's the another only test that i done for the moment.
Sorry for this ignorance.

Also, it's no common to see a girl in such kind of forum, but i play since 10 years now, and i saw that all the games of GMI was analysed with programs , it the main reason of my big interest to engine.
Because i think, and it's my point of view, that they play most perfectly than GMI.
Best regard.

Catherine.

Sidiki
Posts: 322
Joined: Thu Jan 15, 2015 16:28
Real name: Coulibaly Sidiki

Re: ENGINE SPEED AND STRONG

Post by Sidiki » Sun Feb 19, 2017 10:08

TAILLE wrote:
Catherine wrote: Hi Taille,

By "max EGDB" i mean the maximum EGDB that can be built. And we know that if an engine own the biggest egdb and the eval function wich will have the goal to force complicated positions to force opponent to make mistake will be the best.

By "optimals egdb moves" i mean to reach the egdb, engines used to play the best moves to reach or the win or the draw inside the EGDB.

Just an example to resume all, i suppose that you have 2 engine A and B with the same eval function like SMP, BTW... Engine A has the 10 egdb and B has the 6 EGDB, the number of draws, even with this difference will be high.
Now if adding to the 10 egdb, engine A use this new eval function, it will win several games.

This it's what i tried to say.

Catherine
Hi Catherine,

Basically I agree with you but I am still studying a completly different approach in order to try and provoque mistakes.
Morning Taille,

That's a good idea.
Perhaps with the new generation of engines, Scan, Kingsrow, Argus, Damage and Dragon this will be a great challenge.

I mean, and it's in the same time a question because i am not very sure: to be able to provoque mistake from another engine, our's must be very deeper to play moves that the others engines will don't see that, the move that they played now it's good just for a certain time but really bad in the future.
Only to say that it must have a serious advance of search depth compared to the others.

It was the case with Kingsrow against the others programs from 2007 to 2009, it was unreacheable.
Same thing for Scan.
Now the level in general is almost the same between the top Programs already quoted. I haven't an idea concerning the actual level of Damy, but i suppose that it's the same level. Because it's also still in progress.

See for example his game in 2009 against Dream
Dream vs Kingsrow.pdn
(949 Bytes) Downloaded 726 times
--Sidiki

TAILLE
Posts: 968
Joined: Thu Apr 26, 2007 18:51
Location: FRANCE

Re: ENGINE SPEED AND STRONG

Post by TAILLE » Sun Feb 19, 2017 16:50

Sidiki wrote:Morning Taille,

That's a good idea.
Perhaps with the new generation of engines, Scan, Kingsrow, Argus, Damage and Dragon this will be a great challenge.

I mean, and it's in the same time a question because i am not very sure: to be able to provoque mistake from another engine, our's must be very deeper to play moves that the others engines will don't see that, the move that they played now it's good just for a certain time but really bad in the future.
Only to say that it must have a serious advance of search depth compared to the others.

It was the case with Kingsrow against the others programs from 2007 to 2009, it was unreacheable.
Same thing for Scan.
Now the level in general is almost the same between the top Programs already quoted. I haven't an idea concerning the actual level of Damy, but i suppose that it's the same level. Because it's also still in progress.

See for example his game in 2009 against Dream
Dream vs Kingsrow.pdn
--Sidiki
Hi Sidiki,

Of course if you change your program in order to play a more complicated move instead of the best move you must be confident that your opponent is a little weaker but you may try some changes that do not mean a large difference between the level of your opponent and the level of your program. In any case you must avoid chosing a move that may put your program in great trouble. The ideal situation for this is to have already a small advantage.
An example of very easy change is the following:
Suppose your program is the white side. When you evaluate a position with white to move you can for example add to your evaluation the number of pieces on the board (if it is black to play you substract this number). That way at the beginning of the game the evaluation is 40 for your program which is consistant because your program is considered the best one and your chances to win are good. As you see your program will try to avoid a passive exchange and the game may begin to become more complicated.
Gérard

Joost Buijs
Posts: 471
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: ENGINE SPEED AND STRONG

Post by Joost Buijs » Sun Feb 19, 2017 19:54

Hi,

Playing 'swindle' moves to avoid dead draws against a weaker opponent might work indeed, even against GMI, but it is not a good idea to play these type of moves against other computer opponents because there is a very big chance they will out calculate you.

I have an other approach, I want to have my engine play the strongest move as possible with the current state of technology. I still have a long way to go but I'm very curious to know how far my engine can be improved.

My engine is still very basic, just PVS with Probcut, LMR, SMP to make it faster, killers and history for move ordering, no other refinements yet. The last 3 days I tackled a lot of small issues, not really bugs but oversights, and it is already starting to play at a very decent level right now.

Still a lot of things to do though, right now I have the feeling that it will be better to let it rest for some days because it is not very healthy to spend so many hours behind the computer, at the least I'm getting squared eyes of it.

Joost

Catherine
Posts: 129
Joined: Tue Aug 14, 2012 22:24
Real name: Catherine Bourneuf

Re: ENGINE SPEED AND STRONG

Post by Catherine » Sun Feb 19, 2017 20:30

Joost Buijs wrote:Hi,

Playing 'swindle' moves to avoid dead draws against a weaker opponent might work indeed, even against GMI, but it is not a good idea to play these type of moves against other computer opponents because there is a very big chance they will out calculate you.

I have an other approach, I want to have my engine play the strongest move as possible with the current state of technology. I still have a long way to go but I'm very curious to know how far my engine can be improved.

My engine is still very basic, just PVS with Probcut, LMR, SMP to make it faster, killers and history for move ordering, no other refinements yet. The last 3 days I tackled a lot of small issues, not really bugs but oversights, and it is already starting to play at a very decent level right now.

Still a lot of things to do though, right now I have the feeling that it will be better to let it rest for some days because it is not very healthy to spend so many hours behind the computer, at the least I'm getting squared eyes of it.

Joost
Hi Joost,

That is mean that your engine got more strenght since the latest version that you uploaded for us ?
Did you found the way to avoid so many draws, it's the feeling that i had when i read your post.

What can be for you, the best way to avoid so many draws.
We will also be very very glad to try the latest version of your engine.

Thank
Catherine.

TAILLE
Posts: 968
Joined: Thu Apr 26, 2007 18:51
Location: FRANCE

Re: ENGINE SPEED AND STRONG

Post by TAILLE » Sun Feb 19, 2017 21:53

Joost Buijs wrote:Hi,

Playing 'swindle' moves to avoid dead draws against a weaker opponent might work indeed, even against GMI, but it is not a good idea to play these type of moves against other computer opponents because there is a very big chance they will out calculate you.

I have an other approach, I want to have my engine play the strongest move as possible with the current state of technology. I still have a long way to go but I'm very curious to know how far my engine can be improved.

My engine is still very basic, just PVS with Probcut, LMR, SMP to make it faster, killers and history for move ordering, no other refinements yet. The last 3 days I tackled a lot of small issues, not really bugs but oversights, and it is already starting to play at a very decent level right now.

Still a lot of things to do though, right now I have the feeling that it will be better to let it rest for some days because it is not very healthy to spend so many hours behind the computer, at the least I'm getting squared eyes of it.

Joost
Hi Joost,

I agree 100% with you and I also look for the strongest move, but, in the draughts context you cannot win if your opponent do not make a mistake. As a consequence my feeling is that the strongest moves are those creating greatest difficulties for the opponent.
If you choose a strong positionnel move but your opponent cannot really miss the following sequence for the 10 following moves then it may appear that another move may be far better to try and provoque a mistake. In other words your strong positionnel move is certainly the best one to avoid losing but not the best move for trying to win.
Here is my approach: instead of playing the best move to avoid losing I look for the best move to try to win without taking too many risks of losing.
As you see the point is the following : in a drawing game like draughts what do we mean by "strongest move" ?
What is your own definition?
Gérard

Joost Buijs
Posts: 471
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: ENGINE SPEED AND STRONG

Post by Joost Buijs » Sun Feb 19, 2017 23:35

TAILLE wrote:
Joost Buijs wrote:Hi,

Playing 'swindle' moves to avoid dead draws against a weaker opponent might work indeed, even against GMI, but it is not a good idea to play these type of moves against other computer opponents because there is a very big chance they will out calculate you.

I have an other approach, I want to have my engine play the strongest move as possible with the current state of technology. I still have a long way to go but I'm very curious to know how far my engine can be improved.

My engine is still very basic, just PVS with Probcut, LMR, SMP to make it faster, killers and history for move ordering, no other refinements yet. The last 3 days I tackled a lot of small issues, not really bugs but oversights, and it is already starting to play at a very decent level right now.

Still a lot of things to do though, right now I have the feeling that it will be better to let it rest for some days because it is not very healthy to spend so many hours behind the computer, at the least I'm getting squared eyes of it.

Joost
Hi Joost,

I agree 100% with you and I also look for the strongest move, but, in the draughts context you cannot win if your opponent do not make a mistake. As a consequence my feeling is that the strongest moves are those creating greatest difficulties for the opponent.
If you choose a strong positionnel move but your opponent cannot really miss the following sequence for the 10 following moves then it may appear that another move may be far better to try and provoque a mistake. In other words your strong positionnel move is certainly the best one to avoid losing but not the best move for trying to win.
Here is my approach: instead of playing the best move to avoid losing I look for the best move to try to win without taking too many risks of losing.
As you see the point is the following : in a drawing game like draughts what do we mean by "strongest move" ?
What is your own definition?
Hi Gérard,

That is a difficult question, there are many different definitions of what can be the strongest move. For instance the move that wins the game in the shortest number of moves, or the move that gives you the highest win rate, or te move that gives you the highest chance to win. Playing what might be a lesser move in the hope that the opponent does not look deep enough to see the refutation is not my definition of the strongest move. Normally you want to play a move that gives you the highest positional outlook at the greatest depth which usually gives the opponent the most difficulties by putting pressure on him.

I never dealt with a game with a very high draw rate like draughts before, it is possible that engines like Kingsrow and Scan are already near or at the highest level reachable. On the other hand I think that you can encode only a small subset of draughts knowledge in the 4x4 patterns that are currently in use by the top engines and that there is still enough room for improvement, time will tell I guess.

If the game is really as dull as it appears to be than I suppose it is time to switch to something else like killer draughts.

Joost

TAILLE
Posts: 968
Joined: Thu Apr 26, 2007 18:51
Location: FRANCE

Re: ENGINE SPEED AND STRONG

Post by TAILLE » Mon Feb 20, 2017 00:09

Joost Buijs wrote:
TAILLE wrote:
Joost Buijs wrote:Hi,

Playing 'swindle' moves to avoid dead draws against a weaker opponent might work indeed, even against GMI, but it is not a good idea to play these type of moves against other computer opponents because there is a very big chance they will out calculate you.

I have an other approach, I want to have my engine play the strongest move as possible with the current state of technology. I still have a long way to go but I'm very curious to know how far my engine can be improved.

My engine is still very basic, just PVS with Probcut, LMR, SMP to make it faster, killers and history for move ordering, no other refinements yet. The last 3 days I tackled a lot of small issues, not really bugs but oversights, and it is already starting to play at a very decent level right now.

Still a lot of things to do though, right now I have the feeling that it will be better to let it rest for some days because it is not very healthy to spend so many hours behind the computer, at the least I'm getting squared eyes of it.

Joost
Hi Joost,

I agree 100% with you and I also look for the strongest move, but, in the draughts context you cannot win if your opponent do not make a mistake. As a consequence my feeling is that the strongest moves are those creating greatest difficulties for the opponent.
If you choose a strong positionnel move but your opponent cannot really miss the following sequence for the 10 following moves then it may appear that another move may be far better to try and provoque a mistake. In other words your strong positionnel move is certainly the best one to avoid losing but not the best move for trying to win.
Here is my approach: instead of playing the best move to avoid losing I look for the best move to try to win without taking too many risks of losing.
As you see the point is the following : in a drawing game like draughts what do we mean by "strongest move" ?
What is your own definition?
Hi Gérard,

That is a difficult question, there are many different definitions of what can be the strongest move. For instance the move that wins the game in the shortest number of moves, or the move that gives you the highest win rate, or te move that gives you the highest chance to win. Playing what might be a lesser move in the hope that the opponent does not look deep enough to see the refutation is not my definition of the strongest move. Normally you want to play a move that gives you the highest positional outlook at the greatest depth which usually gives the opponent the most difficulties by putting pressure on him.

I never dealt with a game with a very high draw rate like draughts before, it is possible that engines like Kingsrow and Scan are already near or at the highest level reachable. On the other hand I think that you can encode only a small subset of draughts knowledge in the 4x4 patterns that are currently in use by the top engines and that there is still enough room for improvement, time will tell I guess.

If the game is really as dull as it appears to be than I suppose it is time to switch to something else like killer draughts.

Joost
As far as I am comcerned I am quite sure we can still improve our programs but we change change our approach. How a programmer works today? He plays a match against another program, he looks at each game his programs has lost and he tries to modify his program accordingly. Obvioulsly the process converges towards 100% draws. Instead of correcting the mistakes identified, why not anlysing the kind of move that provoqued a mistake in order to play such move more often? Are you sure you cannot discover new ideas to win more often?
Gérard

MichelG
Posts: 244
Joined: Sun Dec 28, 2003 20:24
Contact:

Re: ENGINE SPEED AND STRONG

Post by MichelG » Mon Feb 20, 2017 12:45

Joost Buijs wrote:
Hi Gérard,

That is a difficult question, there are many different definitions of what can be the strongest move. For instance the move that wins the game in the shortest number of moves, or the move that gives you the highest win rate, or te move that gives you the highest chance to win. Playing what might be a lesser move in the hope that the opponent does not look deep enough to see the refutation is not my definition of the strongest move. Normally you want to play a move that gives you the highest positional outlook at the greatest depth which usually gives the opponent the most difficulties by putting pressure on him.

I never dealt with a game with a very high draw rate like draughts before, it is possible that engines like Kingsrow and Scan are already near or at the highest level reachable. On the other hand I think that you can encode only a small subset of draughts knowledge in the 4x4 patterns that are currently in use by the top engines and that there is still enough room for improvement, time will tell I guess.

If the game is really as dull as it appears to be than I suppose it is time to switch to something else like killer draughts.

Joost
I used to have a killer draughts option in dragon. The number of non-draws is larger than in normal draughts, but not dramatically so.

So where normal draughts gives you a 10% non-draw rate, killer might give you 30%. As the playing level increases, the number of non-draws slowly converge to 0 for both games.

Another idea is to support plusdraws; that is used in actual tournaments. Does anyone have any statistics on that?

One complication for programmers is that the value of a plusdraw as defined by the kndb is strongly depended on the tournament conditions, most notably the number of games to be played.

Michel

Sidiki
Posts: 322
Joined: Thu Jan 15, 2015 16:28
Real name: Coulibaly Sidiki

Re: ENGINE SPEED AND STRONG

Post by Sidiki » Mon Feb 20, 2017 19:32

MichelG wrote:
Joost Buijs wrote:
Hi Gérard,

That is a difficult question, there are many different definitions of what can be the strongest move. For instance the move that wins the game in the shortest number of moves, or the move that gives you the highest win rate, or te move that gives you the highest chance to win. Playing what might be a lesser move in the hope that the opponent does not look deep enough to see the refutation is not my definition of the strongest move. Normally you want to play a move that gives you the highest positional outlook at the greatest depth which usually gives the opponent the most difficulties by putting pressure on him.

I never dealt with a game with a very high draw rate like draughts before, it is possible that engines like Kingsrow and Scan are already near or at the highest level reachable. On the other hand I think that you can encode only a small subset of draughts knowledge in the 4x4 patterns that are currently in use by the top engines and that there is still enough room for improvement, time will tell I guess.

If the game is really as dull as it appears to be than I suppose it is time to switch to something else like killer draughts.

Joost
I used to have a killer draughts option in dragon. The number of non-draws is larger than in normal draughts, but not dramatically so.

So where normal draughts gives you a 10% non-draw rate, killer might give you 30%. As the playing level increases, the number of non-draws slowly converge to 0 for both games.

Michel
Hi all,

If we go to the principle that in killer draughts the number of non-draw is larger than in normal draughts, that's mean that killer draughts use another kind of egdb?
Because i suppose that the edgb take into account all the endgame possible positions.

--Sidiki

Joost Buijs
Posts: 471
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: ENGINE SPEED AND STRONG

Post by Joost Buijs » Mon Feb 20, 2017 23:31

Sidiki wrote:
MichelG wrote:
Joost Buijs wrote:
Hi Gérard,

That is a difficult question, there are many different definitions of what can be the strongest move. For instance the move that wins the game in the shortest number of moves, or the move that gives you the highest win rate, or te move that gives you the highest chance to win. Playing what might be a lesser move in the hope that the opponent does not look deep enough to see the refutation is not my definition of the strongest move. Normally you want to play a move that gives you the highest positional outlook at the greatest depth which usually gives the opponent the most difficulties by putting pressure on him.

I never dealt with a game with a very high draw rate like draughts before, it is possible that engines like Kingsrow and Scan are already near or at the highest level reachable. On the other hand I think that you can encode only a small subset of draughts knowledge in the 4x4 patterns that are currently in use by the top engines and that there is still enough room for improvement, time will tell I guess.

If the game is really as dull as it appears to be than I suppose it is time to switch to something else like killer draughts.

Joost
I used to have a killer draughts option in dragon. The number of non-draws is larger than in normal draughts, but not dramatically so.

So where normal draughts gives you a 10% non-draw rate, killer might give you 30%. As the playing level increases, the number of non-draws slowly converge to 0 for both games.

Michel
Hi all,

If we go to the principle that in killer draughts the number of non-draw is larger than in normal draughts, that's mean that killer draughts use another kind of egdb?
Because i suppose that the edgb take into account all the endgame possible positions.

--Sidiki
Since the rules of killer draughts are different you need another egdb for it, I believe that Michel is the only one who calculated an egdb for it.

For the time being I will keep working on my normal draughts engine, it is nowhere near finished yet, I want to add larger patterns to it's evaluation function and this alone is already a project of several weeks or months before all the weights are tuned. In the future I will add killer draughts to it as an option.

Joost

Post Reply