Crude, cruder, crudest

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

arjuntemurnikar
Posts: 204
Joined: Tue Oct 15, 2013 10:22 pm
Location: Singapore

Re: Crude, cruder, crudest

Post by arjuntemurnikar »

arjuntemurnikar wrote:Your patch tested against current stockfish master:

Code: Select all

bench:7079249

TC=2"+0.02
234 - 557 - 409  [0.365] 1200
ELO difference: -96

TC=5"+0.05
33 - 72 - 95  [0.403] 200
ELO difference: -65
Quite Frankly, nope.

I modified only the PSQT values as you provided and nothing else in the code. So yes, probably tons of clashes with existing code in evaluation function. The thing is, PSQT may be lacking in knowledge, but it is made up for by the evaluation function. I think a better way to approach this problem, as a simplification, is to remove the tables completely and incorporate its knowledge into the evaluation function directly. It is a rather tedious task and would require "finding the right values" all over again, so for now, we have to make do with the tables. I don't like them very much, cosmetically speaking... But that's just me.
Lyudmil Tsvetkov
Posts: 6052
Joined: Tue Jun 12, 2012 12:41 pm

Re: Crude, cruder, crudest

Post by Lyudmil Tsvetkov »

arjuntemurnikar wrote:
arjuntemurnikar wrote:Your patch tested against current stockfish master:

Code: Select all

bench:7079249

TC=2"+0.02
234 - 557 - 409  [0.365] 1200
ELO difference: -96

TC=5"+0.05
33 - 72 - 95  [0.403] 200
ELO difference: -65
Quite Frankly, nope.

I modified only the PSQT values as you provided and nothing else in the code. So yes, probably tons of clashes with existing code in evaluation function. The thing is, PSQT may be lacking in knowledge, but it is made up for by the evaluation function. I think a better way to approach this problem, as a simplification, is to remove the tables completely and incorporate its knowledge into the evaluation function directly. It is a rather tedious task and would require "finding the right values" all over again, so for now, we have to make do with the tables. I don't like them very much, cosmetically speaking... But that's just me.
Thanks for the test Arjun! Helpful.

I am surprised at the number of wins the modified version achieved, and also being only less than 100 elo weaker. When you look at it, almost everything is modified. So maybe there is something promising about the new values too.

An interesting experiment would be trying the new tables one at a time to see how they perform. But of course, you are right, you can change values only if you know ALL the engine's eval and search parameters by heart, and know how they perform, otherwise it is just blind-tuning.
arjuntemurnikar
Posts: 204
Joined: Tue Oct 15, 2013 10:22 pm
Location: Singapore

Re: Crude, cruder, crudest

Post by arjuntemurnikar »

Lyudmil Tsvetkov wrote: I am surprised at the number of wins the modified version achieved, and also being only less than 100 elo weaker. When you look at it, almost everything is modified. So maybe there is something promising about the new values too.
Wow, I admire your optimism.
Ralph Stoesser
Posts: 408
Joined: Sat Mar 06, 2010 9:28 am

Re: Crude, cruder, crudest

Post by Ralph Stoesser »

Lyudmil Tsvetkov wrote:
syzygy wrote:
Lyudmil Tsvetkov wrote:The values are optimal, would say much better than the original ones.
Of course they are!
I mean, those are simple things, when the original values would score pawn on the 5th rank higher than pawn on the 6th, or queen on the 7th higher than queen on the 6th, or knight on the 7th even negatively, you quickly observe there is really something wrong with the values that does not reflect general chess knowledge.

Miguel is right, and you understand that quite well, that in a pool of terms even a term with a negative sign to what its real meaning would suggest could score well. It is the sum total that counts, and not the separate values.

However, on many occasions, if you do not follow general chess rules, I think this is more like a guesswork. I would prefer to have things straight with clear eval parameters based on general chess knowledge. This simplifies things a lot.

I would bet for example, that Stockfish with those psqt values and space removed; outposts removed; bonus for rook and queen on 7th and 8th ranks removed would perform much better than what the first sample of Jean-Paul suggests with no other modifications. It would still be weaker than original Stockfish, because mobility and other parameters would still be out of tune with the modified psqt, but would perform better than the first sample.

I think it is good to have outposts, space, rook on 7th, etc., in one and the same table, do not you think so?
Most of the predefined evaluation parameters are automatically tuned. If you change something by hand it will hurt in general, except you have enough knowlegde about the engine's inner workings and can spot a weak point here or there. It is very hard to keep things simple regarding "general chess knowledge". If you start with a new evaluation from scratch and let's say setup your PSQTs first, all is well. But now you have to add piece mobility and that overlaps with PSQTs to a degree. Now you could autotune PSQTs and mobility with some algorithms. General chess knowledge and simplicitiy are gone to a dregree at that point, but engine strength has is increased and that is what we want in the first place. Chess engines have their own principles of knowlegde and most of the time it is different from our knowlegde. Pawn structure knowlegde for example is an exception because it is rather similar to human knowledge, but eval in general doesn't contain much of the typical human knowlege, but knowlege that has been proven to work over many years of engine development. Do you count how many checks from safe squares you have for your assessment of king safety? Do you count piece mobility in every position you calculate? It works in engines but not for humans. Humans use pattern detection, engines have to count beans. That is a very different kind of "knowledge".
Lyudmil Tsvetkov
Posts: 6052
Joined: Tue Jun 12, 2012 12:41 pm

Re: Crude, cruder, crudest

Post by Lyudmil Tsvetkov »

Ralph Stoesser wrote:
Lyudmil Tsvetkov wrote:
syzygy wrote:
Lyudmil Tsvetkov wrote:The values are optimal, would say much better than the original ones.
Of course they are!
I mean, those are simple things, when the original values would score pawn on the 5th rank higher than pawn on the 6th, or queen on the 7th higher than queen on the 6th, or knight on the 7th even negatively, you quickly observe there is really something wrong with the values that does not reflect general chess knowledge.

Miguel is right, and you understand that quite well, that in a pool of terms even a term with a negative sign to what its real meaning would suggest could score well. It is the sum total that counts, and not the separate values.

However, on many occasions, if you do not follow general chess rules, I think this is more like a guesswork. I would prefer to have things straight with clear eval parameters based on general chess knowledge. This simplifies things a lot.

I would bet for example, that Stockfish with those psqt values and space removed; outposts removed; bonus for rook and queen on 7th and 8th ranks removed would perform much better than what the first sample of Jean-Paul suggests with no other modifications. It would still be weaker than original Stockfish, because mobility and other parameters would still be out of tune with the modified psqt, but would perform better than the first sample.

I think it is good to have outposts, space, rook on 7th, etc., in one and the same table, do not you think so?
Most of the predefined evaluation parameters are automatically tuned. If you change something by hand it will hurt in general, except you have enough knowlegde about the engine's inner workings and can spot a weak point here or there. It is very hard to keep things simple regarding "general chess knowledge". If you start with a new evaluation from scratch and let's say setup your PSQTs first, all is well. But now you have to add piece mobility and that overlaps with PSQTs to a degree. Now you could autotune PSQTs and mobility with some algorithms. General chess knowledge and simplicitiy are gone to a dregree at that point, but engine strength has is increased and that is what we want in the first place. Chess engines have their own principles of knowlegde and most of the time it is different from our knowlegde. Pawn structure knowlegde for example is an exception because it is rather similar to human knowledge, but eval in general doesn't contain much of the typical human knowlege, but knowlege that has been proven to work over many years of engine development. Do you count how many checks from safe squares you have for your assessment of king safety? Do you count piece mobility in every position you calculate? It works in engines but not for humans. Humans use pattern detection, engines have to count beans. That is a very different kind of "knowledge".
If an engine could do well with relatively imprecise chess knowledge terms, that are however tuned sufficiently, it could certainly do much better if using more precise chess knowledge terms. The problem is tuning. If not anything, I would at least look at the pawn and rook psqts. They are indeed suspiciously written.

Yes, I do know that when I am able to deliver check, that gives me a certain advantage, but I often miss the detailed implementation. Yes, humans sense when their mobility is dangerously low or very promising, but they take into consideration in a bit more cruder way then engines. So that basically all human knowledge is implementable in engines and vice-versa, it is just that engines rarely miss some position details as humans do.
Lyudmil Tsvetkov
Posts: 6052
Joined: Tue Jun 12, 2012 12:41 pm

Re: Crude, cruder, crudest

Post by Lyudmil Tsvetkov »

arjuntemurnikar wrote:
Lyudmil Tsvetkov wrote: I am surprised at the number of wins the modified version achieved, and also being only less than 100 elo weaker. When you look at it, almost everything is modified. So maybe there is something promising about the new values too.
Wow, I admire your optimism.
But basically, I changed every single value in the 5 other tables apart from the king table. On many occasions I also changed values that were set as constants for either the middlegame or endgame, to values that already differ. You can not expect much better performance with that.
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: Crude, cruder, crudest

Post by velmarin »

Hi, Lyudmil,
That review of Static Ippolit.

Here at least is far centipawns really, not as in Stockfish.

Opinion?

Code: Select all

static const int PawnOpening [64] =
{

	  0,   0,   0,   0,   0,   0,   0,   0,      // SIDE WHITE  A1.........H1
	-23, -11,  -5,   2,   2,  -5, -11, -23,
	-22, -10,  -4,   3,   3,  -4, -10, -22,
	-21,  -9,  -3,   4,   4,  -3,  -9, -21,
	-19,  -7,  -1,   6,   6,  -1,  -7, -19,
	-18,  -6,   0,   7,   7,   0,  -6, -18,
	-17,  -5,   1,   8,   8,   1,  -5, -17,
	  0,   0,   0,   0,   0,   0,   0,   0     // SIDE BLACK  A8.........H8
};
static const int  PawnEndgame [64] =
{
	 0,   0,   0,   0,   0,   0,   0,   0,
	-7,  -9, -11, -13, -13, -11,  -9,  -7,
	-7,  -9, -11, -13, -13, -11,  -9,  -7,
	-6,  -8, -10, -12, -12, -10,  -8,  -6,
	-5,  -7,  -9, -11, -11,  -9,  -7,  -5,
	-4,  -6,  -8, -10, -10,  -8,  -6,  -4,
	-2,  -4,  -6,  -8,  -8,  -6,  -4,  -2,
	 0,   0,   0,   0,   0,   0,   0,   0
};
static const int  KnightOpening [64] =
{
	-58,  -42, -31, -27, -27, -31,  -42, -58,
	-36,  -20,  -9,  -5,  -5,  -9,  -20, -36,
	-20,   -4,   7,  11,  11,   7,   -4, -20,
	-11,    5,  16,  20,  20,  16,    5, -11,
	 -5,   11,  22,  26,  26,  22,   11,  -5,
	 -7,    9,  20,  24,  24,  20,    9,  -7,
	-16,   10,  11,  15,  15,  11,   10, -16,
	-120, -21, -10,  -6,  -6, -10,  -21,-120
};
static const int  KnightEndgame[64] =
{
	-22, -17, -12,  -9,  -9, -12, -17, -22,
	-15,  -8,  -4,  -2,  -2,  -4,  -8, -15,
	-10,  -4,   1,   3,   3,   1,  -4, -10,
	 -6,  -1,   4,   8,   8,   4,  -1,  -6,
 	 -4,   1,   6,  10,  10,   6,   1,  -4,
	 -3,   3,   8,  10,  10,   8,   3,  -3,
	 -8,  -1,   3,   5,   5,   3,  -1,  -8,
	-15, -10,  -5,  -2,  -2,  -5, -10, -15
};
static const int  BishopOpening [64] =
{
	-7,   -8, -11, -13, -13, -11,  -8,  -7,
	-3,    3,   0,  -2,  -2,   0,   3,  -3,
	-6,    0,   7,   6,   6,   7,   0,  -6,
	-8,   -2,   6,  15,  15,   6,  -2,  -8,
	-8,   -2,   6,  15,  15,   6,  -2,  -8,
	-6,    0,   7,   6,   6,   7,   0,  -6,
	-3,    3,   0,  -2,  -2,   0,   3,  -3,
	-2,   -3,  -6,  -8,  -8,  -6,  -3,  -2
};
static const int  BishopEndgame [64] =
{
	 0,  -1,  -2,  -2,  -2,  -2,  -1,   0,
	-1,   1,   0,   0,   0,   0,   1,  -1,
	-2,   0,   3,   2,   2,   3,   0,  -2,
	-2,   0,   2,   5,   5,   2,   0,  -2,
	-2,   0,   2,   5,   5,   2,   0,  -2,
	-2,   0,   3,   2,   2,   3,   0,  -2,
	-1,   1,   0,   0,   0,   0,   1,  -1,
	 0,  -1,  -2,  -2,  -2,  -2,  -1,   0
};
static const int RookOpening [64] =
{
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4
};
static const int  RookEndgame [64] =
{
	0,   0,   0,   0,   0,   0,   0,   0,  
	0,   0,   0,   0,   0,   0,   0,   0,  
	0,   0,   0,   0,   0,   0,   0,   0,  
	0,   0,   0,   0,   0,   0,   0,   0,  
	1,   1,   1,   1,   1,   1,   1,   1,
	1,   1,   1,   1,   1,   1,   1,   1,
	1,   1,   1,   1,   1,   1,   1,   1,
   -2,  -2,  -2,  -2,  -2,  -2,  -2,  -2
};
static const int  QueenOpening [64] =
{
	-16, -12,  -9,  -7,  -7,  -9, -12, -16,
	 -7,  -1,   1,   3,   3,   1,  -1,  -7,
	 -4,   1,   5,   6,   6,   5,   1,  -4,
	 -2,   3,   6,   9,   9,   6,   3,  -2,
	 -2,   3,   6,   9,   9,   6,   3,  -2,
	 -4,   1,   5,   6,   6,   5,   1,  -4,
	 -7,  -1,   1,   3,   3,   1,  -1,  -7,
	-11,  -7,  -4,  -2,  -2,  -4,  -7, -11
};
static const int  QueenEndgame [64] =
{
	-15, -10,  -8,  -7,  -7,  -8,  -10,  -15,
	-10,  -5,  -3,  -2,  -2,  -3,   -5,  -10,
	 -8,  -3,   0,   2,   2,   0,   -3,   -8,
	 -7,  -2,   2,   5,   5,   2,   -2,   -7,
	 -7,  -2,   2,   5,   5,   2,   -2,   -7,
	 -8,  -3,   0,   2,   2,   0,   -3,   -8,
	-10,  -5,  -3,  -2,  -2,  -3,   -5,  -10,
	-15, -10,  -8,  -7,  -7,  -8,  -10,  -15
};
static const int  KingOpening [64] =
{
	44,  49,  19,   -1,  -1,  19,  49,   44,
	44,  49,  19,   -1,  -1,  19,  49,   44,
	38,  43,  13,   -7,  -7,  13,  43,   38,
	35,  40,  10,  -10, -10,  10,  40,   35,
	30,  35,   5,  -15, -15,   5,  35,   30,
	25,  30,   0,  -20, -20,   0,  30,   25,
	15,  20, -10,  -30, -30, -10,  20,   15,
	 5,  10, -20,  -40, -40, -20,  10,    5
};
static const int  KingEndgame [64] =
{
	-73,  -50,  -34,  -28,  -28,  -34,  -50,  -73, 
	-40,  -15,   -3,    3,    3,   -3,  -15,  -40, 
	-29,   -8,    7,   13,   13,    7,   -8,  -29, 
	-23,   -2,   13,   22,   22,   13,   -2,  -23, 
	-18,    3,   18,   27,   27,   18,    3,  -18, 
	-24,   -3,   12,   18,   18,   12,   -3,  -24, 
	-35,  -10,    2,    8,    8,    2,  -10,  -35, 
	-53,  -30,  -14,   -8,   -8,  -14,  -30,  -53

};
Lyudmil Tsvetkov
Posts: 6052
Joined: Tue Jun 12, 2012 12:41 pm

Re: Crude, cruder, crudest

Post by Lyudmil Tsvetkov »

velmarin wrote:Hi, Lyudmil,
That review of Static Ippolit.

Here at least is far centipawns really, not as in Stockfish.

Opinion?

Code: Select all

static const int PawnOpening [64] =
{

	  0,   0,   0,   0,   0,   0,   0,   0,      // SIDE WHITE  A1.........H1
	-23, -11,  -5,   2,   2,  -5, -11, -23,
	-22, -10,  -4,   3,   3,  -4, -10, -22,
	-21,  -9,  -3,   4,   4,  -3,  -9, -21,
	-19,  -7,  -1,   6,   6,  -1,  -7, -19,
	-18,  -6,   0,   7,   7,   0,  -6, -18,
	-17,  -5,   1,   8,   8,   1,  -5, -17,
	  0,   0,   0,   0,   0,   0,   0,   0     // SIDE BLACK  A8.........H8
};
static const int  PawnEndgame [64] =
{
	 0,   0,   0,   0,   0,   0,   0,   0,
	-7,  -9, -11, -13, -13, -11,  -9,  -7,
	-7,  -9, -11, -13, -13, -11,  -9,  -7,
	-6,  -8, -10, -12, -12, -10,  -8,  -6,
	-5,  -7,  -9, -11, -11,  -9,  -7,  -5,
	-4,  -6,  -8, -10, -10,  -8,  -6,  -4,
	-2,  -4,  -6,  -8,  -8,  -6,  -4,  -2,
	 0,   0,   0,   0,   0,   0,   0,   0
};
static const int  KnightOpening [64] =
{
	-58,  -42, -31, -27, -27, -31,  -42, -58,
	-36,  -20,  -9,  -5,  -5,  -9,  -20, -36,
	-20,   -4,   7,  11,  11,   7,   -4, -20,
	-11,    5,  16,  20,  20,  16,    5, -11,
	 -5,   11,  22,  26,  26,  22,   11,  -5,
	 -7,    9,  20,  24,  24,  20,    9,  -7,
	-16,   10,  11,  15,  15,  11,   10, -16,
	-120, -21, -10,  -6,  -6, -10,  -21,-120
};
static const int  KnightEndgame[64] =
{
	-22, -17, -12,  -9,  -9, -12, -17, -22,
	-15,  -8,  -4,  -2,  -2,  -4,  -8, -15,
	-10,  -4,   1,   3,   3,   1,  -4, -10,
	 -6,  -1,   4,   8,   8,   4,  -1,  -6,
 	 -4,   1,   6,  10,  10,   6,   1,  -4,
	 -3,   3,   8,  10,  10,   8,   3,  -3,
	 -8,  -1,   3,   5,   5,   3,  -1,  -8,
	-15, -10,  -5,  -2,  -2,  -5, -10, -15
};
static const int  BishopOpening [64] =
{
	-7,   -8, -11, -13, -13, -11,  -8,  -7,
	-3,    3,   0,  -2,  -2,   0,   3,  -3,
	-6,    0,   7,   6,   6,   7,   0,  -6,
	-8,   -2,   6,  15,  15,   6,  -2,  -8,
	-8,   -2,   6,  15,  15,   6,  -2,  -8,
	-6,    0,   7,   6,   6,   7,   0,  -6,
	-3,    3,   0,  -2,  -2,   0,   3,  -3,
	-2,   -3,  -6,  -8,  -8,  -6,  -3,  -2
};
static const int  BishopEndgame [64] =
{
	 0,  -1,  -2,  -2,  -2,  -2,  -1,   0,
	-1,   1,   0,   0,   0,   0,   1,  -1,
	-2,   0,   3,   2,   2,   3,   0,  -2,
	-2,   0,   2,   5,   5,   2,   0,  -2,
	-2,   0,   2,   5,   5,   2,   0,  -2,
	-2,   0,   3,   2,   2,   3,   0,  -2,
	-1,   1,   0,   0,   0,   0,   1,  -1,
	 0,  -1,  -2,  -2,  -2,  -2,  -1,   0
};
static const int RookOpening [64] =
{
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4,
	-4,   0,   4,   8,    8,    4,  0,   -4
};
static const int  RookEndgame [64] =
{
	0,   0,   0,   0,   0,   0,   0,   0,  
	0,   0,   0,   0,   0,   0,   0,   0,  
	0,   0,   0,   0,   0,   0,   0,   0,  
	0,   0,   0,   0,   0,   0,   0,   0,  
	1,   1,   1,   1,   1,   1,   1,   1,
	1,   1,   1,   1,   1,   1,   1,   1,
	1,   1,   1,   1,   1,   1,   1,   1,
   -2,  -2,  -2,  -2,  -2,  -2,  -2,  -2
};
static const int  QueenOpening [64] =
{
	-16, -12,  -9,  -7,  -7,  -9, -12, -16,
	 -7,  -1,   1,   3,   3,   1,  -1,  -7,
	 -4,   1,   5,   6,   6,   5,   1,  -4,
	 -2,   3,   6,   9,   9,   6,   3,  -2,
	 -2,   3,   6,   9,   9,   6,   3,  -2,
	 -4,   1,   5,   6,   6,   5,   1,  -4,
	 -7,  -1,   1,   3,   3,   1,  -1,  -7,
	-11,  -7,  -4,  -2,  -2,  -4,  -7, -11
};
static const int  QueenEndgame [64] =
{
	-15, -10,  -8,  -7,  -7,  -8,  -10,  -15,
	-10,  -5,  -3,  -2,  -2,  -3,   -5,  -10,
	 -8,  -3,   0,   2,   2,   0,   -3,   -8,
	 -7,  -2,   2,   5,   5,   2,   -2,   -7,
	 -7,  -2,   2,   5,   5,   2,   -2,   -7,
	 -8,  -3,   0,   2,   2,   0,   -3,   -8,
	-10,  -5,  -3,  -2,  -2,  -3,   -5,  -10,
	-15, -10,  -8,  -7,  -7,  -8,  -10,  -15
};
static const int  KingOpening [64] =
{
	44,  49,  19,   -1,  -1,  19,  49,   44,
	44,  49,  19,   -1,  -1,  19,  49,   44,
	38,  43,  13,   -7,  -7,  13,  43,   38,
	35,  40,  10,  -10, -10,  10,  40,   35,
	30,  35,   5,  -15, -15,   5,  35,   30,
	25,  30,   0,  -20, -20,   0,  30,   25,
	15,  20, -10,  -30, -30, -10,  20,   15,
	 5,  10, -20,  -40, -40, -20,  10,    5
};
static const int  KingEndgame [64] =
{
	-73,  -50,  -34,  -28,  -28,  -34,  -50,  -73, 
	-40,  -15,   -3,    3,    3,   -3,  -15,  -40, 
	-29,   -8,    7,   13,   13,    7,   -8,  -29, 
	-23,   -2,   13,   22,   22,   13,   -2,  -23, 
	-18,    3,   18,   27,   27,   18,    3,  -18, 
	-24,   -3,   12,   18,   18,   12,   -3,  -24, 
	-35,  -10,    2,    8,    8,    2,  -10,  -35, 
	-53,  -30,  -14,   -8,   -8,  -14,  -30,  -53

};
Hi Jose.

Where is white and where is black? Where is a1 and where h8? If it is as I understand it, I must turn upside down both my thought and my vision.

My logic for psqt (excepting the king table) is quite simple:

1. Bonus for pieces in terms of more central files - d and e files get more than c and f files, etc.
2. Bonus for pieces in terms of more advanced ranks - 4th rank gets more bonus than 3rd rank, which gets more bonus than 2nd rank, etc.
3. Bonus for pieces in terms of centralisation - e4,d4,e5,d5 squares get more bonus than the squares of the extended center, etc.
4. Bonus for pieces in terms of space advantage (most psqt are crude here or lack it at all) - 5th rank, already beyond the center line, gets much more bonus than 4th rank, 6th rank gets much more bonus than 5th rank, etc. That would be valid mainly for minor pieces, with majors there are some specifics.
5. Bonus for pawns in terms of more central files, as with pieces.
6. Bonus for pawns in terms of space advantage - 5th rank gets much more bonus than 4th rank, 6th rank gets much more bonus than 5th rank. (also here many tables do poorly)

So, if you ask me what distinguishes my theory from others, what points would be true of it, I would enumerate the following:

- pawns on 5th and 6th ranks deserve much bigger bonus
- minors on the 5th rank, even if not on outposts, deserve much bigger bonus than minors on the 4th rank
- queen on the 6th rank deserves bigger bonus than queen on either the 5th or 4th ranks, and also than queen on 7th rank, so that the best rank for the queen is the 6th
- minors on the 7th and 8th ranks still deserve some small bonus, unlike most tables where they have negative values, etc.

Sometimes the differences could be quite substantial.

Regarding the Ippolit psqt, I could say the following things:

- very low values for pawns on the c and f files; especially c4 and f4, as well as c5 and f5, deserve much bigger bonus
- strangely too, e6 and d6 pawns get good bonus, but f6 and c6 are negative, fully wrong
- the knight and bishop values for the 6th rank are worse than the values for the 5th rank, absolutely wrong
- you have negative values for knight and bishop on a5,b5,a6,b6, etc., but minor on the 5th and 6th ranks can never get negative values, it is too well placed even on a5 and a6
- Ippolit has not rank bonus for rook, but what works is that 6th rank is better than 5th, 5th better than 4th, etc.
- in the endgame you have negative values for rook on 8th rank, while this rank is one of the best for rooks
- the queen gets better values for the 5th and 4th ranks than the 6th rank, but the truth is quite the opposite, queen on 6th rank scores best both in the middlegame and the endgame
- you have negative queen values for the 8th rank in the endgame, but even in the endgame the 8th rank should score relatively well for the queen, etc.

Now, what I understand is that those values work only within a specific environment, they have been created and tuned for that environment and will not work correctly outside that environment. In order for the changes that I suggest to work, you should tune simultaneously at least some 20-30 other eval terms, but it is quite probable that even that does not fix matters, as even the search parameters are tuned to work correctly to a specific environment. So that, basically, yes, I insist the values of my tables are somewhat superior than the values of most of the tables I have looked at, but they could work only if you start from scratch. Or if you change one thing at a time.
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: Crude, cruder, crudest

Post by velmarin »

Lyudmil Tsvetkov wrote: Hi Jose.

Where is white and where is black? Where is a1 and where h8? If it is as I understand it, I must turn upside down both my thought and my vision.

Board is equal Stockfish,

Code: Select all

typedef enum
    {
	A1, B1, C1, D1, E1, F1, G1, H1, 
	A2, B2, C2, D2, E2, F2, G2, H2,
	A3, B3, C3, D3, E3, F3, G3, H3, 
	A4, B4, C4, D4, E4, F4, G4, H4,
	A5, B5, C5, D5, E5, F5, G5, H5, 
	A6, B6, C6, D6, E6, F6, G6, H6,
	A7, B7, C7, D7, E7, F7, G7, H7, 
	A8, B8, C8, D8, E8, F8, G8, H8
    } Squares;

Thanks for answering, I'll look slow.
(I have now absent)

If we see the many negative scores.
Reason compensate the terms of always positive evaluation.
Example past peon in seventh worth very much.
Bonds pawns in the center, ect.

Torres eighth or seventh do nothing without reason, the evaluation value when they do something, or the opponent's king prisoner, ect.

Seen how a human body static assessment is a skeleton , then put everything else.

Engines with only static there are some, how rocinante 1.0,
Darky, this mentions the following page very interesting.

https://chessprogramming.wikispaces.com ... n+function

I study slower your response, thanks.
syzygy
Posts: 5697
Joined: Tue Feb 28, 2012 11:56 pm

Re: Crude, cruder, crudest

Post by syzygy »

Lyudmil Tsvetkov wrote:- strangely too, e6 and d6 pawns get good bonus, but f6 and c6 are negative, fully wrong
How can you say "fully wrong" if those values apparently have been shown to lead to better play than other values? Don't you see a problem in that?