PeSTO's Evaluation Function, different"bestmove" for each depth

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

pedrojdm2021
Posts: 157
Joined: Fri Apr 30, 2021 7:19 am
Full name: Pedro Duran

Re: PeSTO's Evaluation Function, different"bestmove" for each depth

Post by pedrojdm2021 »

lithander wrote: Sat Jul 17, 2021 1:15 pm PeSTO literally means "Piece Square Tables Only" but it's also the name of the strongest engine that uses such a simple evaluation and has made the approach popular. The set of values that PeSTO uses (or used at some point) have been posted on this forum by the author. So I think there are two interpretations where you could say an engine uses PeSTO:

(1) It uses tapered eval based on PSTs only and no other evaluation terms.
(2) It uses tapered eval based on PSTs only AND also uses the PST values from PeSTO which were published on this forum.

I personally first used PeSTO in the sense of (2) but never published that version.
Then I tuned my own set of PST-values which look and play distinctly different so version 0.4.1 of MinimalChess used PeSTO in the sense of (1).
Afterwards I added a 13th table for another dynamic, mobility and attacks based evaluation term so I'd say now I'm just using a simple tapered evaluation in version 0.5.
well i think i use your second point, i use the same exact tables that PeSTO engine uses, but as i mentioned before, i do add some extra features to the evaluation, not only the piece-square-tables
amanjpro
Posts: 883
Joined: Sat Mar 13, 2021 1:47 am
Full name: Amanj Sherwany

Re: PeSTO's Evaluation Function, different"bestmove" for each depth

Post by amanjpro »

pedrojdm2021 wrote: Mon Jul 19, 2021 2:49 am
lithander wrote: Sat Jul 17, 2021 1:15 pm PeSTO literally means "Piece Square Tables Only" but it's also the name of the strongest engine that uses such a simple evaluation and has made the approach popular. The set of values that PeSTO uses (or used at some point) have been posted on this forum by the author. So I think there are two interpretations where you could say an engine uses PeSTO:

(1) It uses tapered eval based on PSTs only and no other evaluation terms.
(2) It uses tapered eval based on PSTs only AND also uses the PST values from PeSTO which were published on this forum.

I personally first used PeSTO in the sense of (2) but never published that version.
Then I tuned my own set of PST-values which look and play distinctly different so version 0.4.1 of MinimalChess used PeSTO in the sense of (1).
Afterwards I added a 13th table for another dynamic, mobility and attacks based evaluation term so I'd say now I'm just using a simple tapered evaluation in version 0.5.
well i think i use your second point, i use the same exact tables that PeSTO engine uses, but as i mentioned before, i do add some extra features to the evaluation, not only the piece-square-tables
If you add any other eval term, then your psqt arrays are no longer optimal. As they are designed to work with exactly no other eval terms
pedrojdm2021
Posts: 157
Joined: Fri Apr 30, 2021 7:19 am
Full name: Pedro Duran

Re: PeSTO's Evaluation Function, different"bestmove" for each depth

Post by pedrojdm2021 »

amanjpro wrote: Mon Jul 19, 2021 2:56 am
pedrojdm2021 wrote: Mon Jul 19, 2021 2:49 am
lithander wrote: Sat Jul 17, 2021 1:15 pm PeSTO literally means "Piece Square Tables Only" but it's also the name of the strongest engine that uses such a simple evaluation and has made the approach popular. The set of values that PeSTO uses (or used at some point) have been posted on this forum by the author. So I think there are two interpretations where you could say an engine uses PeSTO:

(1) It uses tapered eval based on PSTs only and no other evaluation terms.
(2) It uses tapered eval based on PSTs only AND also uses the PST values from PeSTO which were published on this forum.

I personally first used PeSTO in the sense of (2) but never published that version.
Then I tuned my own set of PST-values which look and play distinctly different so version 0.4.1 of MinimalChess used PeSTO in the sense of (1).
Afterwards I added a 13th table for another dynamic, mobility and attacks based evaluation term so I'd say now I'm just using a simple tapered evaluation in version 0.5.
well i think i use your second point, i use the same exact tables that PeSTO engine uses, but as i mentioned before, i do add some extra features to the evaluation, not only the piece-square-tables
If you add any other eval term, then your psqt arrays are no longer optimal. As they are designed to work with exactly no other eval terms
well... bbc's engines uses the same approarch that i'm using and it works, bbc's uses the pesto tables + the mobility, pawn structre, and so on...
amanjpro
Posts: 883
Joined: Sat Mar 13, 2021 1:47 am
Full name: Amanj Sherwany

Re: PeSTO's Evaluation Function, different"bestmove" for each depth

Post by amanjpro »

pedrojdm2021 wrote: Mon Jul 26, 2021 6:12 am well... bbc's engines uses the same approarch that i'm using and it works, bbc's uses the pesto tables + the mobility, pawn structre, and so on...
Works doesn't mean works optimally. You can try it yourself. Remove all evaluation terms in your engine but the PeSTO arrays, and mrun a match between this version and the version with PeSTO and other eval terms. And see who will win the match (please have a long match of at least 1000 games)
niel5946
Posts: 174
Joined: Thu Nov 26, 2020 10:06 am
Full name: Niels Abildskov

Re: PeSTO's Evaluation Function, different"bestmove" for each depth

Post by niel5946 »

amanjpro wrote: Mon Jul 19, 2021 2:56 am If you add any other eval term, then your psqt arrays are no longer optimal. As they are designed to work with exactly no other eval terms
You are mostly right, but I would add that tuning the new eval terms will fit them to the PSQT arrays. When optimizing parameters in the evaluation function, they are optimized in such a way that they fit all other parameters. This is because the constant parameters also have a constant contribution to the overall error, so you can only reduce the part of the error that your un-optimized values gives.

Therefore, it should definitely be possible to add new terms (like pawn structure, mobility etc..) to PeSTO piece square tables, but it would require a - relatively - good optimization algorithm to gain elo from it. I don't know if all that tuning would be worth it though...
Author of Loki, a C++ work in progress.
Code | Releases | Progress Log |