[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]
Comments by HGMuller
Ha, finally my registration could be processed manually, as all automatic
procedures consistently failed. So this thread is now also open to me for
posting.
Let me start with some remarks to the ongoing discussion.
* I tried Reinhards 4A vs 8N setup. In a 100-game match of 40/1' games
with Joker80, the Knights are crushed by the Archbishops 80-20. So
although in principle I agree with Reinhard that such extreme tests with
setups that make the environment for the pieces very alien compared to
normal Chess could be unreliable, I certainly would not take it for
granted that his claim that 8 Knights beat 4 Archbishops is actually true.
Possible reasons for the discrepancy could be:
1) Reinhard did not base his conclusion on enough games. In my experience
using anything less than 100 games is equivalent to making the decision by
throwing dice. It often happens that after 30 games the side that is
leading by 60% will eventually lose by 45%.
2) Smirf does not handle the Archbishop well, because it is programmed to
underestimate its value, and is prepared to trade it to easily for two
Knights to avoid or postpone a Pawn loss, while Joker80 just gives the
Pawn and saves its Archbishops until he can get 3 Knights for it.
3) The shorter time control used does restrict search depth such that this
does not allow Joker80 to recognize some higher, unnatural strategy (which
has no parallel in normal Chess) where all Knights can be kept defending
each other multiple times, because they all have identical moves, and so
judges the pieces more on their tactical merits that would be relevant for
normal Chess.
* The arguments Reinhard gives against more realistic 'asymmetrical
platesting':
| Let me point to a repeatedly written detail: if a piece will be
| captured, then not only its average piece exchange value is taken
| from the material balance, but also its positional influence from
| the final detail evaluation. Thus it is impossible to create
| 'balanced' different armies by simply manipulating their pure material
| balance to become nearly equal - their positional influences probably
| would not be balanced as need be.
seem invalid. For one, all of us are good enough Chess players that we can
recognize for ourselves in the initial setup we use for playtesting if the
Archbishop or Knight or whatever piece is part of the imbalance is an
exceptionally strong or poor one, or just an average one. So we don't put
a white Knight on e5 defended by Pf4, while the black d- and f-pawn already
passed it, and we don't put it on a1 with white pawns on b3, c2 and black
pawns on b4, c3. In particular, I always test from opening positions,
where non of the pieces is on a particularly good square, but they can be
easily developed, as the opponent does not inderdict access to any of the
good squares either. So after a few opening moves, the pieces get to
places that, almost by definition, are the average where you can get
them.
Secondly, when setting up the position, we get the evaluation of the
engine for that position telling us if the engine does consider one of the
sides highly favored positionally (by taking the difference between the
engine evaluation and the known material difference for the piece values
we know the engine is using). Although I would trust this less than my own
judgement, it can be used as additional confirmation.
Like Derek says, averaging over many positions (like I always do: all my
matches are played starting from 432 different CRC opening positions) will
tend to have avery piece on the average in an average position. If a
certain piece, like A, would always have a +200cP 'positional'
contribution, (e.g. calculated as its contribution to mobility) no matter
where you put it, then that contribution is not positional at all, but a
hidden part of the piece value. Positional contributions should average to
zero, when averaged over all plausible positions. Furthermore, in Chess
positional contributions are usually small compared to material ones, if
they do not have to do with King safety or advanced passers. And none of
the latter play a role in the opening positions I use.
* Symettrical playtesting between engines with different piece-value sets
is known to be a notoriously unreliable method. Dozens of people have
reported trying it, often with quite advanced algorithms to step through
search space (e.g. genetic algorithms, or annealing). The result was
always the same: in the end (sometimes after months of testing) they
obtained piece values that, when pitted against the original hand-tuned
values, would consistently lose.
The reason is most likely that the method works in principle, but requires
too many games in practice. Derek mentioned before, that if two engines
value certain piece combinations differently, they often exchange them for
each other, creating a material imbalance, which then affects their winning
chances. Well, 'often' is not the same as 'always'. For very large
errors, like putting AR the
undervaluation of A only can lead to much more complicated bad trades, as
you have to have at least two pieces for A. The probability that this
occurs is far smaller, and only 10-20% of the games will see such a
trade.
Now the problem is that the games in which the bad trades do NOT happen
will not be affected by the wrong piece value. So this subset of games
will have a 50-50 outcome, pushing the outcome of the total score average
towards 50%. If A vs R+N gives you 60% winning chance,(so 10% excess), if
it is the only bad trade that happens (because you set A slightly under
8), and happens in only 20% of the cases, the total effect you would see
(and on which you would have to conclude the A value is suboptimal) would
be 52%. But the 80% of games that did not contribute to learning anything
about A value, because in the end A was traded for A, will contribute to
the statistical noise! To recognize a 2% excess score in stead of a 10%
excess score you need a 5 times lower statistical error. But statistical
errors only decrease as the SQUARE ROOT of the number of games. So to get
it down a factor 5, you need 25 times as many games. You could not
conclude anything before you had 2500 games!
Symmetrical playtesting MIGHT work if you first discard all the games that
traded A for A (to eliminate the noise they produce, and they can't say
anything about the correctness of the A value), and make sure you have
about 100 games left. Otherwise, the result will be garbage.
Well, this is exactly the kind of games I played. Plus that I do not play from a single position, but shuffle the pieces in the backrank to have 432 different initial positions. This to minimize the risk that I am putting to much emphasis on a position that inadvertantly contained hidden tactics, biasing the score. If there are such positions, sometimes one side should be favored, sometimes the other, and the effect will average out. If the posession of one piece as opposed to another (or a set of others) would systematically lead to more tactics in favor of that piece even from an opeing position, I think that is a valid contribution to the piece value of such a piece. Of course I did all games on a 10x8 board, as I wanted to have piece values for Capablanca Chess. If I were to do it on 8x8, I would use a setup like yours, but with Q next to K for both sides, to make the piece mix to which it is exposed even more natural. (Of course there always is a problem introducing A and C in 8x8 Chess that they don't fit naturally on the board, s you have to kick out some other pieces at their expense. But you don't have to kick out the same pieces all the time. It is perfectly valid to sometimes give both sides an A on d1/d8, some times a Q, some times a C, or sometimes Q+C at the expense of a Bishop. The total mix of pieces in the game should be N AVERAGE close to what it will be in real games, or you cannot be sure that results are meaningful. I never went more extreme than giving one side two A and the other two C (or similarly AA vs QQ and CC vs QQ), by substituting A->C for one side of the Capablanca array, and C-> for the other. For the total list of combinations I tried, see: http://z13.invisionfree.com/Gothic_Chess_Forum/index.php?showtopic=389&st=1 (For clarity: the pieces mentioned in that list where in general the pieces I deleted from the opening array.)
For completeness, I listed the combinations that are relevant for comparison of the Q, A and C value here: Q-BNN (172+ 186- 75=) 48.4% Q-BBN (143+ 235- 54=) 39.4% C-BNN (130+ 231- 71=) 38.3% C-BBN ( 39+ 86- 11=) 32.7% A-BNN (124+ 241- 67=) 36.5% RR-Q (174+ 194- 64=) 47.7% RR-CP (131+ 227- 74=) 38.9% RR-AP (166+ 199- 67=) 46.2% RR-C (188+ 170- 74=) 52.1% RR-A (197+ 162- 73=) 54.1% QQ-CC (131+ 55- 30=) 67.6% QQ-AA (117+ 60- 39=) 63.2% QQ-CCP (112+ 72- 32=) 59.3% QQ-AAP (112+ 78- 26=) 57.9% CC-AA (102+ 89- 25=) 53.0% Q-CP (164+ 191- 77=) 46.9% Q-AP (191+ 186- 55=) 50.6% Q-C (215+ 161- 56=) 56.3% Q-A (219+ 138- 75=) 59.4% C-A (187+ 182- 63=) 50.6% A-RN (261+ 122- 49=) 66.1% C-RN (273+ 101- 58=) 69.9% A-RNP (247+ 121- 64=) 64.6% C-RNP (242+ 144- 46=) 61.3% So it is not only that C and A has been tried against each other, alone or in pairs. They have also been tested against Q (alonme or in pairs, with or without pawn odds for the latter), BNN, RR and RN (with or without Pawn odds). On the average, C does only slightly better than A, on the average 2-3%, where giving Pawn odds makes a difference of ~12%. The A-RNP result seems a statistical fluke, as it is almost the same as A-RN, while the extra Pawn obviously should help, and the A even does better there than C-RNP. Note the statistical error in 432 games is 2.2%, so that 32% of the results (so eight) should be off by more than 2.2%, and 5% (1 or 2) should be off by more than 4.5%. And A-RNP is most likely to be that latter one.
Note that a Nash equilibrium in a symmetric zero-sum game must be the globally optimum strategy. If it weren't, the player scoring negative could unilaterally change its strategy to be the same as his opponent applies, and by symmetry then raise his score to 0, showing that the earlier situation could not heave been a Nash equilibrium.
Sorry my original long post got lost. As this is not a position where you can expect piece values to work, and my computers are actually engaged in useful work, why don't YOU set it up?
As piece values are only useful as strategic guidelines for quiet positions, they cannot be sensitive to who has the move. A position where it matters who has the move is by definition nont quiet, as one ply later that characteristic will have essentially changed. So at the level of piece-value strategies, Chess is a perfectly symmetric game.
It seems to me that that is bad strategy. If you fail you should keep trying until you succeed. Only when you succeed you can stop trying...
Sure, this is what people do and have done for ages. It is well known that the advantage of having the move is worth 1/6 of a Pawn, (corresponding in normal Chess to a white score of 53-54%) and that, by inference, wasting a full move is equivalent to 1/3 of a Pawn. But the point is that this does not alter the piece values. It just adds to them, like every positional advantage adds to them. In my test the advantage of having the lead move is neutralized by playing every position both with white to move and black to move.
To summarize the state of affairs, we now seem to have sets of piece values for Capablanca Chess by: Hans Aberg (1) Larry Kaufman (1) Reinhard Scharnagl (2) H.G. Muller (3) Derek Nalls (4) 1) Educated guessing based on known 8x8 piece values and assumptions on synergy values of compound pieces 2) Based on board-averaged piece mobilities 3) Obtained as best-fit of computer-computer games with material imbalance 4) Based on mobilities and more complex arguments, fitted to experimental results ('playtesting') I think we can safely dismiss method (1) as unreliable, as the (clearly stated) assumptions on which they are based were never tested in any way, and appear to be invalid. Method (3) and (4) now are basically in agreement. Method (2) produces substantially different results for the Archbishop. One problem I see with method (2) is that plain averaging over the board does not seem to be the relevant thing to do, and even inconsitent at places: suppose we apply it to a piece that has no moves when standing in a corner, the corner squares would suppress the mobility. If otoh, the same piece would not be allowed to move into the corner at all, the average would be taken over the part of the board that it could access (like for the Bishop), and would be higher than for the piece that could go there, but not leave it (if there weren't too many moves to step into the corner). While the latter is clearly upward compatible, and thus must be worth more. The moral lesson is that a piece that has very low mobility on certain squares, does not lose as much value because of that as the averaging suggest, as in practice you will avoid putting the piece there. The SMIRF theory doe not take that into account at all. Focussing on mobility only also makes you overlook disastrous handicaps a certain combination of moves can have. A piece that has two forward diagonal moves and one forward orthogonal (fFfW in Betza notation) has exactly the same mobility as that with forward diagonal and backward orthogonal moves (fFbW). But the former is restricted to a small (and ever smaller) part of the board, while the latter can reach every point from every other point. My guess is that the latter piece would be worth much more than the former, although in general forward moves are worth more than backward moves. (So fWbF should be worth less than fFbW.) But I have not tested any of this yet. I am not sure how much of the agreement between (3) and (4) can be ascribed to the playtesting, and how much to the theoretical arguments: the playtesting methods and results are not extensively published and not open to verification, and it is not clear how well the theoretical arguments are able to PREdict piece values rather than POSTdict them. IMO it is not possible to make an all encompasisng theory with just 4 or 6 empirical piece values as input, as any elaborate theory will have many more than 6 adjustable parameters. So I think it is crucial to get accurate piece values for more different pieces. One keystone piece could be the Lion. This is can make all leaps to targets in a 5x5 square centered on it (and is thus a compound of Ferz, Wazir, Alfil, Dabbabah and Knight). This piece seems to be 1.25 Pawn stronger than a Queen (1075 on my scale). This reveals a very interesting approximate law for piece values of short-range leapers with N moves: value = (30+5/8*N)*N For N=8 this would produce 280, and indeed the pieces I tested fall in the range 265 (Commoner) to 300 (Knight), with FA (Modern Elephant), WD (Modern Dabbabah) and FD in between. For N=16 we get 640, and I found WDN (Minister) = 625 and FAN (High Priestess) and FAWD (Sliding General) 650. And for the Lion, with N=24, the formula predicts 1080. My interpretation is that adding moves to a piece does not only add the value of the move itself (as described by the second factor, N), but also increases the value of all pre-existing moves, by allowing the piece to better manouevre in place for aiming them at the enemy. I would therefore expect it is mainly the captures that contribute to the second factor, while the non-captures contribute to the first factor. The first refinement I want to make is to disable all Lion moves one at a time, as captures or as non-captures, to see how much that move contributes to the total strength. The simple counting (as expressed by the appearence of N in the formula) can then be replaced by a weighted counting, the weights expressing the relative importance of the moves. (So that forward captures might be given a much bigger weight than forward non-captures, or backward captures along a similar jump.) This will require a lot of high-precision testing, though.
Oh Yes, I forgot about: [name removed] (5) 5) Based on safe checking I am not sure that safe checking is of any relevance. Most games are not won by checkmating the opponent King in an equal-material position, but by annihilating the opponent's forces. So mainly by threatening Pawns and other Pieces, not Kings. A problem is that safe checking seems to predict zero value for pieces like Ferz, Wazir and Commoner, while the latter is not that much weaker than the Knight. (And, averaged over all game stages, might even be stronger than a Knight.) This directly seems to falsify the method. [The above has been edited to remove a name and/or site reference. It is the policy of cv.org to avoid mention of that particular name and site to remove any threat of lawsuits. Sorry to have to do that, but we must protect ourselves. -D. Howe]
Reinhard, why do you attach such importance to the 4A-9N position. I think that example is totally meaningless. If it would prove anything, it is that you cannot get the value of 9 Knights by taking 9 times the Knight value. It will prove _nothing_ about the Archbishop value. Chancellor and Queen will encounter exactly the same problems facing an army of 9 Knights. The problem is that there is a positional bonus for identical pieces defending each other. This is well known (e.g. connected Rooks). Problem is that such pair interactions grow as the square of the number of pieces, and thus start to dominate the total evaluation if the number of identical pieces gets extremely high (as it never will in real games). Pieces like A, C and Q (or in particular the highest-valued pieces on the board) will not get such bonuses, as the bonus is asociated with the safety of mutually defending each other, and tactical security in case the piece is traded, because the recapture then replaces it by an identical one, preserving all defensive moves it had. In absence of equal or higher pieces, defending pieces is a useless exercise, as recapture will not offer compensation. If you are attacked, you will have to withdraw. So the mutual-defence bonus is also dependent on the piece makeup of the opponent, and is zero for Archbishops when the opponent only has Knights, and very high for Knights when the opponent has only Archbishops. If you want to playtest material imbalances, the positional value of the position has to be as equal as possible. The 4A-9N position violates that requirement to an extreme extent. It thus cannot tell us anything about piece values. Just like deleting the white Queen and all 8 black Pawns cannot tell us anything about the value of Q vs P.
Well, Reinhard, there could be many explanations for the 'surprising' strength of an all-Knight army, and we could speculate forever on it. But it would only mean anything if we could actually find ways to test it. I think the mutual defence is a real effect, and I expect an army of all different 8-target leapers to do significantly worse than an army of all Knights, even though all 8-target leapers are almost equally strong. But it would have to be tested. Defending each other for Archbishops is useless (in the absence of opponet Q, C or A), as defending Archbishop in the face of Knight attacks is of zero use. So the factthey can do it is not worth anything. Nevertheless, the Archbishops do not do so bad as you want to make us believe, and I think they still would have a fighting chance against 9 Knights. So perhaps I will run this tests (on the Battle-of-the-Goths port, so that everyone can watch) if I have nothing better to do. But currently I have more important and urgent things to do on my Chess PC. I have a great idea for a search enhancement in Joker, and would like to implement and test it before ICT8.
I thought this piece (W+D+A+F+N) was called a Lion, but it seems I was misinformed. I playtested this piece in a Capablanca Chess environment, and it is not that excessively strong. It is about 1.25 pawn stronger than a Queen, 1075 on my scale (on 10x8 board).
Well, I got that from the beginning. But the problem is not that the A cannot be defended. It is strong and mobile enough to care for itself. The problem is that the Knights cannot be threatened (by A), because they all defend each other, and can do so multiple times. So you can build a cluster of Knights that is totally unassailable. That would be much more difficult for a collection of all different pieces. This will be likely to have always some weak spots, which the extremely agile Archbishops then seek out and attack that point with deadly precision. But I don't see this as a fundamental problem of pitting different armies against each other. After an unequal trade, andy Chess game becomes a game between different armies. But to define piece values that can be helpful to win games, it is only important to test positions that could occur in chames, or at least are not fundamentally different in character from what you might encounter in games. and the 4A-9N position definitely does not qualify as such. I think this is valid critisism against what Derek has done (testing super-pieces only against each other, without any lighter pieces being present), but has no bearing on what I have done. I never went further than playing each side with two copies of the same super-piece, by replacing another super-piece (which was then absent in that army). This is slightly unnatural, but I don't expect it to lead to qualitatively different games, as the super-pieces are similar in value and mobility. And unlike super-pieces share already some moves, so like and unlike super-pieces can cooperate in very similar ways (e.g. forming batteries). It did not essentially change the distribution of piece values, as all lower pieces were present in normal copy numbers. I understand that Derek likes to magnify the effect by playing several copies of the piece under test, but perhaps using 8 or 9 is overdoing it. To test a difference in piece value as large as 200cP, 3 copies should be more than enough: This can still be done in a reasonably realistic mix of pieces, e.g. replacing Q and C on one side by A, and on the other side by Q and A by C, so that you play 3C vs 3A, and then give additional Knight odds to the Chancellors. This would predict about +3 for the Chancellors with the SMIRF piece values, and -2.25 according to my values. Both imbalances are large enough to cause 80-90% win percentages, so that just a few games should make it obvious which value is very wrong.
Derek Nalls: | Given enough years (working with only one server), this quantity of | well-played games may eventually become adequate. I never found any effect of the time control on the scores I measure for some material imbalance. Within statistical error, the combinations I tries produced the same score at 40/15', 40/20', 40/30', 40/40', 40/1', 40/2', 40/5'. Going to even longer TC is very expensive, and I did not consider it worth doing just to prve that it was a waste of time... The way I see it, piece-values are a quantitative measure for the amount of control that a piece contributes to steering the game tree in the direction of the desired evaluation. He who has more control, can systematically force the PV in the direction of better and better evaluation (for him). This is a strictly local property of the tree. The only advantage of deeper searches is that you average out this control (which highly fluctuates on a ply-by play basis) over more ply. But in playing the game, you average over all plies anyway.
| And by that this would create just the problem I have tried to | demonstrate. The three Chancellors could impossibly be covered, | thus disabling their potential to risk their own existence by | entering squares already influenced by the opponent's side. You make it sound like it is a disadvantage to have a stronger piece, because it cannot go on squares attacked by the weaker piece. To a certain extent this is true, if the difference in capabilities is not very large. Then you might be better off ignoring the difference in some cases, as respecting the difference would actually deteriorate the value of the stronger piece to the point where it was weaker than the weak piece. (For this reason I set the B and N value in my 1980 Chess program Usurpator to exactly the same value.) But if the difference between the pieces is large, then the fact that the stronger one can be interdicted by the weaker one is simply an integral part of its piece value. And IMO this is not the reason the 4A-9N example is so biased. The problem there is that the pieces of one side are all worth more than TWICE that of the other. Rooks against Knights would not have the same problem, as they could still engage in R vs 2N trades, capturing a singly defended Knight, in a normal exchange on a single square. But 3 vs 1 trades are almost impossible to enforce, and require very special tactics. It is easy enough to verify by playtesting that playing CCC vs AAA (as substitutes for the normal super-pieces) will simply produce 3 times the score excess of playing a normal setup with on one side a C deleted, and at the other an A. The A side will still have only a single A to harrass every C. Most squares on enemy territory will be covered by R, B, N or P anyway, in addition to A, so the C could not go there anyway. And it is not true that anything defended by A would be immune to capture by C, as A+anything > C (and even 2A+anything > 2C. So defending by A will not exempt the opponent from defending as many times as there is attack, by using A as defenders. And if there was one other piece amongst the defenders, the C had no chance anyway. The effect you point out does not nearly occur as easily as you think. And, as you can see, only 5 of my different armies did have duplicated superpieces. All the other armies where just what you would get if you traded the mentioned pieces, thus detecting if such a trade would enhance or deteriorate your winning chances or not.
Reinhard, if I understand you correct, what you basically want to introduce in the evaluation is terms of the type w_ij*N_i*N_j, where N_i is the number of pieces of type i of one side, and N_j is the number of pieces of type j of the opponent, and w_ij is an tunable weight. So that, if type i = A and type j = N, a negative w_ij would describe a reduction of the value of each Archbishop by the presence of the enemy Knights, through the interdiction effect. Such a term would for instance provide an incentive to trade A in a QA vs ABNN for the QA side, as his A is suppressed in value by the presence of the enemy N (and B), while the opponent's A would not be similarly suppressed by our Q. On the contrary, our Q value would be suppressed by the the opponent's A as well, so trading A also benefits him there. I guess it should be easy enough to measure if terms of this form have significant values, by playing Q-BNN imbalances in the presence of 0, 1 and 2 Archbishops, and deducing from the score whose Archbishops are worth more (i.e. add more winning probability). And similarly for 0, 1, 2 Chancellors each, or extra Queens. And then the same thing with a Q-RR imbalance, to measure the effect of Rooks on the value of A, C or Q. In fact, every second-order term can be measured this way. Not only for cross products between own and enemy pieces, but also cooperative effects between own pieces of equal or different type. With 7 piece types for each side (14 in total) there would be 14*13/2 = 91 terms of this type possible.
Derek Nalls:
| The additional time I normally give to playtesting games to improve
| the move quality is partially wasted because I can only control the
| time per move instead of the number of plies completed using most
| chess variant programs.
Well, on Fairy-Max you won't have that problem, as it always finishes an
iteration once it decides to start it. But although Fairy-Max might be
stronger than most other variant-playing AIs you use, it is not stronger
than SMIRF, so using it for 10x8 CVs would still be a waste of time.
Joker80 tries to minimize the time wastage you point out by attempting
only to start iterations when it has time to finish them. It cannot always
accurately guess the required time, though, so unlike Fairy-Max it has
built in some emergency breaks. If they are triggered, you would have an
incomplete iteration. Basically, the mechanism works by stopping to search
new moves in the root if there already is a move with a similar score as on
the previous iteration, once it gets in 'overtime'. In practice, these
unexpectedly long iterations mainly occur when the previously best move
runs into trouble that so far was just beyond the horizon. As the tree for
that move will then look completely different from before, it takes a long
time to search (no useful information in the hash), and the score will
have a huge drop. It then continues searching new moves even in overtime
in a desparate attempt to find one that avoids the disaster. Usually this
is time well spent: even if there is no guarantee it finds the best move
of the new iteration, if it aborts it early, it at least has found a move
that was significantly better than that found in the previous iteration.
Of course both Joker80 and Fairy-Max support the WinBoard 'sd' command,
allowing you to limit the depth to a certain number of plies, although I
never use that. I don't like to fix the ply depth, as it makes the engine
play like an idiot in the end-game.
| Can you explain to me in a way I can understand how and why
| you are able to successfully obtain valuable results using this
| method?
Well, to start with, Joker80 at 1 sec per move still reaches a depth of
8-9 ply in the middle-game, and would probably still beat most Humans at
that level. My experience is that, if I immediately see an obvious error,
it is usually because the engine makes a strategic mistake, not a tactical
one. And such strategic mistakes are awefully persistent, as they are a
result of faulty evaluation, not search. If it makes them at 8 ply, it is
very likely to make that same error at 20 ply. As even 20 ply is usually
not enough to get the resolution of the strategical feature within the
horizon.
That being said, I really think that an important reason I can afford fast
games is a statistical one: by playing so many games I can be reasonably
sure that I get a representative number of gross errors in my sample, and
they more or less cancel each other out on the average. Suppose at a
certain level of play 2% of the games contains a gross error that turns a
totally won position into a loss. If I play 10 games, there is a 20% error
that one game contains such an error (affecting my result by 10%), and only
~2% probability on two such errors (that then in half the cases would
cancel, but in other cases would put the result off by 20%).
If, OTOH, I would play 1000 faster games, with an increased 'blunder
rate' of 5% because of the lower quality, I would expect 50 blunders. But
the probability that they were all made by the same side would be
negligible. In most cases the imbalace would be around sqrt(50) ~ 7. That
would impact the 1000-game result by only 0.7%. So virtually all results
would be off, but only by about 0.7%, so I don't care too much.
Another way of visualizing this would be to imagine the game state-space
as a2-dimensional plane, with two evaluation terms determining the x- and
y-coordinate. Suppose these terms can both run from -5 to +5 (so the state
space is a square), and the game is won if we end in the unit circle (x^2 +
y^2 < 1), but that we don't know that. Now suppose we want to know how
large the probability of winning is if we start within the square with
corners (0,0) and (1,1) (say this is the possible range of the evaluation
terms when we posses a certain combination of pieces). This should be the
area of a quarter circle, PI/4, divided by the area of the square (1), so
PI/4 = 79%.
We try to determine this empirically by randomly picking points in the
square (by setting up the piece combination in some shuffled
configuration), and let the engines play the game. The engines know that
getting closer or farther away of (0,0) is associated with changing the
game result, and are programmed to maximize or minimize this distance to
the origin. If they both play perfectly, they should by definition succeed
in doing this. They don't care about the 'polar angle' of the game
state, so the point representing the game state will make a random walk on
a circle around the origin. When the game ends, it will still be in the
same region (inside or outside the unit circle), and games starting in the
won region will all be won.
Now with imperfect play, the engines will not conserve the distance to the
origing, but their tug of war will sometimes change it in favor of one or
the other (i.e. towards the origin, or away from it). If the engines are
still equally strong, by definition on the average this distance will not
change. But its probability distribution will now spread out over a ring
with finite width during the game. This might lead to won positions close
to the boundary (the unit circle) now ending up outside it, in the lost
region. But if the ring of final game states is narrow (width << 1), there
will be a comparable number of initial game states that diffuse from within
the unit circle to the outside, as in the other direction.
In other words, the game score as a function of the initial evaluation
terms is no longer an absolute all or nothing, but the circle is radially
smeared out a little, making a smooth transition from 100% to 0% in a
narrow band centered on the original circle.
This will hardly affect the averaging, and in particular, making the ring
wider by decreasing playing accuracy will initially hardly have any
effect. Only when play gets so wildly inaccurate that the final positions
(where win/loss is determined) diverge so far from the initial point that
it could cross the entire circle, you will start to see effects on the
score. In the extreme case wher the radial diffusion is so fast that you
could end up anywhere in the 10x10 square when the game finishes, the
result score will only be PI/100 = 3%.
So it all depends on how much the imperfections in the play spread out the
initial positions in the game-state space. If this is only small compared
to the measures of the won and lost areas, the result will be almost
independent of it.
I don't think that 'promoting to a captured piece only' is a simplification of the rules. 'Always promote to Queen' would be a simplification. This just adds a complex rule.
Well, I do not consider the stalemate rule essential to Chess, and there are many variants where stalemate = loss. You won't get rid of many draws, though, when you abolish it. To get rid of draws entirely, you could add some kind of a tie-break to the game, like penalty shootouts in soccer: In a position where FIDE rules would declare draw (50-moves, 3-fold-rep, insuff. material) you could trigger this tie-break. From the moment on it is triggered, the opponent can do two moves in a row, then you can do three moves, then he 4, etc. This would even work for King vs King, as in the end there will be no place you can hide without his King being able to capture you.
Rich Hutnik: | Do you want a flipped rook to become a 'Jester' piece that can | represent any other piece on the board? Guess what the rook does | now. It is that. This has never been a problem when I was playing OTB games. In most variants the choice of promotion piece is a rather academic one anyway, as in practice almost always the strongest piece is chosen. After the promotion, if the piece is then not captured, the game is over in 5 or 6 moves... Even in Capablanca Chess, where there are 3 nearly equivalent pieces available (Q, C and A), it took me months before I discvered that 'underpromotion' to C or A was not properly implemented in my engine Joker80. Although it was considering other promotions than Q in its search, the MakeMove routine at game level always promoted to Q, overruling the choice. This never changed the game result, and I only discovered it when Joker80 announced mate-in-1 on a promotion move, and then the game continued a few more moves before it actually was checkmate. People that want to play variants should have a wider choice of piece equipment anyway. An inverted Rook is a warning sign that whatever it is, it is not a Rook. But nothing is more annoying to a Chess player than having a Knight on the board that doesn't move like a Knight, but as a Camel or Zebra. The solution to that is easy enough: http://home.hccnet.nl/h.g.muller/ultima.html
To Derek: I am aware that the empirical Rook value I get is suspiciously low. OTOH, it is an OPENING value, and Rooks get their value in the game only late. Furthermore, this only is the BASE VALUE of the Rook; most pieces have a value that depends on the position on the board where it actually is, or where you can quickly get it (in an opening situation, where the opponent is not yet able to interdict your moves, because his pieces are in inactive places as well). But Rooks only increase their value on open files, and initially no open files are to be seen. In a practical game, by the time you get to trade a Rook for 2 Queens, there usually are open files. So by that time, the value of the Q vs 2R trade will have gone up by two times the open-file bonus. You hardly have the possibility of trading it before there are open files. So it stands to reason that you might as well use the higher value during the entire game. In 8x8 Chess, the Larry Kaufman piece values include the rule that a Rook should be devaluated by 1/8 Pawn for each Pawn on the board there is over five. In the case of 8 Pawns that is a really large penalty of 37.5cP for having no open files. If I add that to my opening value, the late middle-game / end-game value of the Rook gets to 512, which sounds a lot more reasonable. There are two different issues here: 1) The winning chances of a Q vs 2R material imbalance game 2) How to interpret that result as a piece value All I say above has no bearing on (1): if we both play a Q-2R match from the opening, it is a serious problem if we don't get the same result. But you have played only 2 games. Statistically, 2 games mean NOTHING. I don't even look at results before I have at least 100 games, because before they are about as likely to be the reverse from what they will eventually be, as not. The standard deviation of the result of a single Gothic Chess game is ~0.45 (it would be 0.5 point if there were no draws possible, and in Gothic Chess the draw percentge is low). This error goes down as the square root of the number of games. In the case of 2 games this is 45%/sqrt(2) = 32%. The Pawn-odds advantage is only 12%. So this standard error corresponds to 2.66 Pawns. That is 1.33 Pawns per Rook. So with this test you could not possibly see if my value is off by 25, 50 or 75. If you find a discrepancy, it is enormously more likely that the result of your 2-game match is off from to true win probability. Play 100 games, and the error in the observed score is reasonable certain (68% of the cases) to be below 4.5% ~1/3 Pawn, so 16 cP per Rook. Only thn you can see with reasonable confidence if your observations differ from mine.
Note that you can also use WinBoard as a FEN editor. There are commands (with shortcut keys) to copy FENs from and to the clipboard. And there is an edit-position mode that allows you to conveniently drag and drop pieces over the board, and add new ones from a popup menu when right-clicking a square. http://home.hccnet.nl/h.g.muller/winboardF.html
Note that there has just been released a WinBoard compatible version of the variant-capable engine Dabbaba of Jens Baek Nielsen. One of the games it knows is Knightmate. You can currently watch it play a Knightmate match live against my own engine Fairy-Max, on my Chess-Live! webserver http://80.100.28.169/gothic/knightmate.html for the next one or two days. If anyone knows any other WinBoard engines that can play Knightmate, let me know; then I could hold a tournament.
Drek Nalls: | They definitely mean something ... although exactly how much is not | easily known or quantified (measured) mathematically. Of course that is easily quantified. The entire mathematical field of statistics is designed to precisely quantify such things, through confidence levels and uncertainty intervals. The only thing you proved with reasonable confidence (say 95%) is that two Rooks are not 1.66 Pawn weaker than a Queen. So if Q=950, then R > 392. Well, no one claimed anything different. What we want to see is if Q-RR scores 50% (R=475) or 62% (R=525). That difference just can't be seen with two games. Play 100. There is no shortcut. Even perfect play doesn't help. We do have perfect play for all 6-men positions. Can you derive piece values from that, even end-game piece values??? | Statistically, when dealing with speed chess games populated | exclusively with virtually random moves ... YES, I can understand and | agree with you requiring a minimum of 100 games. However, what you | are doing is at the opposite extreme from what I am doing via my | playtesting method. Where do you get this nonsense? This is approximately master-level play. Fact is that results from playing opening-type positions (with 35 pieces or more) are stochastic quantity at any level of play we are likely to see the next few million years. And even if they weren't, so that you could answer the question 'who wins' through a 35-men tablebase, you would still have to make some average over all positions (weighted by relevance) with a certain material composition to extract piece values. And if you would do that by sampling, the resukt would again be a sochastic quantity. And if you would do it by exhaustive enumeration, you would have no idea which weights to use. And if you are sampling a stochastic quantity, the error will be AT LEAST as large as the statistical error. Errors from other sources could add to that. But if you have two games, you will have at least 32% error in the result percentage. Doesnt matter if you play at an hour per move, a week per move, a year per move, 100 year per move. The error will remain >= 32%. So if you want to play 100 yesr per move, fine. But you will still need 100 games. | Nonetheless, games played at 100 minutes per move (for example) have | a much greater probability of correctly determining which player has | a definite, significant advantage than games played at 10 seconds per | move (for example). Why do I get the suspicion that you are just making up this nonsense? Can you show me even one example where you have shown that a certain material advantage would be more than 3-sigma different for games at 100 min / move than for games at 1 sec/move? Show us the games, then. Be aware that this would require at least 100 games at aech time control. That seems to make it a safe guess that you did not do that for 100 min/move. On the other hand, in stead of just making things up, I have actually done such tests, not with 100 games per TC, but with 432, and for the faster even with 1728 games per TC. And there was no difference beyond the expected and unavoidable statistical fluctuations corresponding to those numbers of games, between playing 15 sec or 5 minutes. The advantage that a player has in terms of winning probability is the same at any TC I ever tried, and can thus equally reliably be determined with games of any duration. (Provided ou have the same number of games). If you think it would be different for extremely long TC, show us statistically sound proof. I might comment on the rest of your long posting later, but have to go now...
This discussion is pointless. In dealing with a stochastic quantity, if your statistics are no good, your observations are no good, and any conclusions based on them utterly meaningless. Nothing of what you say here has any reality value, it is just your own fantasies. First you should have results, then it becomes possible to talk about what they mean. You have no result. Get statistically meaningful testresults. If your method can't produce them, or you don't feel it important enough to make your method produce them, don't bother us with your cr*p instead. Two sets of piece values as different as day and knight, and the only thing you can come up with is that their comparison is 'inconclusive'. Are you sure that you could conclusively rule out that a Queen is worth 7, or a Rook 8, by your method of 'playtesting'? Talk about pathetic: even the two games you played are the same. Oh man, does your test setup s*ck! If you cannot even decide simple issues like this, what makes you think you have anything meaningful to say about piece values at all?
Once upon a time I had a friend in a country far, far away, who had obtained a coin from the bank. I was sure this coin was counterfeit, as it had a far larger probability of producing tails. I even PROVED it to him: I threw the coin twice, and both times tails came up. But do you think the fool believed me? No, he DIDN'T! He had the AUDACITY to claim there was nothing wrong with the coin, because he had tossed it a thouand times, and 523 times heads had come up! While it was clear to everyone that he was cheating: he threw the coin only 10 feet up into the air, on each try. While I brought my coin up to 30,000 feet in an airplane, before I threw it out of the window, BOTH times! And, mind you, both times it landed tails! And it was not just an ordinary plane, like a Boeing 747. No sir, it was a ROCKET plane! And still this foolish friend of mine insisted that his measly 10 feet throws made him more confident that the coin was OK then my IRONCLAD PROOF with the rocket plane. Ridicuoulous! Anyone knows that you can't test a coin by only tossing it 10 feet. If you do that, it might land on any side, rather than the side it always lands on. He might as well have flipped a coin! No wonder they send him to this far, far away country: no one would want to live in the same country as such an idiot. He even went as far as to buy an ICECREAM for that coin, and even ENJOYED eating that! Scandalous! I can tell you, he ain't my friend anymore! Using coins that always land on one side as if it were real money. For more fairy tales and bed-time stories, read Derek's postings on piece values... :-) :-) :-)
Jianying Ji: | Two suggestion for settling debates such as these. First distributed | computing to provide as much data as possible. And bayesian statistical | methods to provide statistical bounds on results. Agreed: one first needs to generate data. Without data, there isn't even a debate, and everything is just idle talk. What bounds would you expect from a two-game dataset? And what if these two games were actually the same? But the problem is that the proverbial fool can always ask more than anyone can answer. If, by recruting all PCs in the World, we could generate 100,000 games at an hour per move, an hour per move will of course not be 'good enough'. It will at least have to be a week per move. Or, if that is possible, 100 years per move. And even 100 years per move are of course no good, because the computers will still not be able to search into the end-game, as they will search only 12 ply deeper than with 1 hour per move. So what's the point? Not only is his an énd-of-the-rainbow-type endeavor, even if you would get there, and generate the perfect data, where it is 100% sure and prooven for each position what the outcome under perfect play is, what then? Because for simple end-games we are alrady in a position to reach perfect play, through retrograde analysis (tablebases). So why not start there, to show that such data is of any use whatsoever, in this case for generating end-game piece values? If you have the EGTB for KQKAN, and KAKBN, how would you extract a piece value for A from it?
Is this story meant to illustrate that you have no clue as to how to calculate statistical significance? Or perhaps that you don't know what it is at all? The observation of a single tails event rules out the null hypothesis that the lottery was fair (i.e. that the probability for this to happen was 0.000,000,01) with a confidence of 99.999,999%. Be careful, though, that this only describes the case where the winning android was somehow special or singled out in advance. If the other participants to the lottery were 100 million other cheating androids, it would not be remarkable in anyway that one of them won. The null hypothesis that the lottery was fair predicted a 100% probability for that. But, unfortunately for you, it doesn't work for lotteries with only 2 tickets. Then you can rule the null hypothesis that the lottery was fair (and hence the probability 0.5) with a confidence of 50%. And 50% confidence means that in 50% of the cases your conclusion is correct, and in the other 50% of the cases not. In other words, a confidence level of 50% is a completely blind, uninformed random guess.
Reinhard Scharnagl: | I am still convinced, that longer thinking times would have an | influence on the quality of the resulting moves. Yes, so what? Why do you think that is a relevant remark? The better moves won't help you at all, if the opponent also does better moves. The result will be the same. And the rare cases it is not, on the average cancel each other. So for the umptiest time: NO ONE DENIES THAT LONGER THINKING TIME PRODUCES SOMEWHAT BETTER MOVES. THE ISSUE IS THAT IF BOTH SIDES PLAY WITH LONGER TC, THEIR WINNING PROBABILITIES WON'T CHANGE. And don't bother to to tell us that you are also convinced that the winning probabilities will change, without showing us proof. Because no one is interested in unfounded opinions, not even if they are yours.
Reinhard, that is not relevant. It will happen on the average as often for the other side. It is in the nature of Chess. Every game that is won, is won by an error, that might not have been made on longer thinking. As the initial position is not a won position for eaiter side. But most games are won by either side, and if they are allowed to think longer, most games are still won by either side. What is so hard to understand about the statement 'the win probability (score fraction, if you allow for draws) obtained from a given quiet, but complex (many pieces) position between equal opponents does not depend on time control' that it prompt people to come up with irrelevancies? Why do you think that saying anything at all that does not mention an observed probability would have any bearing on this statement whatsoever? I don't think the ever more hollow sounding selfdeclared superiority of Derek need much comment. He obviously doesn't know zilch about probability theory and statistics. Shouting that he does won't make it so, and won't fool anyone.
This discussion is too silly for words anyway. Because even if it were true that the winning probability for a given material imbalance would be different at 1 hour per move than it would be at 10 sec/move, it would merely mean that piece values are different for different quality players. And although that is unprecedented, that revelation in itself would not make the piece values at 1 hour per move of any use, as that is a time control that no one wants to play anyway. So the whole endeavor is doomed from the start: by testing at 1 hour per move, either you measure the same piece values as you would at 10 sec/move, and wasted 99.7% of your time, or you find different values, and then you have wrong values, which cannot be used at any time control you would actually want to play...
My small live tourney has led to a proliferation of WinBoard-compatible Knightmate engines. We now have: JokerKM ( http://home.hccnet.nl/h.g.muller/jokerKM.exe) CCCP-Knightmate ( http://www.marittima.pl/cccp) Fairy-Max ( http://home.hccnet.nl/h.g.muller/dwnldpage.html, do not forget to download the accompanying fmax.ini with game definitions!) Dabbaba ( http://homepages.tesco.net/henry.ablett/jims.html) JokerKM is the strongest, CCCP and Fairy-Max are both about 400 Elo points weaker. Dabbaba is a rebuild of an old DOS engine from the 90s, and is some 300 Elo points behind that.
Rich Hutnik: | Anyone think this might be a sound approach? Well, not me! Science is not a democracy. We don't interview people in the street to determine if a neutron is heavier than a proton, or what the 100th decimal of the number pi is. At best, you could use this method to determine the CV rating of the interviewed people. But even if a million people would think that piece A is worth more than piece B, and none the other way around, that doesn't make it so. The only thing that counts is if A makes you win more often than B would. If it doesn't, than it is of lower value. No matter what people say, or how many say it.
Note there are now many free computer programs that can play the 10x8 variants with the Capablanca piece set. Many do use the WinBoard protocol to communicate their moves, so they can be made to play each other automatically under the WinBoard GUI. Pages with many links to downloadable engines you will find at http://home.hccnet.nl/h.g.muller/10x8.html and [at another site.] The results of a recent tournament of the WB compatible engines at long time control (55 min + 5 sec/move), where each engine had to play each other engine 10 times, over 5 different opening setups (Carrera, Bird, Capablanca, and Embassy), led to the following ranking: Rank Name Elo + - games score oppo. draws 1 Joker80 n 2432 96 83 70 80% 2110 0% 2 TJchess10x8 2346 83 76 70 72% 2122 4% 3 Smirf 1.73h 2304 80 75 70 68% 2128 4% 4 Smirf Donation 2165 73 73 70 53% 2148 9% 5 [other software] 6 Fairy-Max 4.8 v 2027 72 77 70 34% 2168 11% 7 BigLion80 4apr 1945 76 84 70 26% 2179 7% 8 ArcBishop80 1.00 1822 86 103 70 15% 2197 4% Except for Smirf 1.73h, all the engines are available for free download, from their various sources. In addition, there exist several programs with incompatible interfaces, such as ChessV and Zillions of Games. Their level of play is not thoroughly tested, as the incompatibility of their interfaces makes it impossible to play them against each other without assistance of a Human operator, which again makes it difficult to conduct the hundreds of games necessary for reliable rating determination. Compared to the ranking above, Zillions would rank at the very bottom. [The above has been edited to remove a name and site reference. It is the policy of cv.org to avoid mention of that particular name and site to remove any threat of lawsuits. Sorry to have to do that, but we must protect ourselves. - J. Joyce]
I am sorry to have put your site in jeopardy, I was not aware that giving a link to a site as a source of information could make you subject to a lawsuit. But why did you delete the reference to poor Michel's program? My own engines are mentioned on the unspeakable website as well, on the very page of which you deleted the link. I even gave permission to its owner to host them there for download, should I no longer want to host them myself. Does that mean I will in the future also not be allowed to mention any of my own engines here??? Would it at least be allowed to mention the perfomance rating of the [other software]? Anyway, people interested in the complete result of the WinBoard General 10x8 Championship 2008, can find it on my own website, on the page: http://home.hccnet.nl/h.g.muller/BotG08G/finalstanding.html
OK, fair enough. But 10x8 variants are rapidly growing more popular with engine programmers, and I intend to contribute to that process through organizing the 'Battle of the Goths' tournament series, and publishing rating lists. I might want to share important developments in that area here, so it would be useful to know which engines can be mentioned, and which not. Is the problem caused by the 'G-word', and should I avoid any reference to engines that contain the G-word as part of their name? So far there are only two of this, but there are likely to be many more in the future, as people tend to name their engines after the variant they are playing.
Would it be OK then, if I just circumscribe the [other software] in my tournament as 'a version of the well known open-source program TSCP, adapted to play some 10x8 variants', and call it 'TSCP-derivative' for short? Or is it too risky to mention the name of popular Chess engines like TSCP even in their normal Chess version, (or Capablanca version), once someone created a derivative of them that is capable to play the unspeakable variant?
I am currently engaged in a massive test effort to understand such short-range leapers. It is slow going, though: there are many possible combinations of moves, especially if you drop the requirement for 8-fold symmetry. And I need at least 400 games to get an acceptable accuracy for the empirical piece value of a ertain piece type. Even then, the statistical (random) error in the piece values is about 0.1 Pawn, if I test them in pairs (to double the effect of any value difference).
Your estimate seems reasonable, from what I have learned so far. 8-fold-symmetric SR compound leapers with N moves seem to have a value close to (30+5/8*N)*N, in centiPawn. That would evaluate to 640 for the Squirrel. And I expect the Squirrel to be one of the stronger such compounds, with this number of moves, because of the 'front' of 5 contiguous forward moves.
First about the potential bug:
I am afraid that I need more information to figure out what exactly was
the problem. This is not a plain move-generator bug; when I feed the game
to to my version of Joker80 here (which is presumably the same as that you
are using), it accepts the move without complaints. It would be
unconceivable anyway that a move-generator bug in such a common move would
not have manifested itself in the many hundreds of games I had it play
against other engines.
OTOH, Human vs. engine play is virtually untested. Did you at any point of
the game use 'undo' (through the WinBoard 'retract move')? It might be
that the undo is not correctly implemented, and I would not notice it in
engine-engine play. In fact it is very likely to be broken fter setting up
a position, as I implemented it by resetting to the opening position and
replaying all moves from there. But this won't work after loading a FEN
(a feature I added only later). This is indeed something I should fix, but
the current work-around would be not to use 'undo'.
To make sure what happened, I would have to see the winboard.debug file
(which records all communication between engine and GUI, including a lot
of debug output from the engine itself). Unfortunately this file is not
made by default. You would have to start WinBoard with the command-line
option /debug, or press + + after starting WinBoard. And
then immediately rename the winboard.debug to something else if a bug
manisfests itself, to prevent it from being overwritten when you run
WinBoard again.
Joker80 also makes a log file 'jokerlog.txt', but this also is
overwritten each time you re-run it. If you didn't run Joker80 since the
bug, it might help if you sent me that file. Otherwise, I am afraid that
there is little I can do at the moment; we would have to wait until the
problem occurs again, and examine the recorded debug information.
About the piece values:
I could make a Joker80 version that reads the piece base values from a
file 'joker.ini' at startup. Then you could change them to anything you
want to test, without the need to re-compile. Would that satisfy your
needs?
Note that currently Joker80 is not really able to play CRC, as it only
supports normal castling
OK, I replaced the joker80.exe on my website by one with adjustable piece values. (If you run it from the command line, it should say version 1.1.14 (h).) I also tried to fix the bug in undo (which I discoverd was disabled altogether in the previous version), and although it seemed to work, it might remain a weak spot. (I foresee problems if the game contained a promotion, for instance, as it might not remember the correct promotion piece on replay.) So try to avoid using the undo. I decided to make the piece values adjustable through a command-line option, rather than from a file, to avoid problems if you want to run two different sets of piece values (where you then would have to keep the files separate somehow). The way it works now is that for the engine name (that WinBoard asks in the startup dialog, or that you can put in the winboard.ini file to appear in the selectable engines there), you should write: joker80.exe P85=300=350=475=875=900=950 The whole thing should be put between double quotes, so that WinBoard knows the P... is an option to the engine, and not to WinBoard. The numerical values are those of P, N, B, R, A, C and Q, respectively, in centiPawn. You can replace them by any value you like. If you don't give the P argument, it uses the default values. If you give a P argument with not enough values, the engine exits. Note that these are base values, for the positionally average piece. For N and B this would be on c3, in the presence (for B) of ~ 6 own Pawns, half of them on the color of the Bishop. A Bishop pair further gets 40cP bonus. For the Rook it is the value for one in the absence of (half-)open files. The Pawn value will be heavily modified by positional effects (centralization, support by own Pawns, blocking by enemy Pawns), which on the average will be positive. Note that you can play two different versions against each other automatically. The first engine plays white, in two-machines mode. (You won't be able to recognize them from their name...)
One small refinement: If the command-line argument was used to modify the piece values, Joker80 will give its own name to WinBoard as 'Joker80.xp', in stead of 'Joker80.np', so that it becomes less hard to figure out which engine was winning (e.g. from the PGN file). Note also that at very long time control you might want to enlarge the hash table; default is 128MB, but if you invoke Joker80 as 'joker80.exe 22 P100=300=....' it will use 256MB (and with 23 in stead of 22 it will use 512MB, etc.)
What characterizes Chess variants: 1) move one piece at a time to an empty cell, or 2) capture an enemy piece by moving into its cell 3) win by capture of royal piece 4) many different piece types 5) a large fraction of the pieces are pawns 6) pawns are weak pieces which move irreversibly, and promote to a stronger piece when advanced enough. Some of these rules can be violated, but only if all other characteristics are very close to a very common variant.
Well, even FIDE Chess violates the defining characteristics, by the non-Chess-like moves of castling and e.p. capture. But, like I stated, violation of some of the rules does not immediately disqualify a game as a CV. Extinction Chess doesn't have a royal piece, but in all other respects it is identical to FIDE Chess. So it is clearly a CV. But I would not call checkers or draughts CVs. In the interpretation that the chips are pawns, (they do promote...), the capture mode and piece variety is too different from common variants to qualify. I do not consider Ultima / Baroque a Chess variant. It does have piece variety, and even a royal piece, but the capture modes are too alien, only the King has a Chess-like capture, most pieces don't. I see no problem with Jacks and Witches. The majority of the pieces are normal Chess pieces. OK, so some Witch moves violate the one-at-a-time rule, like castling does. No problem, as even within this game this is an exception. IMO the array is not relevant as a distinctive trait of variants. You could call them sub-variants at best. Near Chess is simply FIDE Chess. The opening position of Near Chess occurs even in the game tree of FIDE Chess. In that respect FRC is more different from FIDE Chess than Near Chess is: there at least the opening position can be unreachable frrom the FIDE opening.
Well, to get an impression at what you can expect: In my first versions of Joker80 I still used the Larry-Kaufman piece values of 8x8 Chess. So the Bishop was half a Pawn too low, nearly equal to the Knight (as with more than 5 Pawns, Kaufman has a Knight worth more than a lone Bishop, neutraling a large part of the pair bonus.) Now unlike a Rook, a Bishop is very easy to trade for a Knight, as both get into play early. Making the trade usually wrecks the opponent's pawn structure by creating a doubled Pawn, giving enough compensation to make it attractive. So in almost all games Joker played with two Knights against two Bishops after 12 moves or so. Fixing that did increase the playing strength by ~100 Elo points. So where the old version would score 50%, the improved version would score 57%. Now a similarly bad value for the Rook would manifest itself much more difficultly: the Rooks get into play late, there is no nearly equal piece for which a 1:1 trade changes sign, and you would need 1:3 trades (R vs B+2P) or 2:2 trades (R+P for N+N), which are much more difficult to set up. So I would expect that being half a Pawn off on the Rook value would only reduce your score by about 3%, rather than 7% as with the Bishop. After playing 100 games, the score differs by more than 3% from the true win probability more often than not. So you would need at least 400 games to show with minimal confidence that there was a difference. Beware that the result of the games are stochastic quantities. Replay the game at the same time control, and the game Joker80 plays will be different. And often the result will be different. This is true at 1 sec per move, but it is equally true at 1 year per move. The games that will be played, are just a sample from the myriads of games Joker80 could play with non-zero probability. And with fewer than 400 games, the difference between the actually measured score percentage and the probability you want to determine will be in most cases larger than the effect of the piece values, if they are not extremey wrong (e.g. setting Q < B).
It looks OK to me. One caveat: the normalization (e.g. Pawn = 100) is not completely arbitrary, as the engine weights material against positional terms, and doubling all piece values would effectively scale down the importance of passers and King Safety. In addition, the engine also uses some heavily rounded 'quick' piece values internally, where B=N=3, R=5, A=C=8 and Q=9, to make a rough guess if certain branches stand any chance to recoup the material it gave earlier in the branche. So in certain situations, when it is behind 800 cP, it won't consider capturing a Rook, because it expects that to be worth about 500 cP, and thus falls 300 cP below the target. Such a large deficit would be beyond the safety margin for pruning the move. But if the piece values where scaled up such that the 800 merely represented being a Bishop behind, this obviously would be an unjustified pruning. The safety margin is large enough to allow some leeway here, but don't overdo it. It would be safest to keep the value of Q close to 950. I am indeed skeptical to the possibility to do enough games to measure the difference you want to see in the total score percentage. But perhaps some sound conclusions could be drawn by not merely looking at the result, but at the actual games, and single out the Q vs 2R trades. (Or actually any Rook versus other material trade before the end-game. Rooks capturing Pawns to prevent their promotion probably should not count, though.) These could then be used to separately extracting the probability for such a trade for the two sets of piece values, and determine the winning probability for each of the piece values once such a trade would have occurred. By filtering the raw data this way, we get rid of the stochastic noise produced by the (majority of) games whwre the event we want to determine the effect of would not have occurred.
Well, I share that concern. But note that the low Rook value was not only based on the result of Q-2R assymetric testing. I also played R-BP and NN-RP, which ended unexpectedly bad for the Rook, and sets the value of the Rook compared to that of the minor pieces. While the value of the Queen was independently tested against that of the minor pieces by playing Q-BNN. The low difference between R and B does make sense to me now, as the wider board should upgrade the Bishop a lot more than the Rook. The Bishop gets extra forward moves, and forward moves are worth a lot more than lateral moves. I have seen that in testing cylindrical pieces, (indicated by *), where the periodic boundary condition w.r.t. the side edges effectifely simulates an infinitely wide board. In a context of normal Chess pieces, B* = B+P, while R* = R + 0.25P. OTOH, Q* = Q+2P. So it doesn't surprise me that on wider boards R loses compared to Q and B. I can think of several systematic errors that lead to unrealistically poor performance of the Rook in asymmetric playtesting from an opening position. One is that Capablanca Chess is a very violent game, where the three super-pieces are often involved in inflicting an early chekmate (or nearly so, where the opponent has to sacrifice so much material to prevent the mate, that he is lost anyway). The Rooks initially offer not much defense against that. But your chances for such an early victory would be strongly reduced if you were missing a super-piece. So perhaps two Rooks would do better against Q after A and C are traded. This explanation would do nothing for explaining poor Rook performance of R vs B, but perhaps it is B that is strong (it is also strong compared to N). The problem then would be not so much low R value, but high Q value, due to cooperativity between superpieces. So perhaps the observed scores should not be entirely interpreted as high base values for Q, C and A, but might be partly due to super-piece pair bonuses similar to that for the Bishop pair. Which I would then (mistakenly) include in the base value, as the other super-pieces are always present in my test positions. Another possible source of error is that the engine plays a strategy that is not well suited for playing 2R vs Q. Joker80's evaluation does not place a lot of importance to keeping all its pieces defended. In general this might be a winning strategy, giving the engine more freedom in using its pieces in daring attacks. But 2R vs Q might be a case where this backfires, and where you can only manifest the superiority of your Rook force by very careful and meticulous, nearly allergic defense of your troops, slowly but surely pushing them forward. This is not really the style of Joker's play. So it would be interesting to do the asymmetreic playtesting for Q vs 2R also with other engines. But TJchess10x8 only became available long after I started my piece value project, TSCP-G does not allow setting up positions (although now I know a work-around for that, forcing initial moves with both ArchBishops to capture all pieces to delete, and then retreating them before letting the engine play). And Smirf initially could not play automatically at all, and when I finally made a WB adapter for it so that it could, fast games by it where more decided by timing issues than by play quality (many losses on time with scores like +12!). And Fairy-Max is really a bit too simplistic for this, not knowing the concept of a Bishop pair or passed pawns, besides being a slower searcher.
[I deleted this post, because I accidentally posted it in the wrong discussion.]
Is there any special reason you want to keep the Pawn value equal in all trial versions, rather than, say, the total value of the army, or the value of the Queen? Especially in the Scharnagl settings it makes almost every piece rather light compared to the quick guesses used for pruning. Note that there are so many positional modifiers on the value of a pawn (not only determined by its own position, but also by the relation to other friendly and enemy pawns) that I am not sure what the base value really means. Even if I say that it represents the value of a Pawn at g2, the evaluation points lost on deleting a pawn on g2 will depend on if there are pawns on e- and i-file, and how far they are advanced, and on the presence of pawns on the f- and h-file (which mighht become backward or isolated), and of course if losing the pawn would create a passer for the opponent. If I were you, I would normalize all models to Q=950, but then replace the pawn value everywhere by 85 (I think the standard value used in Joker is even 75). I don't think you could say then that you deviate from the model, as the models do not really specify which type of Pawn they use as a standard. My value refers to the g2 pawn in an opening setup. Perhaps Reinhard's value refers to an 'average' pawn, in a typical pawn chain occurring in the early middle game, or a Pawn on d4/e4 (which is the most likely to be traded). As to the B-pair: tricky question. The way you did it now would make the first Bishop to be traded of the value the model prescribes, but would make the second much lighter. If you would subtract half the bonus, then on the average they would be what the model prescribes. The value is indeed hard-wired in Joker, but if you really want, I could make it adjustable through a 8th parameter.
Well, I do not really play CVs myself, but I love to watch games played by my engines, especially blitz games. And from this I learned that Knightmate is a CV that definitely works. It is just different enough from FIDE Chess to make it interesting, but familiar enough that you immediately can grasp it. Great game! Similarly for the 10x8 Capablanca variants. They are very interesting because of the Archbishop, which tends to be very active.
'Have you tried the Modern Capablanca Random Chess viariant with your engines?' No, my engines do not have FRC-type castling ability yet. It is still on my to-do list for Joker80, together with allowing it to play on 8x8 by filling up part of the board with impassible objects. (It already uses such objects to confine the pieces to 10x8, as its internal board is 32x12, so this is a minor change; it just has to adapt the positional center-points table to where the new corners are. And of course use a different type of castling.) The main objective would be to play in FRC competitions. The Modern CRC variant doesn't particularly appeal to me. The resulting games should be indistinguishable from normal CRC. The only difference is the opening array. The Bishop adjustment rule is also an opening thing. Opening theory never had much appeal to me, I consider it the dullest part of Chess. None of my engines ever had an opening book, even in variants like 8x8 FIDE, where extensive opening theory exists. The Bishop adjustment rule seems awkward from an aestethic point of view, and half-hearted from a logical point of view: first you change the rules by allowing arrays with like Bishops, and then you largely subvert the effect of itby allowing the adjustment. As the disadvantage of having the Bishops on like colors was measured by me to be half a Pawn, not doing it would be very poor strategy. For exploring the possibilities like Bishops offer, it would be much cleaner to augment the Bishop with a single orthognal backward step as non-capture only. Then people can actually use it without hesitation, as they can always undo the effect later. The extra move of such a 'Naughty Bishop' hardly has any tactical value in itsels, as it is a non-capture, and directed backwards. It added only about 15 cP to the piece value. Introducing a piece of different gait is much cleaner than adding a special, complicated rule. The symmetric castling seems to add nothing, it looks just like a difference for the sake of being different. The same holds for the inversion symmetry in stead of vertical-flip symmetry. This doesn't mean this would be a poor game to play, of course. But I think such irrelevant differences do make it a poor design as a CV.
'I cannot speak for Reinhard Scharnagl at all, though.' This is exactly the problem. 'base value' for Pawns is a very ill-defined concept, as it is the smallest of all piece base values, while the positional terms regarding to Pawns are usually the largest of all positional terms. And the whole issue of pawn-structure evaluation in Joker is so complex that I am not even sure if the average of positional terms (over all pawns and over a typical game) is positive or negative. Pawns get penalties for being doubled, or having no Pawns next or behind them on neigboring files. They get points for advancing, but they get penalties for creating squares that no longer can be defended by any Pawn. My guess is that in general, the positional terms are slightly positive, even for non-passers not involved in King Safety. A statement like 'a Knight is worth exactly 3 Pawns' is only meaningful after exactly specifying which kind of pawn. If the Scharnagl model evaluates all non-passers exactly the same (except, perhaps, edge Pawns), then the question still arises how to most-closely approximate that in Joker80, which doesn't. And simply setting the Joker80 base value equal to the single value of the Scharnagle model is very unlikely to do it. Good differentiation in Pawn evaluation is likely to impact play strength much more than the relative value of Pawns and Pieces, as Pawns are traded for other Pawns (or such trades are declined by pushing the Pawn and locking the chains) much more often than they can be traded for Pieces.
'Do you think these piece values will work smoothly with Joker80 running under Winboard F yet remain true to all three models?' Yes, I think these values will not conflict in anyway with any of the hard-wired value approximates that are used for pruning decisions. At least not to the point where it would lead to any observable effect on playing strength. (Prunings based on the piece values occur only close to the leaves, and engines are usually quite insensitive as to how exactly you prune there.)
'Let me provide another challenge for people here regarding pawns. How much is a pawn that moves only one space forward (not initial 2) but starts on the third row instead of second worth in contrast to a normal chess pawn? How much is it worth alone, and then in a line of pawns that start on the third row?' But this is a totally normal FIDE Pawn... It would get a pretty large positional penalty if it was alone (isolated-pawn penalty). In a complete line of pawns on the 3rd rank it would be worth a lot more, as it would not be isolated, and not be backward. All in all it would be fairly similar to having a line of Pawns on second rank, as the bonus for pushing the Pawns forward 1 square is approximately cancelled by not having Pawn control anymore over any of the squares on the 3rd rank.
'Because of all this, I suggest evaluating entire configuration of pieces, rather than a single piece.' This is exactly what Chess engines do. But it is a subject that transcends piece values. Material evaluation is supposed to answer the question: 'what combination of pieces would you rather have, without knowing where they stand on the board'. Piece values are an attempt to approximate the material evaluation as a simple sum of the value of the individual pieces, making up the army. It turns out that material evaluation is by far the largest component of the total evaluation of a Chess position. And this material evaluation again can be closely approximated by a sum of piece values. The most well-known exception is the Bishop pair: having two Bishops is worth about half a Pawn more than double the value of a single Bishop. Other non-additive terms are those that make the Bishop and Rook value dependent on the number of Pawns present. To account for such effects some engines (e.g. Rybka) have tabulated the total value of all possible combinations of material (ignoring promotions) in a 'material table'. Such tables can then also account for the material component of the evaluation that gives the deviation from the sum of piece values due to cooperative effects between the various pieces. Useful as this may be, it remains true that piece values are by far the largest contribution to the total evaluation. The only positional terms that can compete with it are passed pawns (a Pawn on 7th rank is worth nearly 2.5 normal Pawns) and King Safety (having a completely exposed King in the middle game, when the opponent still has a Queen or similar super-piece, can be worth nearly a Rook).
Derek Nalls: | This might require very deep runs of moves with a completion time | of a few weeks to a few months per pair of games to achieve | conclusive results. It still escapes me what you hope to prove by playing at such an excessively long Time Control. If the result would be different from playing at a a more 'normal' TC, like one or two hours per game, (which IMO will not be the case), it would only mean that any conclusions you draw on them would be irrelevant for playing Chess at normal TC. Furthermore, playing 2 games will be like flipping a coin. The result, whatever it is, will not prove anything, as it would be different if you would repeat the test. Experiments that do not give a fixed outcome will tell you nothing, unless you conduct enough of them to get a good impression on the probability for each outcome to occur.
Derek: | Conclusions drawn from playing at normal time controls are | irrelevant compared to extremely-long time controls. First, that would only be true if the conclusions would actually depend on the TC. Which is a totally unproven conjecture on your part, and in fact contrary to any observation made at TCs where such observations can be made with any accuracy (because enough games can be played). This whole thing reminds me of my friend, who always claims that stones fall upward. When I then drop a stone to refute him, he jsut shrugs, and says it proves nothing because the stone is 'not big enough'. Very conveniently for him, the upward falling of stones can only be observed on stones that are too big for anyone to lift... But the main point is of course, if you draw a conclusion that is valid only at a TC that no one is interested in playing, what use would such a conclusion be? | The chance of getting the same flip (heads or tails) twice-in-a-row | is 1/4. Not impressive but a decent beginning. Add a couple or a | few or several consecutive same flips and it departs 'luck' by a | huge margin. Actually the chance for twice the same flip in a row is 1/2. Unless you are biased as to what the outcome of the flip should be (one-sided testing). And indeed, 10 identical flips in a row would be unlikely to occur by luck by a large margin. But that is rather academic, because you won't see 10 identical results in a row between the subtly different models. You will see results like 6-4 or 7-3, which will again be very likely to be a result of luck (as that is exactly what they are the result of, as you would realize after 10,000 games when the result is standing at 4,628-5,372). Calculate the number of games you need to typically get a result for a 53-47 advantage that could not just as easily have been obtained from a 50-50 chance with a little luck. You will be surprised... | I have wondered why the performance of computer chess programs is | unpredictable and varied even under identical controls. Despite | their extraordinary complexity, I think of computer hardware, | operating systems and applications (such as Joker80) as deterministic. In most engines there alwas is some residual indeterminism, due to timing jitter. There are critical decision points, where the engine decides if it should do one more iteration or not (or search one more move vs aborting the iteration). If it would take such decisions purely on internal data, like node count, it would play 100% reproducible. But most engines use the system clock, (to not forfeit on time if the machine is also running other tasks), and experience the timing jitter caused by other processes running, or rotational delays of the hard disk they had been using. In multi-threaded programs this is even worse, as the scheduling of the threads by the OS is unpredictable. Even the position where exactly the program is loaded in physical memory might have an effect. But in Joker the source of indeterminism is much less subtle: it is programmed explicitly. Joker uses the starting time of the game as the seed of a pseudo-random-number generator, and uses the random numbers generated with the latter as a small addition to the evaluation, in order to lift the degeneracy of exactly identical scores, and provide a bias for choosing the move that leads to the widest choice of equivalent positions later. The non-determanism is a boon, rather than a bust, as it allows you to play several games from an identical position, and still do a meaningful sampling of possible games, and of the decisions that lead to their results. If one position would always lead to the same game, with the same result (as would occur if you were playing a simple end-game with the aid of tablebases), it would not tell you anything about the relative strength of the armies. It would only tell you that this particular position was won / drawn. But noting about the millions of other positons with the same material on the board. And the value of the material is by definition an average over all these positions. So with deterministic play, you would be forced to sample the initial positions, rather than using the indeterminism of the engine to create a representative sample of positions before anything is decided. | In fact, to the extent that your remarks are true, they will | support my case if my playtesting is successful that the | unlikelihood of achieving the same outcome (i.e., wins or | losses for one player) is extreme. This sentence is to complicated for me to understand. 'Your case' is that 'the unlikelyhood of achieving the same outcome is extreme'? If the unlikelyhood is extreme, is that the same as that the likelyhood is extreme? Is the 'unlikelyhood to be the same' the same as the 'likelyhood to be different'? What does 'extreme' mean for a likelyhood? Extremely low or extremely high? I wonder if anything is claimed here at all... I think you make a mistake by seeing me as a low-quality advocate. I only advocate minimum quantity to not make the results inconclusive. Unfortunately, that is high, despite my best efforts to make it as low as possible through asymmetric playtesting and playing material imbalances in pairs (e.g. 2 Chancellors agains two Archbisops, rather than one vs one). And that minimum quantity puts limits to the maximum quality that I can afford with my limited means. So it would be more accurate to describe me as a minimum-(significant)-quantity, maximum-(affordable)-quality advocate...
'Do not you realize that forcing Joker80 to do otherwise must reduce its playing strength significantly from its maximum potential?' On the contrary, it makes it stronger. The explanation is that by adding a random value to the evaluation, branches with very many equal end leaves have a much larger probability to have the highest random bonus amongst them than a branch that leads to only a single end-leaf of that same score. The difference can be observed most dramatically when you evaluate all positions as zero. This makes all moves totally equivalent at any search depth. Such a program would always play the first legal move it finds, and would spend the whole game moving its Rook back and forth between a1 and b1, while the opponent is eating all its other pieces. OTOH, a program that evaluates every position as a completely random number starts to play quite reasonable ches, once the search reaches 8-10 ply. Because it is biased to seek out moves that lead to pre-horizon nodes that have the largest number of legal moves, which usually are the positions where the strongest pieces are still in its possession. It is always possible to make the random addition so small that it only decides between moves that would otherwise have exactly equal evaluation. But this is not optimal, as it would then prefer a move (in the root) that could lead (after 10 ply or so) to a position of score 53 (centiPawn), while all other choices later in the PV would lead to -250 or worse, over a move that could lead to 20 different positions (based on later move choices) all evaluating as 52cP. But, as the scores were just approximations based on finite-depth search, two moves later, when it can look ahead further, all the end-leaf scores will change from what they were, because those nodes are now no longer end-leaves. The 53 cP might now be 43cP because deeper search revealed it to disappoint by 10cP. But alas, there is no choice: the alternatives in this branch might have changed a little too, but now all range from -200 to -300. Not much help, whe have to settle for the 43cP... Had it taken the root move that keeps the option open to go to any of the 20 positions of 52cP, it would now see that their scores on deeper search would have been spread out between 32cP and 72cP, and it could now go for the 72cP. In other words, the investment of keeping its options open rather than greedily commit itself to going for an uncertain, only marginally better score, typically pays off. To properly weight the expected pay-back of keeping options that at the current search depth seem inferior, it must have an idea of the typical change of a score from one search depth to the next. And match the size of the random eval addition to that, to make sure that even sligtly (but insignificantly) worse end-leaves still contribute to enhancing the probability that the branch will be chosen. Playing a game in the face of an approximate (and thus noisy) evaluation is all about contingency planning. As to the probability theory, you don't seem to be able to see the math because of the formulae... P(hh) = 0.5*0.5 = 0.25 P(tt) = 0.5*0.5 = 0.25 ______________________+ P(two equal) = 0.5
Indeed, it is a stochastic way to simulate mobility evaluation. In the presence of other terms it should of course not be made so large that it dominates the total evaluation. Like explicit mobility terms should not dominate the evaluation. But its weight should not be set to zero either: properly weighted mobility might add more than 100 Elo to an engine. Joker has no explicit mobility in its evaluation, and relies entirely on this probabilistic mechanism to simulate it. The disadvantage is that, because of the probabilistic nature, it is not 100% guaranteed to always take the best decision. On rare occasions the single acceptable end leave does draw a higher random bonus than one-hundred slightly better positions in another branch. OTOH it is extremely cheap to implement, while explicit mobility is very expensive. As a result, I might gain an extra ply in search depth. And then it becomes superior to explicit mobility, as it only counts tactically sound moves, rather than just every move. So it is like safe mobility verified by a full Quiescence Search. In my assesment, the probabilistic mobility adds more strength to Joker than changing the Rook value by 50cP would add or subtract. This can be easily verified by play-testing. It is possible to switch this evaluation term off. In fact, you have to switch it on, but WinBoard does this by default. To prevent it from being switched on, one should run WinBoard with the command-line option /firstInitString='new'. (The default setting is 'new\nrandom'. If Joker is running as second engine, you will of course have to use /secondInitString='new'.)
I would have thought that 'twice the same flip in a row' was pretty unambiguous, especially in combination with the remark about two-sided testing. But let's not quibble about the wording. The point was that for two-sided testing, if you suspect a coin to be loaded, but have no idea if it is loaded to produce tail or heads, thw two flips tell you exactly nothing. They are either the same or different, and on an unbiased coin that would occur with equal probability. So the 'confidence' of any conclusion as to the fairness of the coin drawn from the two flips would be only 50%. I.e. not better than totally random, you might as well have guessed if it was fair or not without flipping it at all. That would also have given you a 50% chance of guessing correct.
Derek: 'I hope you can handle constructive advice.' It gives me a big laugh, that's for sure. Of course none of what you say is even remotely true. That is what happens if you jump to conclusions regarding complex matters you are not knowledgeable about, without even taking the trouble to verify your ideas. Of course I extensively TESTED how the playing strength of Joker80, (and all available other engines), varied as a function of time control. This was the purpose of several elaborate time-odds tournament I conducted, where various versions of most engines participated that had to play their games in 36, 12, 4, 1:30, 0:40 or 0:24 min, where handicapped engines were meeting non-handicapped ones in a full round robin. (I.e. the handicaps were factors 3, 9, 24, 54 or 90, where only the strongest engines were handicapped upto the very maximum, and the weakest only participated in an unhandicapped version). And of course Joker80 behaves similar to any Shannon-type engine that is reasonably free of bugs: its playing strength measured in Elo monotonically increases in a logarithmic fashion, approximately to the formula rating = 100*ln(time). So Joker80 at 5 min/move crushes Joker80 at 1 sec per move, as you could have easily found out for yourself. So that much for your nonsense about Joker80 failing to improve its move quality with time. For some discussion on one of the tournaments, see: http://www.talkchess.com/forum/viewtopic.php?t=19764&postdays=0&postorder=asc&topic_view=flat&start=34 At that time Fairy-Max still had a hash-table bug that made it hang (and subsequently forfeit on time) that was striking at a fixed rate per second, so that Fairy-Max started to forfeit more and more games at longer TC. Since then the bug has been identified and repaired, and now also Fairy-Max performs progressively better at longer TC. So nice try, but next time better save your breath for telling the surgeon how to do his job before he will perform open heart surgery on you. Because he has no doubt much more to learn from you regarding cardiology than I have in the area of building Chess engines... Things are as they are, and can become known by observation and testing. Believing in misconceptions born out of ignorance is not really helpful. Or, more explicitly: if you think you know how to build better Chess engines than other people, by all means, do so. It will be fun to confront your ideas with reality. In the mean time I will continue to build them as I think best, (and know is best, through extensive testing), so you should have every chance to surpass them. Lacking that, you could at least _use_ the engines of others to check out if your theories of how they behave have any reality value. You don't have to depend on the time-odds tourneys and other tests I conduct. You might not even be aware of them, as the developers of Chess engines hardly ever publish the thousands of games they do for testing if their ideas work in practice.
Derek Nalls: | Nonetheless, completing games of CRC (where a long, close, | well-played game can require more than 80 moves per player) | in 0:24 minutes - 36 minutes does NOT qualify as long or even, | moderate time controls. In the case of your longest 36-minute games, | with an example total of 160 moves, that allows just 13.5 seconds per | move per player. In fact, that is an extremely short time by any | serious standards. In my experience most games on the average take only 60 moves (perhaps because of the large strength difference of the players). As early moves are more important for the game result as late moves (even the best moves late in the game do not help you if your position is already lost), most engines use 2.5% of the remaining time for their next move (on average, depending on how the iterations end compared to the target time). That would be nearly 54 sec/move at 36 min/game in the decisive phase of the game. That is more than you thought, but admittedly still fast. Note, however, that I also played 60-min games in the General Championship (without time odds), and that Joker80 confirms its lead over the competitors it manifested at faster time controls. But I don't see the point: Joker80's strength increases with time as expected, in the range from 0.4 sec to 36 sec per move, in a regular and theoretically expected way. This is over the entire range where I tested the dependence of the scoring percentage of various material imbalances, which extended to only 15 sec/move, and found it to be independent of TC. So your 'explanation' for the latter phenomenon is just nonsense. The effect you mention is observed NOT to occur, and thus cannot explain anything that was observed to occur. Now if you want to conjecture that this will all miraculously become very different at longer TC, you are welcome to test it and show us convincing results. I am not going to waste my computer time on such a wild and expensive goose chase. Because from the way I know the engines work, I know that they are 'scalable': their performance at 10 ply results from one ply being put in front of 9-ply search trees. And that extra ply will always help. If they have good 9-ply trees, they will have even better 10-ply trees. But you don't have to take my word for it. You have the engine, and if you don't want to believe that at 1 hour per move you will get the same win probability as at 1 sec/move, or that at 1 hour per move it won't beat 10 min//move, just play the games, and you will see for yourself. It would even be appreciated if you publish the games here or on your website. But, needless to say, one or two games won't convince anyone of anything. | 'since I am not a computer chess programmer, I cannot possibly | know what I am talking about when I dare criticize an important | working of your Joker80 program' Well, you certainly make it appear that way. As, despite the elaborate explanation I gave of why programs derive extra strength from this technique, you still draw a conclusion that in practice was already shown to be 100% wrong earlier. And if you think you will run into the problem you imagine at enormously longer TC, well, very simple: don't use Joker80, but use some other engine. You are on your own there, as I am not specifically interested in extremely long TC. There is always a risk in using equipment outside the range of conditions for which it was designed and tested, and that risk is entirely yours. So better tread carefully, and make sure you rule out the percieved dangers by concise testing. | You must decide upon and define the primary function of your | Joker80 program. I do not see the dilemma you sketch. The purpose is to play ON AVERAGE the best possible move. If you do that, you have the best chance to win the game. If I can achieve that through a non-deterministic algorithm better than through a deterministic one, I go for the nondeterministic method. That it also diversifies play, and makes me less sensitive to prepared openings from the opponent, is a win/win situation. Not a compromise. As I explained, it is very easy to switch this feature off. But you should be prepared for significant loss of strength if you do that.
| I just cannot understand how any rational, intelligent man could | believe that introducing chaos (i.e., randomness) is beneficial | (instead of detrimental) to achieving a goal defined in terms of | filtering-out disorder to pinpoint order. It would be very educational then to get yourself acquainted with the current state of the art of Go programming, where Monte-Carlo techniques are the most successful paradigm to date... | When you reduce the power of your algorithm in any way to | filter-out inferior moves, you thereby reduce the average | quality of the moves chosen and consequently, you reduce | the playing strength of your program- esp. at long time controls. Exactly. This is why I _enhance_ the power of my algorithm to filter out inferior moves. As the inferior moves have a smaller probability to draw a large positive random bonus than the better moves. They thus have a lower probability to be chosen, which enhances the average quality of the moves, and thus playing strength. At any time control. It is a pity this suppression of inferior moves is only probabilistic, and some inferior moves by sheer luck can still penetrate the filter. But I know of no deterministic way to achieve the same thing. So something ais better as nothing, and I settle for the inferior moves only getting a lower chance to pass. Even if it is not a zero chance, it is still better than letting them pass unimpededly. | In any event, the addition of the completely-unnecessary module of | code used to create the randomization effect within Joker80 that | you desire irrefutably makes your program larger, more complicated | and slower. Can that be a good thing? Everything you put into a Chess engine makes it larger and slower. Yet, taking almost everything out, only leaves you with a weak engine like micro-Max 1.6. The point is that putting code in also can make the engine smarter, improve its strategic understanding, reduce its branching ratio, etc. So if it is a good thing or not does not depend on if it makes the engine larger, motre complicated, or slower. It depends on if the engine still fits in the available memory, and from there produces better moves in the same time. Which larger, more complicated and slower engines often do. As always, testing is the bottom line. Actually the 'module of code' consists only of only 6 instructions, as I derive the pseudo-random number from the hashKey. But the point you are missing is this: I have theoretical understanding of how Chess engines work, and therefore are able to extrapolate their behavior with high confidence from what I observe under other conditions (i.e. at fast TC). Just like I don't have to travel to the Moon and back to know its distance from the Earth, because I understand geometry and triangulation. So I know that if including a certain evaluation term gives me more accurate scores (and thus more reliable selection of the best move) from 8-ply search trees, I know that this can only give better moves from 18-ply search trees. As the latter is nothing but millions of 8-ply search trees grafted on the tips of a mathematically exact 10-ply minimax propagation of the score from the 8-ply trees towards the root. Anyway, it is not of any interest to me to throw months of valuable CPU time to answer questions I already know the answer to.
Derek: | The moral of the story is that randomization of move selection | reduces the growth in playing strength that normally occurs with | time and plies completed. This is not how it works. For one, you assume that at long TC there would be fewer moves to chose from, and they would be farther apart in score. This is not the case. The average distribution of move scores in the root depends on the position, not on search depth. And in cases were the scores of the best and second-best move are far apart, the random component of the score propagating from the end-leaves to the root is limited to some maximum value, and thus could never cause the second-best move to be preferred over the best move. The mechanism can only have any effect on moves that would score nearly equal (within the range of the maximum addition) in absence of the randomization. For moves that are close enough in score to have an effect on, the random contribution in the end-leaves will be filtered by minimax while trickling down to the root in such a way that it is no longer a homogeneously distributed random contribution to the root score, but on average suppresses scores of moves leading to sub-trees where the opponent had a lot of playable options, and we only few, while on average increasing scores where we have many options, and the opponent only few. And the latter are exactly the moves that, in the long term, will lead you to positions of the highest score.
No engine I know of prunes in the root, in any iteration. They might reduce the depth of poor moves compared to that of the best move by one ply, but they will be searched in every iteration except a very early one (where they were classified as poor) to a larger depth then they were ever searched before. So at any time their score can recover, and if it does, they are re-searched within the same iteration at the un-reduced depth. This is absolutely standard, and also how Joker80 works. Selective search, in engines that do it, is applied only very deep in the tree. Never close to the root.
It is a bit misleading to list Capablanca Random Chess (and its Modern variant) here with a fixed array. It would have been more logical to depict an empty board, with the pieces next to it... For completeness, it should at least have mentioned what the restrictions for setting up the pieces are. Note that most engines able to play Scharnagl's CRC are also capable of playing opening setups he explicitly excludes from being CRC, i.e. with undefended Pawns, with Bishops next to each other, or with Q and A on like colors. They in general consider this all the same variant, 'Capablanca Random Chess', as opening arrays in the program logic are not part of the variant definition, but are simply set by loading a FEN. CRC in some programs is considered a different variant from Capablanca, dure to the different castling rules (like FRC is considered a distinct variant from normal FIDE Chess).
George Duke: | However, the reality is if one is playing many CVs, precisely | Number One, not any of the other 3, is far and away the most valuable | and reliable tool, effectively building on experience. Time is also | factor, and unless Player can adjust quickly, without extensive | playtesting, and make ballpark estimates of values, all is lost on | new enterprise. We recommend just this Method One, increasing | facility at it, for serious CV play, and in turn the designer | needs to try to keep the game somewhat out of reach for Computer. Well, I guess that it depends on what your standards are. If you are satisfied with values that are sometimes off by 2 full Pawns, (as the case of the Archbishop demonstrates to be possible), I guess method #1 will do fine for you. But, as 2 Pawns is almost a totally winning advantage, my standards are a bit higher than that. If I build an engine for a CV, I don't want it to strive for trades that are immediately losing.
Derek: | Could you please give me example lines within the 'winboard.ini' | file that would successfully do so? I need to make sure every | character is correct. Sorry for the late response; I was on holiday for the past two weeks. The best way to do it is probably to make the option dependent on the engine selection. That means you have to write it behind the engine name in the list of pre-selectable engines like: /firstChessProgramNames={... 'C:/engines/joker/joker80.exe 23' /firstInitString='new\n' ... } And something similar for the second engine, using /secondInitString. The path name of the joker80 executable would of course have to be where you installed it on your computer; the argument '23' sets the hash-table size. you could add other arguments, e.g. for setting the piece values, there as well. Note the executable name and all engine argument are enclosed by the first set of quotes (which are double quotes, but these for some reason refuse to print in this forum), and everything after this first syntactical unit on the line is interpreted as WinBoard arguments that should be used with this engine when it gets selected. Note that string arguments are C-style strings, enclosed in double quotes, and making use of escape sequences like '\n' for newline. The defauld value for the init strings is 'new\nrandom\n'.
George Duke: | Has initial array positioning already entered discussion for | value determinations? No, it hasn't, and I don't think it should, as this discussion is about Piece Values, and not about positional play. Piece values are by definition averages over all positions, and thus independent on the placement of pieces on the board. Note furthermore that the heuristic of evaluation is only useful for strategic characteristics of a position, i.e. characteristics that tend to be persistent, rather than volatile. Piece placement can be such a trait, but not always. In particular, in the opening phase, pieces are not locked in the places they start, but can find plenty better places to migrate to, as the center of the board is still complete no-man's land. Therefore, in the opening phase, the concept of 'tempo' becomes important: if you waste too much time, the opponent gets the chance to conquer space, and prevent your pieces that were badly positioned in the array to properly develop. I did some asymmetric playtesting for positional values in normal Chess, swapping Knights and Bishops for one side, or Knights and Rooks. I was not able to detect any systematic advantage the engines might have been deriving from this. In my piece value testing I eliminate positionsal influences by playing from positions that are as symmetric as possible given the material imbalance. And the effect of starting the pieces involved in the imbalance in different places is averaged out by playing from shuffled arrays, so that each piece is tried in many different locations.
Well, never mind. The symmetrical playtesting would not have given any conclusive results with anything less than 2000 games anyway. The asymmetrical playtesting sounds more interesting. I am not completely sure what Smirf bug you are talking about, but in the Battle of the Goths Championship it happened that Smirf played a totally random move when it could give mate in 3 (IIRC) according to both programs (Fairy-Max was the lucky opponent). This move blundered away the Queen with which Smirf was supposed to mate, after which Fairy-Max had no trouble winning with an Archbishop agains some five Pawns. This seems to happen when Smirf has seen the mate, and stored the tree leading to it completely in its hash table. It is then no longer searching, and it reports score and depth zero, playing the stored moves (at least, that was the intention). I have never seen any such behavior when Smirf was reporting non-zero search depth, and in particular, the last non-zero-depth score before such an occurence (a mate score) seemed to be correct. So I don't think there is much chance of an error when you believe the mate announce,emt and call the game. Of course you could also use Joker80 or TJchess10x8, which do not suffer from such problems.
| However, TJChess cannot handle my favorite CRC opening setup, | Embassy Chess, without issuing false 'illegal move' warnings and | stopping the game. Remarkable. I played this opening setup too, in Battle of the Goths, and never noticed any problems with TJchess. It might have been another version, though. If you have somehow saved the game, be sure to send it to Tony, so he can fix the problem.
OK, I see the problem now. I forgot that the Embassy array is a mirrored one, with the King starting on e1, rather than f1. And that to avoid any problems with it in Battle of the Goths, I did not really play Embassy, but the fully equivalent mirrored Embassy. And with that one, none of the engines had problems, of course. Actually it seems that it is not TJchess that is in error here: e1b1 does seem a legal castling in Embassy. It is WinBoard_F which unjustly rejects the move. Most likely because of the FEN reader ignoring specified castling rights for which it does not find a King on f1 and a Rook in the indicated corner. The fact that you don't have this problem with Joker80 is because Joker80 is buggy. (Well, not really; it is merely outside its specs. Joker80 considers all castlings with a non-corner Rook and King not in the f-file as CRC castlings, which are only allowed in variant caparandom, but not in variants capablanca or *UNSPEAKABLE*. And Joker80 does not support caparandom yet.) So the fact that you don't see any problems with Joker80 is because it will never castle when you feed it the Embassy setup, so that WinBoard doesn't get the chance to reject the castling as illegal. And if the opponent castles, WinBoard would reject it as illegal, and not pass it on to Joker80. I guess the fundamental fix will have to wait until I implement variant caparandom in WinBoard; I think that both WinBoard and Joker80 are correct in identifying the Embassy opening position as not belonging to Capablanca Chess, but needing the CRC extension of castling. (Even if it is only a limited extension, as the Rooks are still in thre corner.) And after I fix it in WinBoard, I still would have to equip Joker80 with CRC capability before you could use it to play the Embassy setup. It is not very high on my list of priorities, though, as I see little reason to play Embassy rather than mirrored Embassy.
I am still contemplating how to generalize the castling in Joker80. There are two issues there: how to commnicate the move from and to the GUI, and how to indicate the existence of the rights. Currently WinBoard protocol has two mechanisms to set up a position: by loading the engine with a FEN, or (obsolete) through an edit command to enter a list of pieces+squares combinations. The latter mode does not support transmission of castling rights at all, and is only a legacy for backward compatibility with old engines. So for loading position, we only have to provide a mechanism for indicating castling rights in a FEN. The FRC-type notation only indicates the position of the Rook. The King does not need to be indicated in games where there is only one King, and the positioning of Rook w.r.t. King implies where both will end up. This means we would have to devise some other notation for cases where the King ends elsewhere. I am not sure if it would make sense to generalize so much as to allow castlings where the Rook does not end up next to, and on the other side of the King. There is of course no limit to the craziness of moves that could be called a castling, but one would have to put a limit somewhere, to not fall victim to the 'maximum-flexibility, minimum-usefulness' principle. I would probably implement it like this: in the castling-rights field of the FEN, the letter indicating the file of the Rook that can castle (which does not necessarily have to be an orthodox Rook, as the FEN makes it obvious what piece is standing there) can be followed by a digit, indicating the number of squares the King ends up away from the corner. The final position of the Rook would be implied by this. Example: normal King-side castling rights could be indicated by H1. The 1 would be the default (on an 8x8 board), and could be omitted for upward compatibility with Shredder-FEN. In Capablanca Chess the opening would have castling rights A2J1a2j1, equivalent to AJaj (or KQkq). Symmetric castling rights like in Janus Chess would be indicated as A1J1a1j1, or A1Ja1j when deleting the redundant defaults. Multiple castling rights to the same side could exist next to each other: A2A1J2J1a2a1j2j1 would allow short as well as long castling in both directions. For transmitting the castling moves, one could use King captures own Rook. In games where the same Rook could be used for castlings with multiple King destinations, one could give the King step to its final destination in stead. If this could also be a normal King move, one could append an r as 5th character to identify it as a castling, using the syntax that would otherwise be used for promotions. In PGN one could use similar strategies to indicate non-orthodox castlings, and use suffix =R on a King move to specify castling. I think this covers most cases encountered in practice. Problems only occur only if there would be multiple castlings with the same Rook, and at the same time castlings with a Rook on the left would have the same King destination as those with a Rook on the right. Because the move notation cannot indicate at the same time which Rook to use and specify where the King should go. But this seems to outlandish to worry about. To cover cases where K and R do not end up next to each other, we could put a second digit in the FEN castling-rights specifier for the final position of the Rook wrt the corner. (I.e. normal king-side castling = h12.) This obviously could lead to problems on very wide boards, that require multiple digits to specify distance to the corner. So perhaps it is better to separate King and Rook destination by a period (h1.2). Indicating the move would be a problem, as two destinations might have to be specified to unambiguously identify the move (e.g. if all castlings are allowed weher the King steps any number of squares >=2 towards a Rook, and then the Rook can go to any square the King passed over.) One could just specify King and Rook final squares (i.e. O-O = g1f1), but in FRC there is no guarantee that this cannot be a normal move. In which case the 'r' could again be used as 5th character, to indicate castling. In PGN we could reserve a character used in stead of the piece indicator for castlings, say 'O'. Conclusion: it is difficult to design a notation that would be general and universal; different games seem to need different ways to specify the moves and rights.
Well, one has to think ahead a little bit to keep the road to future extensions open, and not paint oneself into a corner. This is why I tackle a fairly large number of cases at once. I don't see the unicity of the FEN strings as a serious problem; if the logic behind the various systems would allow a certain castling to be described in multiple ways, one can supply an additional rule to specify which method should be used preferentially. e.g. if K or H could be used to unambiguously specify king-side castling, one should use K. In the FEN reader I would not even pay attention to that, and have it understand both, as this is usually easier. An important issue is how much effort one should put into upkeeping a unified approach, in which both game state and played variant are unambiguously specified by the FEN. One might wonder if it is sensible to require, say, that a position from Janus Chess and a position from Capablanca Chess should be considered as different positions from the same variant, 'fullchess'. This puts a lot of extra burdon on the FEN: For indicating game state, the castling rights have to indicate only which pieces moved. Wanting the FEN to specify the castling method, or other aspects of the rules (e.g. if Pawns can promote to Chancellors, or not), might just be asking for trouble. So perhaps I was overdoing it. It might be more useful to consider variants like Janus or Grotesque as distinct from Capablanca. KQkq could then be used to indicate castling rights in all three cases. Games with more than 2 Rooks could use the Shredder-FEN system without any problem, as long as there is only one King (so that all rights disappear once this King moves). Only in games with multiple Kings AND multiple Rooks there would be a problem. This only leaves move notation. In particular in variants where a castling to a particular side can be performed in more than one way, like in Grotesque. A very general way to solve this in PGN would be to provide a mechanism to specify moves that displace more than one piece, by joining the moves with an &. So an alternative to write h-side castling in Grotesque could be Ke1-i1&Rj1-h1 (or in short, Ki1&Rh1). In WinBoard protocol, the moves between engine and GUI are not transmitted in SAN, but simply as FROM and TO square appended to each other, with an optional 5th character to indicate promotion piece (e.g. e7e8q). Perhaps the best system there would be to encode variable castlings by using k or q as the 'promotion' character, to indicate if the K-side or Q-side Rook is to be used, and make the squares indicate the to-square of King and Rook, respectively. These notations would always be recognizable as not indicating promotions, as both the mentioned squares would be on the same rank.
'If the effort isn't too big' is a big if. Normal chess, Capablanca, FRC and CRC are similar enough not to cause too much trouble. Although I consider it already a nasty trait that some of the rules have to be implied by the board size, such as to which pieces a Pawn may promote. If a board width of 10 is taken to imply Chancellor and Archbishop are allowed, the problems with Janus Chess or Chancellor Chess I would consider already pretty bad. To unify those with Capablanca/CRC would require different letters for their Pawns. In Janus Chess you would have to indicate the deviating castling mode amongst the rights. In the O-i-h system you would always be able to deduce if the K-side or Q-side rook is to be used by the ordering of the King and Rook destination? I guess we could indeed consider it a defining property of a castling that it swaps the order of King and Rook. I am not aware of any exceptions to this, even in FRC/CRC the King is required to be between the two Rooks. So I guess your system is acceptable for in the PGN, with the additional preference rule that if there is only one castling possible to the given side, it would be written as O-O or O-O-O. The way the move is transmitted between engine and GUI in WB protocol is a matter specific to the WinBoard GUI. And WinBoard does generate the list of allowed moves itself, there is no way in WB protocol to request it from the engine. As this type of castling with multiple King and Rook destinations is about as crazy as they get, anticipating this format would probably enough to cover everything. Even the normal castling requires the GUI to recognize castlings, and know which Rook to move and where. (This caused problems when I had Fairy-Max play Cylinder Chess, as a King crossing the side edge was considered a castling, and led to the displacement of a second piece on the display board!) In fact, with the assumption that the relative orientation of King and Rook destination squares implies which Rook has to be used (and even if there are several Rooks on that side, only the one nearest to the King could be involved in castling), there is no need to convey any information in the 5th character other than that it is a castling. So an O here would be quite convenient, as promotion pieces have to be lower case in WB protocol. For a really dumb interface (like my battle-of-the-Goth javascript viewer) it is necessary to fully specify from- and to-square of each piece that is moved separately. So there I transmit O-O as e1g1h1f1 and e4xf5 e.p. as e4f5e4f4.
'I regard this to be a very big weakness, ...' It is not that bad, if you realize that there is a different mechanism in WB protocol to achieve the same thing: by sending a move to the engine, you implicitly ask the engine if this move is valid. If it isn't, the engine ignores it, and sends an 'Illegal move' message to the GUI. The GUI then undoes the move on the display, and relays the illegal-move message to the user, or engine opponent. As most engines are not considering the possibility that their moves might be illegal, the game then usally hangs, however. But the GUI doesn't have to know about the rules in this case. There is a big advantage of having the GUI understand the game, though, when you cannot rely 100% on the engines. Then the GUI itself can judge the legality of the moves sent to it, make the engine that does the illegal move forfeit (you don't want to give engines the power to make their opponent forfeit...), and forfeit engines that do make false illegal-move claims. And in WinBoard_F this functionality can be switched on optionally in many variants. The other variants can still be played, with legality checking off. | if there is only ONE castling move possible at all, it will be | matched by ANY string starting with 'O'. Why would you want that? It still would not help to understand all games of variants that interchange the O-O and O-O-O notation. I am not sure why you would want to allow translation in PGN, but not in FEN. In WinBoard I added the external option (/pieceToCharTable) to alter the piece indicators. These would then be used consistently in both FEN and PGN, without any internal tags. The most common case where this is needed is for reading PGN files from a different language. The problem with the tags you propose, is that they still would have to single out one language as 'standard', and other languages will never agree with that. So I think it is better to make that specification external. After experience with some less-known variants (e.g. Knightmate) I realized that this translation should be independently settable for the external interface (saving and loading FEN and PGN), and each engine. This to play engines using different 'standards' against each other. It might even be desirable to have a separate translation table for external reading and writing, so that the GUI could be used to convert PGN files in one language to another one. I don't think the J-system you use for Janus Chess is acceptable: it only works for opening positions. It should be possible to play from arbitrary positions specified by FEN. And you have no way to indicate that Pawns cannot promote to C in positions where there is no A/Janus on the board. The only logical solution would be to use the J for Janus Pawns, different from Capablanca Pawns by not being able to promote to C. But for Chancellor-Chess positions without a Chancellor, you would then need yet another letter for 'Chancellor Pawns'. And this is what I don't like at all. In Seirawan Chess you would need Capablanca Pawns on an 8x8 board, different from normal Pawns, so you would also need different indicators for Pawns in normal and Capablanca. Or use different letters for Capablanca Pawns on 8x8 and 10x8 boards, to preserve compatibility with existing 10x8 FENs. It quickly prolifirates, and becomes very awkward... Much better to just consider them different variants.
I thought the Arabic Queen (i.e. in Shatranj) was called Ferz (=general), not Wazir (= Grandvizer). In WinBoard_F I took the turban as the symbol for representing a Wazir. This based on the observation that the standard symbols for the pieces of FIDE Chess are mostly head covers symbolizing the profession of the piece. (Animals and buildings are necessary exceptions to this.) And a turban seemed fitting for a Grandvizer. For the Ferz WinBoard_F uses a Chinese mandarin cap. This because the Mandarins / Ministers / Advisors of Xiangqi are basically Ferzes that are not allowed to leave the palace. WinBoard_F uses these Ferz and Wazir symbols also in Shogi, for Silver and Gold, respectively. The latter can be seen as Ferz and Wazir augmented with one or two forward moves. (In Shogi all pieces move just a bit different, also the Knight and Pawn, which are represented by their standard symbol.)
| If 10x8 (10 wide, 8 deep) which is what I assume is the subject | is dead, it is because you can't find the board anywhere. This is not true at all. 10x8 boards and Chess sets are even sold commercially, and a lot of people play 10x8 variants. There are even internet servers dedicated to it. It is just that it is not allowed on this forum to mention where. This has to do more with being brain dead, than with the game being dead, though. Where I live, virtually every Chess board has a 10x10 board on the back (for playing draughts). For instance, I have a very nice one where the squares are wood inlays of light and dark wood. If I want to play a 10x8 game, I can simply cover the two back ranks by a piece of cardboard or clip a small wooden plank over it.
I think this page does a very poor job in describing Falcon Chess compared to the compact description other CVs get on these pages. And this for addition of only a single new piece, for which the move rules could have been described (within the context of what can be supposed common background knowledge for visitors of these pages) with the in a single sentence: 'The Falcon is a lame (1,3)+(2,3) compound leaper, which follows any of the three shortest paths to its desination consisting of orthogonal and diagonal steps, which can be blocked on any square it has to pass over to reach its destination.' That, plus possibly a diagram of the Falcon moves and a diagram of the array should have been sufficient. As it is now, I could not even find the rules for promotion amongst the landslide of superfluous description. Note that my rating only applies to the page, not to the game. I haven't formed an opinion on that yet, it could be the greatest game in the World for all I know. I have a question, though: What exactly does the patent cover? As a layman in the field of law, I associate patents with material object which I cannot manufacture and sell without a license. Rules for a Chess variant are not objects, though. So which of the following actions would be considered infringements on the Falcon patent, if performed without licensing: 1) I play a game of Falcon Chess at home 2) I publish on the internet the PGN of a Falcon Chess game I played at home 3) I write a computer program that plays Falcon Chess, and let it play in my home 4) I publish on the internet the games this program played 5) I conduct a Falcon Chess tournament with this engine in various incarnations as participant, and make it available for life viewing on the internet 6) I post my Falcon-Chess capable engine for free download on my website 7) I post the source code of that engine for free download on my website 8) I sell the engine as an executable file 9) I sell a staunton-style piece set with 10 Pawns, orthodox Chess men, and two additional, bird-like pieces 10) I sell a set of small wooden statues, looking like owls, falcons, elephants and lions, plus some staunton-style pawns, plus a 10x8 board. ????????? And more specifically: would it require a license to equip my engine Joker80 to play Falcon Chess (next to Janus, Capablanca and CRC) and post it on the internet for free download? If so, could such a license be granted, and what would be the conditions?
On a more chessic note: Why are you saying the Falcon does not have mating potential? I ran a tablebase for the Bison (a non-lame (1,3)+(2,3) compound leaper), and the KBiK ending on 8x8 is generally won (100.00% with wtm, 80% with btm including King captures, longest mate 27 moves). I think it should make no difference that the Falcon, unlike the Bison, is lame: to block any Falcon move, at least 2 obstacles are needed, and this is very unlikely to ever occur with only two other pieces (the Kings) on the board. In the mating sequence I looked at, the Bison is mainly shutting in the bare King from open space, the attacking King closing off another direction. I also cannot imagine that expanding the board size from 8x8 to 10x8 would make any difference. Usually it is the narrowest dimension that counts. So I really think King+Falcon vs King is a totally won end-game on 10x8, although I could not exactly say in how many moves.
Incredible! After four posts of extremely verbose and incoherent ranting you managed to address exactly zero of my questions / issues. So let me repeat the most important ones: 1) Am I allowed to include Falcon Chess as a variant that Joker80 can play, and offer it for free download? 2) To which pieces can a Pawn promote in this game? 3) Does, according to you, a single Falcon have mating potential against a bare King on a 10x8 board? And on 8x8? Note that the fact that this page is a copy of a patent application, which by necessity has to be elaborate, is in no way an excuse. No one forces you to publish the full patent application here. In fact patent applications are utterly unsuitable as contents on chessvariants.com. They are meant for lawyers.
You talk a lot, but you say very little. I have no idea what Game Courier is, and I see no reason why anything that should be said between us cannot be said here. If you see this CV-page as advertizement for your patented game, you would do well to declare your licensing policy here. That would be much more useful than describing the excruciating detail, and boasting how many variants the patent covers. The latter just scares people away from the variant. But you made it clear you don't want me to make an engine to play your game. Well, so be it. There are plenty of other variants that are not patented. Even the patented UNSPEAKABLE variant does allow me to implement the game in an engine. But if you want to use your patent to prevent anyone can play the game, it is up to you... I am not sure what better place there could be to discuss the KFaK end-game than here, or why the mating potential of a piece that (due to the patent) can only occur in this variant would be 'of lesser interest'. What do you think the CV pages are for, really? To talk about Chess, or to talk about patents????
| Who would waste time on Centaur(BN) and Champion(RN) anymore? No one | is interested. Knight was not meant to be compounded but must always | stand alone. I am in total disagreement. The Archbishop (BN) is one of the most elegant and agile pieces ever designed. It is simply marvelous to see it in action, dazziling the opponent. To do justice to its play, this piece should be renamed 'Dancer'.
Since there is also a table of piece values on this page, I should point out that playtesting with almost any program shows that the Archbishop values given here are way too low: A+P typically beat Q, and A+A+P beats C+C, in any game phase. See the discussion on the page of th Aberg variant. Derek Nalls in the mean time revised his piece values accordingly.
The logic of FRC castling is that the outcome of the castling in a shuffled variant will be the 'normal' location of K and R, i.e. the one they get by performing normal castling from an unshuffled variant. This could similarly be applied to shuffle variants of games with free castling. Just pick any of the final positions that the castling type with centralized King and corner Rooks could give.
The table was actually given in my first post in that thread. It might be burried very deep under what unfortunately followed. I am sorry about that, it arose from Derek taking it as a personal offense when I pointed out that the values he derived from elaborate theoretical arguments were no good in practice. So let me repeat the table: P = 85 N = 300 B = 350 (B-pair bonus = 40) R = 475 A = 875 C = 900 Q = 950 I usually normalize on the Q value, as Pawns come in many forms (doubled, isolated, backward, passed, doubled, edge), with extremely different values. So giving a value for the Pawn wouldn't mean a thing if you don't tell at the same time which kind of Pawn. All values above are opening values, where the Pawn is f2/f7 in the opening array. The values were empirically derived from playing 20,000 games starting from opening setups where selected pieces were deleted from the array to create a material imbalance. Rooks are known to be orth a lot more in end-games than in the early opening, so the Rook value might be higher than given here during most of the game.
| Just as Greg Strong was about to finish Falcon Chess for ChessV, | it is fine to put Falcon in engine free of charge throughout years | 2008, 2009 and 2010 to play, so long as strictly not commercial | (unlike standards-degrading Zillions). Please inform what is going on, | and put the patent #5690334 two or more times about the Rules or | Board, since ultimately we would like to market Falcon material too. OK, I will see what I can do. I will let you know as soon as I made something, and send it to you privately, so that you can judge if it meats your standards.
Sam Trenholme: | I think the best way to come up with reasonable piece values is | to have a computer program play itself hundreds or thousands of | games of a given chess variant, and use genetic selection (evolution) | to choose the version of the program with piece values that win the | most games. This has been tried many times before (in normal Chess, mainly), with an appalling lack of success. The reason is that even a very wrong evaluation of one of the pieces (say a program that values a Queen at 7.5 in stead of a correct 9.5) still only leads to bad trades in a minority of the cases, like 10-20%. This because it does require complex exchanges (like Q vs R+B) rather than simple 1:1 exchanges, which simply do not present themselves very often in games. In the other 80-90% of games the Queens will be traded against each other, which will always be a neutral trade to each program, no matter how much they differ in Queen value. When only 10% of the games is affected by the piece-value difference, while 90% with equal trades will have a 50-50 outcome, that latter set of games will still produce statistical noise, which is added to the noise in the overall result score, while it dilutes the systematic bias because of the different evaluation. If, after a wrong trade (say Q vs R+B) induced by the faulty Q value the side with Q left would have 70% winning chance, (20% above par), the total score would be only 52% (2% above par). To detect this score excess with the same relative statistical accuracy as the 20% excess would require 100x as many games. (So 10,000 in stead of 100.) The situation could be lightly improved if one would SELECT games before analysis, throwing out all games whith equal trades (Q vs Q). Then you eliminate the random noise produced by them from the result, and would only look at the sample with unequal trades (with 20% score access). You would still need about 100 of those, but now you only have to play 1,000 games to acquire them. Problem is that judging which games were affected by the piece-value under study is a bit subjective, as Q vs Q trades do not always occur through QxQ, ...xQ combinations, but sometimes are part of a larger exchange with intermediate positions with material imbalance (not affecting the engine decision, as they were within the horizon of the engine search). This is why I adopted the methodology of forcing the material imbalance under study into the game from the very beginning. ('Asymmetric playtesting' in Dereks terminology.) All games I play are then relevant. Even if the engine I play with has a completely wrong idea of the piece values, the material advantage it has at the outset (say A vs B+N) will be needlessly traded away in only 10% of the cases. And if both engines share the misconception, that will be still lower, as the opponent would actually try to avoid such trades. So you will have only a light suppression of the excess score, and very little noise added to it. | I could do it myself, but I need a chess variant engine that I can | set, from the command line, white's and black's values of the pieces | independently, and then have the variant play itself a game of the | chess variant. I would only applaud this. In fact the engines you request do exist, and can be downloaded as free software from my website: * Joker80 allows setting of the piece values by a command-line argument, (a feature requested by Derek, as discussed below in this thread) but is limited to 10x8 variants with the Capablanca pieces. * Fairy-Max allows implementation of (nearly) arbitrary fairy pieces, and setting of their values, through a configuration file (fmax.ini) that can be changed with a simple text editor like Notepad. (This because the options here are too elaborate to fit on the command line.) The format of the piece description is admittedly a bit cumbersome (that is, the description of the way it moves, especially if it is a complex move like that of a Crooked Bishop), but the fmax.ini that is provided for download includes many examples for the more common fairy pieces. And changing the piece value is absolutely trivial. Furthermore, I am always available to provide assistance.
Reinhard: | P.S.: Thus it would be best to present a short and convincing argument. If you don't consider the fact that 'the side having piece A beats that having piece(s) B 90% of the time' a convincing argument to value A higher than B, I don't really see what could convince you. But the point really is that Derek ASKS you to provide such a version of SMIRF to help him conduct an experiment he thinks is interesting. So it should not really matter if the piece values here request are CORRECT or not, because this is exactly what he is trying to test. The question is if you want to HELP him searching for the truth, by providing him what he needs to conduct this search...
Greg Strong: | The current state of ChessV? Hi Greg! Good to see you back here! What would be very interesting to me is to have a version of ChessV that just plays as a console application rather than having its own graphical interface. Preferably using WinBoard protocol, of course, but I would be happy with anything, no matter how primitive. I wouldn't even mind if the graphical interface stays, as long as ChessV would also print the move it makes on its standard output, and reads and accepts a move from its standard input. If it could do those things, I would be able to write an adapter to run it under WinBoard against other engines. Would this be feasible? | For onething, it doesn't anticipate forced repetition draws in | the appropriate way; even if it is winning by quite a margin, | it won't break the repetition to save it's advantage. I can vouch from my experience with micro-Max that this is extremely important. It is almost impossible to quantitatively judge performace of the engine if it can be tricked into rep draws, to the point where very clear improvements do not affect the score at all. In uMax I could fix 95% of the problem by recognizing returns to positions that already occurred before in the game history, and evaluate those at 0.00. That it cannot really plan (or avoid) forced repetitions that occur entirely in the tree is only a minor problem, as it does not occur too often that repetitions can be forced.
Some more empirical data for those who are working on ab-initio theories for calculating piece values: I did determine piece values of several fully symmetric elementary and compound leapers, with various number of target squares, in the context of a normal FIDE Chess set in which the extra pieces were embedded in pairs, on a 10x8 board. The number of target suares varied from 4 (Ferz, Wazir) to 24 (Lion), the length of the leap limited to 2 in one dimension. From this I noticed that the empirical values for pieces with the same number of target squares tends to cluster quite closely around certain values: 140, 285, 630 and 1140 centiPawn for pieces witth 4, 8, 16 and 24 targets, respectively). These values can be fitted by the expression value = (30 + 5/8*N)*N, where N is the number of target squares (when unrestricted by board edges). Then I went on by testing how the value of a piece that is nearly saturated with moves (so that taking away 1 or 2 hardly affects its overall manouevrability), namely the Lion, which in this context is a piece that reaches all targets in the 5x5 area in which it is centered, is affected by taking some moves away. In taking away moves, I preserved the left-right symmetry of the piece, so that moves not on a file were disabled in pairs. This left 14 distinct leap types, which I disabled one at a time. I then played a pair of the thus handicapped pieces agains a pair of unimpede Lions (plus the FIDE array present for both sides). The resulting excess scores in favor of the unimpeded Lions when disabling the various leaps were: forward: 12.5% 15.1% 8.8% 15.1% 12.5% 11.0% 14.8% 5.9% 14.8% 11.0% 6.8% 5.0% - 5.0% 6.8% 7.9% 7.8% 5.4% 7.8% 5.4% backward: 7.6% 9.1% 5.4% 9.1% 7.6% So disabling both forward (2,2) leaps (fA in Betza notation) reduced the winning chances by 12.5%, etc. Pawn odds produces approximately 12% excess score, so the two fA leaps marginally contribute a value of 100 cP to the Lion. Note the values were obtained from 1000-game matches, and thus have a statistical error of ~1.5% (12.5 cP). Also note that the numbers on the vertical symmetry axis have to be multiplied by at least a factor 2 for fair comparison with the other numbers, as in these tests only a singlke leap was disabled, as opposed to two in the other. As a general conclusion, we can see that forward moves are worth more (by about a factor 5/3) than sideway or backward moves. 'Narrow' leaps seem on average to be worth a little bit more than 'wide' leaps. I am not sure if the scores above can be taken at face value as indicators of the relative value of the particular leap in other pieces as well; it could be that there are some cooperative contributions here that are included in the measured marginal values, as all other leaps are always present. E.g. the forward narrow Knight leaps are worth most, but perhaps this is because they provide the piece with distant solo mating potential of a King on the backrank. Perhaps the observed piece values should be corrected for such global properties (of the entire target pattern) first, before ascribing the value to individual leaps. Note, however, that all the marginal scores add up to 123%, which is about 10.25 Pawns, not so far away from empirical total value of the Lion. This suggest that cooperative effects can't be on the average very large. Next I intend to figure out how much of the value of each leap is provided by its capture aspect, and how much by the non-capture aspect, by disabling these separately. For the distant leaps, I want furthermore to know how much the value changes if these are turned into lame leaps, blockable on a single intermediate square. Note that the Xiangqi Horse (Mao) drops a factor 2 in value compared to an orthodox Knight by being lame. I also want to investigate if the lameness is worse if the piece has no capture to the square on which th move could be blocked (a cooperative effect).
Why do you call this piece a Falcon, btw? A falcon is a flying creature, which makes it a very illogical name for a piece that can be blocked from reaching its destination by ground-based troops! Octopus would have been a more apt name, as the piece seems to have distinct tentacles that can slither through openings in the crowd, to attack what is at the other side. With a bit of imagination (considering neighboring (3,1) and (3,2) as one waving tentacle tip) there are even eight!
Reinhard: Why is it relevant what you like, for giving Derek what he wants? He would not ask for it unles HE liked it. You seem to deny other people what they want/need/like because it is different from what you like. Just add 2 Pawns to the value of any Archbishop. No matter how the rest of your evaluation is, that can't be that difficult? If you think the evaluation becomes totally non-sensical because of this is Derek's problem.
Sam Trenholme: | What is you experience with how being colorbound affects the value | of a short range leaper? I never tried measuring heavily 'challenged' pieces like the Alfil or Dabbaba. So I can only speak for color-bound pieces that can still access 50% of the board, like Bishop, Ferz, Camel, FD. My experience is that, when I measure those in pairs of opposite color, their value hardly suffers. A pair of FDs was worth almost as much as a pair of Knights (580 vs 600). But in analogy to Bishops the value of such a pair should be split in a base value and a pair bonus. A good way to measure the pair bonus seems playing the two color-bound pieces on the same color against a pair on different color. At least for the Bishops this worked quite well, using Joker. Problem is that Fairy-Max is really a bit too simple to measure a subtle effect like this, as its evaluation does not include any pair bonuses. In micro-Max, for orthodox Chess, I simply make the Bishop worth more than a Knight, to bias it against B vs N trades. Although this makes it shy away from B vs N trades even with only a single Bishop for no justifyable reason, this is not very harmful. Unfortunately, this trick does not make it avoid trading Bishops of unlike color against Bishops of like color. And when tboth engines see these as perfectly equal trade, they become very likely, wasting the advantage of the pair. I guess I could fix this by programming the Bishops of either side as different pieces, and give the Bishops of the side that has the pair a larger base value. (And similar for other color-bound pieces.) I have not tried this yet. Note that one should also expect cross-type pair bonuses, e.g. an FD plus a Bishop are worth more if they are on unlike color. I am also not sure how to calculate pair bonuses if there are more than 2 color-bound pieces on the board foreach side. E.g. with 4 Bishops, two on white, two on black, do I have two pairs, or four pairs? I currently believe Betza's conjecture as a working hypothesis, that as long as you have one piece of every color-class, the total value of the set does not suffer from the color boundness. But I haven't tested 8 Alfils per side, and I have no idea how much the value of the set decreases if you have only 4 left. There could be a term that is quadratic in the number of Alfils in the evaluation. All this can in principle be tested, but a piece with 4 targets, like Ferz, is not much worth to begin with (~150 cP on 8x8). The Alfil is most likely not better, even in a dense pack. And pair-bonus effects are usually again a small fraction of the base value, and might be as low as 20 cP. It requires an enormous number of games to get such small difference above the noise threshold.
The Bison definitely has mating potential on an 8x8 board. Denoting Bison by Y: I have built a tablebase for the KYK end-game, and it is 100% won for white to move. (With black to move there are of course positions where the bare King captures an undefended Bison on the first move, and these are then draw.) Longest mate against best defense takes 27 moves. I cannot build tablebases on other boards yet, but I adapted Joker80 so it would move Knights like Bisons. If I let it think a few min/move it does find mate in 20 or so in all psositions where the bare King is not too well centralized (and the white King is). As it is rather easy to drive the bare K out of he center with K+Y, this makes it likely that KYK is also won on 10x8. If I give the winning side a time-odds handicap of a factor 100, (40/60 vs 40/0:36) so it searches only 9-12 ply, where the defending King searches 22-28 ply, the bare King starting from w:Ke1,Yg1 b:Ke8 gets menouevred into mated-in-31 position quite rapidly (without the K+Y side knowing yet), after which it sees the mating net being tightened until the winning side finally gets a mate-in-12 within its horizon. I couldn't say anything about 12x12. Note that the Bison is equivalent to the patented Falcon in these games, as there is not enough material on the board to block the Falcon moves.
George Duke: | Right, that paragraph could be improved, let's see. That was written | in late 1996, when copyright mailed in USA, and not revised for the | CVP 2000 article. If one King and Falcon stand on own back rank, | and other King at its bank rank, with no other pieces on board, no | checkmate is possible with good play. I did some more tests using a converted Joker80 engine, and it seems that on a 10x8 board this statement is plain wrong. Joker has no difficulty at all in checkmating a bare King with King + Falcon, even if they all start from their own backrank (or even if the bare King can start in the center). Even if I let the defending side search 100x longer, making it search ~10 ply deeper, so that it sees the mate coming long before the winning side does, and would avoid it if possible. David Paulowich: | Falcon Chess has the opposite problem: I have not seen anyone state | that King and Falcon can force a lone King into a corner. OK, so I am the first then. ;-) Even an engine with a comparatively shallow search has no problems driving a bare King into a corner with King + Falcon, as long as it knows that it is bad for a bare King to be closer to a corner. Even if the defending side enormously outsearches it. This applies to 8x8 boards (where there is ironclad proof through an end-game tablebase) as well as 10x8 (where it is based on time-odds play testing). This page really need thorough revision. Apart from poor presentation, some of the statements in it are just plain false, or very unlikely to be true at least...
Oh, and since there is no e-mail address in my profile on this discussion board, for people that want to contact me privately: I can be reached with user name h.g.muller, with provider hccnet. nl
I can confirm that this piece has mating potential on an 8x8 board. My tablebase builder says for the King + Carpenter vs King endgame that it is almost always won if the side with the Carpenter has the move. There are only 196 exceptions to this (out of ~ 250,000 positions) where the Carpenter is under diagonal attack in a corner, and its King is too far away to protect it after it moves. Longest mate against optimal defense is 31 moves. There are 100 such positions, e.g. w:Ka1, Carpenter g7, b:Kf6. I am not sure what the interest of 12x12 boards is. Perhaps I should modify my EGTB generator to handle 16x16 board or even 32x32 boards. The current version can do upto 5 men on 8x8, but with the same memory usage it could still handle 3 men on 32x32. And I can always limit it to a subset of the board.
The Kangaroo is yet another Knight + Short-Range leaper compound with mating potential: King + Kangaroo vs King is generally won on all boards upto 10x10 (on 12x12 it is usually draw). On 8x8, only 192 positions (out of ~250,000) are not won with white to move: when the Kangaroo is on a corner square and attacked by the bare King diagonally, and its own King is too far away for the Kangaroo to leap into its save haven. The longest mate against perfect defense on 8x8 is 35 moves. There are 260 such positions, e.g. w:Kb1, Kangaroo a2, b:Kb3 (white to move).
Now that there is talk about how to attract more attention for Chess Variants, perhaps the following is an idea as well. It could be implemented next to, and independently from organizing matches with GMs. We could put some pages on this website where there is live broadcasting of automated games of a few selected CVs between computer programs, say at 10 or 5 min/game, so that people can watch and get an idea of how the game is played. To get an impression of what I am thinking of, see http://home.hccnet.nl/h.g.muller/goths.html . In my experience, people that say they are not interested in Chess variants change their opinion quite easily if they actually see the variants in action. Watching Chess-like blitz games has a hypnotic and adictive effect effect on people anyway, they can't help but being curious at what will happen next. The demo above is just replaying a game I uploaded to the website at my provider's server, and there is no game going on at the moment, so the moves are not updated. If I would post the same page on my PC at home, where I have a game running, anyone clicking a link to the viewer page would get to see the game in progress being replayed at 1 move/sec, until it reaches the current position. From then on it would wait for the playing engines to append their moves to the file 'moves.txt'. The viewer periodically polls this page, and if there are new moves, it updates the display. The play can be fully automated, a new game starting as soon as the previous finishes, between the same engines, or in a round-robin tournament of many engines. In the latter case people would be able to request the current standings and cross table of the tourney. I have already run such tournaments for several 10x8 Capablanca sub-variants and for Knightmate, and currently am preparing one for 'Nightrider Chess' (a variant that is not even in this pages, but which some existing Chess engines do support, identical to FIDE Chess except that the Knights are replaced by Nightriders). So my idea would be to put a link in a prominent place on the chessvariants.com home page to a 'gallery of demo games'. This would lead to a page with some explanation of what people are going to see, and a bunch of links to computers of people willing to run the games, each a different CV. When people would click such a link, they would get a game viewer page like the demo above, displayed in their browser. This javascript-driven page, and the file with moves to broadcast the game, would be fetched directly from the gaming PC. (An alternative would be to install the viewer pages on the chessvariants.com server, and have the computers that play the games upload a new moves.txt file each time a move is played. This would require some alteration of the software, though.) Good candidate CVs for live demo games would be: * 10x8 Capablanca variants * 10x8 Falcon Chess * Knightmate * Shatranj * Courier * Nightrider Chess What do you think of this idea?
100 comments displayed
Permalink to the exact comments currently displayed.