Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

deriving piece values from mobility

71 views
Skip to first unread message

Barney Pell

unread,
Aug 8, 1993, 6:56:27 PM8/8/93
to
The chess material values (Q=9, R=5, B=3, N=3,P=1) we use are related
to the average mobility each piece would have an on otherwise empty
board.

I believe I first came across this in an article by Botvinnik, perhaps
in an issue of Chess Life around 1984. Now I would like to have the
correct reference for my thesis, but cannot locate the source.

Can someone please give me the (full if possible) reference for an
article or book where this point is made? If possible, the earliest
such reference would be most useful, but anything will help.

For those interested, my program METAGAMER uses principles like this
to derive piece values for chess-like games directly from the rules of
a given game. Any pointers to related work on this would also be
appreciated. Please respond by email (at least let me know!) as I
haven't been reading this group regularly.

Thanks.

--
==================================================

Barney Pell
Computer Laboratory
University of Cambridge
England
phone: (0223) 334602
e-mail: b...@cl.cam.ac.uk

==================================================

Noam Elkies

unread,
Aug 9, 1993, 12:08:26 AM8/9/93
to
In article <1993Aug8.2...@infodev.cam.ac.uk>

b...@cl.cam.ac.uk (Barney Pell) writes:
>For those interested, my program METAGAMER uses principles like this
>to derive piece values for chess-like games directly from the rules of
>a given game.

So what do you get for fairy pieces: B+N, R+N, Q+N, K restricted
to move diagonally (that's how the Q used to move), etc.? Or for
that matter pieces like the Grasshopper whose mobility depends
on how many other pieces are on the board?

--Noam D. Elkies (elk...@zariski.harvard.edu)
Dept. of Mathematics, Harvard University

P.S. A standard observation: the Bishop is worth less than
one might guess from raw "mobility" because it is limited
to squares of one color. The aufin (the B of the old game)
had it even worse: a (2,2) leaper, it had only 8 squares
that it could ever move to! These squares formed an important
part of the strategy of the game which does not have a real
equivalent in modern chess. (I get this from the Oxford
Companion to Chess.)

Barney Pell

unread,
Aug 10, 1993, 11:45:57 PM8/10/93
to

Thanks to everyone who responded. In fact I found the article in
the Oxford Companion to Chess just after posting the question!


My program (METAGAMER) currently does not get static mobility values
for hopping pieces, as all its calculations are done assuming an
otherwise empty board. It does give hopping pieces dynamic mobility
value based on the moves they actually have in a position. The
program does actually compensate pieces for being able to reach more
squares than the bishop, in the form of the eventual-mobility
calculations, which value squares a piece could reach with exponential
decay in terms of the number of moves to get there.


The following transcript with METAGAMER shows its values for the other
pieces Noam asked about, along with the chess pieces for comparison.
The rules at the end are the encoding of these piece definitions
which the program uses. If anyone would like to try the system for
themselves, it is available by ftp from:

ftp.cl.cam.ac.uk:/users/bdp/metagame3a.tar.Z

Note that it runs only in quintus or sicstus prolog, sorry!

----- Barney

[Note that mediated value below ignores everything but the mobility
terms, as those are the only advisors with non-zero weights. ]


--------------------------------------
METAGAME Game-Playing Workbench 3a
Copyright (c) 1992 Barney D. Pell
--------------------------------------

| ?- metagame.

Enter a command ('help.' gives more information)
|: |: pieces.
The current game has the following pieces:
[bishop,diagleap,king,night,nightbishop,nightqueen,nightrook,ortholeap,pawn,queen,rook]
Note that pieces are displayed on the board by the their first letter.


Enter a command ('help.' gives more information)
|: |: active.
Active Advisors:
<static>: 1
<max_static_mob>: 1
<max_eventual_mob>: 1
<avg_static_mob>: 1
<avg_eventual_mob>: 1


Enter a command ('help.' gives more information)
|: |: advice white bishop.
advice(victims,white bishop ,11)
advice(immunity,white bishop ,0)
advice(giveaway,white bishop ,0)
advice(max_static_mob,white bishop ,13)
advice(max_eventual_mob,white bishop ,12.0)
advice(avg_static_mob,white bishop ,8.75)
advice(avg_eventual_mob,white bishop ,10.9375)
advice(stalemate,black,1)
Total (Mediated) for <white bishop >: 44.6875

Enter a command ('help.' gives more information)
|: |: advice white king.
advice(victims,white king ,11)
advice(immunity,white king ,0)
advice(giveaway,white king ,0)
advice(max_static_mob,white king ,8)
advice(max_eventual_mob,white king ,12.9375)
advice(avg_static_mob,white king ,6.5625)
advice(avg_eventual_mob,white king ,9.64990234375)
advice(eradicate,black-white king ,1)
advice(stalemate,black,1)
Total (Mediated) for <white king >: 37.14990234375

Enter a command ('help.' gives more information)
|: |: advice white night.
advice(victims,white night ,11)
advice(immunity,white night ,0)
advice(giveaway,white night ,0)
advice(max_static_mob,white night ,8)
advice(max_eventual_mob,white night ,14.8125)
advice(avg_static_mob,white night ,5.25)
advice(avg_eventual_mob,white night ,11.8095703125)
advice(stalemate,black,1)
Total (Mediated) for <white night >: 39.8720703125

Enter a command ('help.' gives more information)
|: |: advice white rook.
advice(victims,white rook ,11)
advice(immunity,white rook ,0)
advice(giveaway,white rook ,0)
advice(max_static_mob,white rook ,14)
advice(max_eventual_mob,white rook ,20.25)
advice(avg_static_mob,white rook ,14.0)
advice(avg_eventual_mob,white rook ,20.25)
advice(stalemate,black,1)
Total (Mediated) for <white rook >: 68.5

Enter a command ('help.' gives more information)
|: |: advice white queen.
advice(victims,white queen ,11)
advice(immunity,white queen ,0)
advice(giveaway,white queen ,0)
advice(max_static_mob,white queen ,27)
advice(max_eventual_mob,white queen ,23.5)
advice(avg_static_mob,white queen ,22.75)
advice(avg_eventual_mob,white queen ,22.4375)
advice(stalemate,black,1)
Total (Mediated) for <white queen >: 95.6875

Enter a command ('help.' gives more information)
|: |: advice white pawn.
advice(victims,white pawn ,11)
advice(immunity,white pawn ,0)
advice(giveaway,white pawn ,0)
advice(max_static_mob,white pawn ,1)
advice(max_eventual_mob,white pawn ,1.9921875)
advice(avg_static_mob,white pawn ,0.875)
advice(avg_eventual_mob,white pawn ,1.7509765625)
advice(stalemate,black,1)
Total (Mediated) for <white pawn >: 5.6181640625

Enter a command ('help.' gives more information)
|: |: advice white nightbishop.
advice(victims,white nightbishop ,11)
advice(immunity,white nightbishop ,0)
advice(giveaway,white nightbishop ,0)
advice(max_static_mob,white nightbishop ,21)
advice(max_eventual_mob,white nightbishop ,22.0)
advice(avg_static_mob,white nightbishop ,14.0)
advice(avg_eventual_mob,white nightbishop ,19.6875)
advice(stalemate,black,1)
Total (Mediated) for <white nightbishop >: 76.6875

Enter a command ('help.' gives more information)
|: |: advice white nightrook.
advice(victims,white nightrook ,11)
advice(immunity,white nightrook ,0)
advice(giveaway,white nightrook ,0)
advice(max_static_mob,white nightrook ,22)
advice(max_eventual_mob,white nightrook ,22.25)
advice(avg_static_mob,white nightrook ,19.25)
advice(avg_eventual_mob,white nightrook ,21.5625)
advice(stalemate,black,1)
Total (Mediated) for <white nightrook >: 85.0625


Enter a command ('help.' gives more information)
|: |: advice white ortholeap.
advice(victims,white ortholeap ,11)
advice(immunity,white ortholeap ,0)
advice(giveaway,white ortholeap ,0)
advice(max_static_mob,white ortholeap ,4)
advice(max_eventual_mob,white ortholeap ,7.91015625)
advice(avg_static_mob,white ortholeap ,3.5)
advice(avg_eventual_mob,white ortholeap ,6.259769439697266)
advice(stalemate,black,1)
Total (Mediated) for <white ortholeap >: 21.669925689697266


Enter a command ('help.' gives more information)
|: |: advice white diagleap.
advice(victims,white diagleap ,11)
advice(immunity,white diagleap ,0)
advice(giveaway,white diagleap ,0)
advice(max_static_mob,white diagleap ,4)
advice(max_eventual_mob,white diagleap ,6.9375)
advice(avg_static_mob,white diagleap ,3.0625)
advice(avg_eventual_mob,white diagleap ,5.19287109375)
advice(stalemate,black,1)
Total (Mediated) for <white diagleap >: 19.19287109375


Enter a command ('help.' gives more information)
|: rules.

Game <fairy_chess> is defined as follows:

game fairy_chess
goals stalemate opponent
eradicate [ { opponent } { king } ]

board_size 8 by 8
board_type planar
inversion forward
promote_rank 8
setup
pawn at { ( a , 2 ) ( b , 2 ) ( c , 2 ) ( d , 2 ) ( e , 2 ) ( f , 2 ) ( g , 2 ) ( h , 2 ) }
night at { ( b , 1 ) ( g , 1 ) }
bishop at { ( c , 1 ) ( f , 1 ) }
rook at { ( a , 1 ) ( h , 1 ) }
queen at { ( d , 1 ) }
king at { ( e , 1 ) }

define pawn
moving
movement
leap
< 0 , 1 > symmetry { }
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 1 , 1 > symmetry { side }
end movement
end capture
end capturing
promoting decision player
options [ { player } { night bishop rook queen } ]
end promoting
end define

define nightbishop
moving
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement

movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement

movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define nightrook
moving
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement

movement
ride
< 1 , 0 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement

movement
ride
< 1 , 0 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define nightqueen
moving
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement

movement
ride
< 1 , 0 > symmetry all_symmetry
end movement

movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement

movement
ride
< 1 , 0 > symmetry all_symmetry
end movement

movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define night
moving
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 2 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define bishop
moving
movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define rook
moving
movement
ride
< 1 , 0 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
ride
< 1 , 0 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define queen
moving
movement
ride
< 1 , 0 > symmetry all_symmetry
end movement

movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
ride
< 1 , 0 > symmetry all_symmetry
end movement

movement
ride
< 1 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define king
moving
movement
leap
< 1 , 0 > symmetry all_symmetry
end movement

movement
leap
< 1 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 1 , 0 > symmetry all_symmetry
end movement

movement
leap
< 1 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define ortholeap
moving
movement
leap
< 1 , 0 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 1 , 0 > symmetry all_symmetry
end movement
end capture
end capturing
end define

define diagleap
moving
movement
leap
< 1 , 1 > symmetry all_symmetry
end movement
end moving
capturing
capture by { clobber }
type [ { opponent } any_piece ]
effect remove
movement
leap
< 1 , 1 > symmetry all_symmetry
end movement
end capture
end capturing
end define

end game .

--
==================================================

Barney Pell
Computer Laboratory
University of Cambridge

0 new messages