Greg Strong wrote on Sat, Feb 25, 2017 03:12 PM UTC:
The value of the fool is a very difficult question. I think the value should be based, at least in part, on what material the opponent still has in his army. But I am confident that having the value of the fool change after every move based on the piece last moved will work very badly. That would result in the engine completely changing the way it plays. The engine is trying to maximize its score. So its thinking goes like this: if I move a queen, suddenly my opponent's fool is worth a queen! It's like he got an extra queen. But if I move a pawn, the value of the opponent's fool drops to that of a pawn. So it will try very, very hard to move nothing but pawns and never move a queen.
Probably the value should be based on the value of all the opponent's remaining pieces. The engine should think like this: if the opponent has more powerful pieces than I have, then that makes my fool more valuable than his fool, and I should consider this when deciding whether to trade another piece for a fool (which is the point of material evaluation.)
I'd probably start with this: value is somewhat less than the average of all the opponent's remaining material not counting the pawns. We can probably do better, but I think that would be a reasonable starting point (although it would be computationally expensive to implement.)
P. S. Good job getting the fool working in ChessV. Impressive!
The value of the fool is a very difficult question. I think the value should be based, at least in part, on what material the opponent still has in his army. But I am confident that having the value of the fool change after every move based on the piece last moved will work very badly. That would result in the engine completely changing the way it plays. The engine is trying to maximize its score. So its thinking goes like this: if I move a queen, suddenly my opponent's fool is worth a queen! It's like he got an extra queen. But if I move a pawn, the value of the opponent's fool drops to that of a pawn. So it will try very, very hard to move nothing but pawns and never move a queen.
Probably the value should be based on the value of all the opponent's remaining pieces. The engine should think like this: if the opponent has more powerful pieces than I have, then that makes my fool more valuable than his fool, and I should consider this when deciding whether to trade another piece for a fool (which is the point of material evaluation.)
I'd probably start with this: value is somewhat less than the average of all the opponent's remaining material not counting the pawns. We can probably do better, but I think that would be a reasonable starting point (although it would be computationally expensive to implement.)
P. S. Good job getting the fool working in ChessV. Impressive!