Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - GothicChessInventor

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 »
1
General Discussion / Re: IS THE CHESS VARIANT FORUM DEAD?
« on: September 14, 2019, 10:18:10 am »
Hello,

What happened to all of the activity we had on here earlier this year? While some remains, It has at the very least taken a huge dive. Do any of you know how we can get activity back up?
Thanks,
Asher

Well you CENSORED people. That's why I left. And that's why it deserves to die.

You can't be a PLATFORM and censor people. That's not how it works. A platform allows freedom to the posters in exchange for legal immunity for libel.

A PUBLISHER can edit. But, publishers CAN be sued for libel.

Therein lies the difference.

So, go ahead, be a heavy-handed moderator and continue to censor subject matter experts such as myself, and then you reap what you sow. Enjoy the inactivity.

2
Variant Theory / Re: How to calculate the value of a piece?
« on: April 02, 2018, 09:05:21 am »
[Deleted by moderator]

GothicChessInventor

Thank you for your contribution but please try to keep criticism constructive. Every addition adds something to the forum!
Thanks!
Asher

That was as plain as I could state it. See you later. Good luck with the forum.

3
Variant Theory / Re: How to calculate the value of a piece?
« on: April 02, 2018, 12:47:07 am »
[Deleted by moderator]

4
Variant Theory / Re: How to calculate the value of a piece?
« on: March 31, 2018, 04:11:49 pm »
I think it would be a good idea to create a piece with a value of 1.
It cannot move and cannot capture.

I think it should have a value of i, where i squared = -1, and e raised to the power of 2 x pi x i = 1.

5
Variant Theory / Re: How to calculate the value of a piece?
« on: March 31, 2018, 09:18:04 am »
This question has been on my mind for a while and it perplexes me. It would be interesting if we had a systematic way of assigning pieces values.

I published a paper on this years ago. Google for "80 square chess" or download the paper here:

https://pdfs.semanticscholar.org/330e/6cada5af2191248e09b5910527744592e10d.pdf

6
General Discussion / Re: Games against Programs
« on: March 30, 2018, 02:22:26 pm »
So searching the gating moves in QS should definitely ameliorate things. But it does not solve it entirely; in the same posting I also mention that you have to prevent the stand pat...

I already discharge stand pat. I don't restrict where else in the search I test for gating moves, so it's in Quiescence() and in the nominal Search() routine. The ONLY instance where my current setup is vulnerable is if it takes more than 2 consecutive moves to gate a piece AT THE END of running every non-quiescent position to (otherwise) perfect tranquility at the current depth + extended depth. The deepest such probe I have seen so far is 47-ply at nominal depth 13, and there must be virtually no chance a program could have played best moves in a pv line that deliberately delayed gating one or more pieces for so long due to their being greater rewards to reap afterward. There might be a dozen such positions in all of 64-bits worth of search space.

Focussing on one particular position is very dangerous.

You're jumping to conclusions. I have a growing suite of test positions that run automated with a single command. I have a text dump of the results. In each improved code set, fewer nodes were examined, time to depth decreased appreciably, the pv lines stabilized and made sense up to 2-ply sooner, the branching factor decreased, and the numerical score for the line made more and more sense. If I published all of my tests here, I wouldn't have enough time to get all of my tests done :)

In computer Chess it is almost always possible to find a search technique that speeds up finding the good move in that position, but turns out to weaken the engine in real games.

That does not apply here. This is a massive improvement to the code. Massive. As in worth probably 300 elo compared to the old program. This was a huge improvement, mostly because the older technique was so poorly matched to the task at hand. Just look at the positions the program used to misplay: Losing a Queen for a Hawk after move 2 of the game after a deep search vs. now it finds the correct defensive move in 1.5 seconds with NO SPECIFIC KNOWLEDGE aimed at correcting the miscue. This was search improvement, not knowledge encoding.

7
General Discussion / Re: Games against Programs
« on: March 29, 2018, 06:23:10 pm »
Well, is a Rook on a1 behind a wall of Pawns really worth a Rook? Basically the only thing it does is protect one of the Pawns. The early middle-game is dominated by Knights and Bishops, which can easily jump over Pawns or sneak between them, and it takes a long time before Rooks become of any use.

Yes, and this is why I alluded to my remark as being about as hypothetical as one could get. I knew we each could cite examples and counterexamples, none of which help us code an appropriate solution. I did come across a rather nice coding trick today I should have tried first:



This is the dreaded "White Hawk Threatens Mate And Queen Capture Simultaneously" position that Planchet could not resolve with a search to depth 9 previously. Now it finds the correct move, ...d6! in about one second.

The idea I implemented: Adding Piece Deployment moves to the Quiescence() search! Simple. Quiescence() generates all captures until there are none, and then performs additional tests to see if piece drops are available. It does not consider the position ready for evaluation until all deployment moves have been made, or none can be made even if given the chance to move twice in a row (NULL move, kind of), or all deployable pieces have been captured.

Early on it really bloats the game tree but it finds the moves leading to the sharpest cutoffs, and compounded with the history heuristic, it flies through the move list on subsequent search depths.

8
General Discussion / Re: Games against Programs
« on: March 28, 2018, 06:17:07 pm »
That as a side effect black gates his Hawk should not discourage you, because it is reasonable to assume he would gate that Hawk anyway on some later move. So it should at most be accounted as a tempo gain for black, a small positional advantage.

That in this particular position the gating possibility can be destroyed, is a-typical. A program that speculates "he has not gated it on this move, so now he will never be able to gate it" for no particular reason (which is what ignoring the value of hand pieces amounts to) will be wrong in >99% of the nodes where it makes this speculation. If it would assume that the gating will simply occur later, it would have been right in 99% of the cases. But not here, as this position belongs to the other 1%.

I partially agree and I partially disagree. As you indicated, for the vast majority of the cases, the pieces will get into play, one way or another.

But is a piece off the board, unable to move, really worth the full value of its force if it were on the board? Perhaps the very definition of an overly-hypothetical example, akin to a pinned piece being temporarily worthless (yet its full value stays in tact).

What vexes me: Non-leapers behind the wall of pawns can get permanently stuck with as few as 2 pawn pushes in a locked pawn chain. They're done. The whole game will play out and they won't make a move. While not forced, just a few careless moves can create the situation.

Furthermore, it is possible to play the opening without pushing a single pawn and be way ahead, as in the example most recently shown here. The game is Planchet vs. Viswanathan Raman on Jocly.com and the program's 2 knights deployed, introduced their Musketeer counterparts, and the Queen was chased around before a single pawn push. The game was won before the first pawn move.

Using the Compound Piece Evaluator, the program would not think it was that far behind for most of these lines where Planchet saw it was ahead by an avalanche and a half.

And the program sacrificed a Knight to create the position shown here, which it would never have done unless certain the Musketeer pieces were trapped.

It is a difficult thing to try to program, and I think my Alpha-Beta-Gamma-Delta search has solved it nicely. It evaluates the position both ways: with and without compound pieces. Neither method can fully maximize without some "consent" of the other evaluator. It is the perfect blend, once all of the details are fully resolved. The program uses singular extensions to examine lines that are promising "entombers" of Musketeer pieces without bogging down the search. Likewise, captures that delete the compound piece are sought after specifically rather than just "chance encountered" through the normal searching process.

I'll see if I can post some examples. What is apparent: A new way to search was needed.

9
General Discussion / Re: Games against Programs
« on: March 28, 2018, 12:18:30 pm »
It depends on which stage you already want to see that the gating opportunity will be destroyed. With the the compound-piece/virginity-bonus there are two enormously valuable (>Q) pieces on c8 and f8, which is a pretty good description of reality. In this particular case, there happens to be tactics that can gain one of these pieces (by forking them with the Hawk). That would not have been different if there had been real Queens or Amazons on those squares.

I don't think the piece values for the Hawk and Fortress are that high.
I use the following:

Code: [Select]
piece_value[PAWN] = 100;
piece_value[KNIGHT] = 300;
piece_value[BISHOP] = 325;
piece_value[ROOK] = 500;
piece_value[QUEEN] = 975;
piece_value[HAWK] = 575;
piece_value[UNICORN] = 550;
piece_value[LEOPARD] = 680;
piece_value[ELEPHANT] = 640;
piece_value[CANNON] = 760;
piece_value[FORTRESS] = 770;
piece_value[SPIDER] = 820;
piece_value[ARCHBISHOP] = 790;
piece_value[CHANCELLOR] = 840;
piece_value[DRAGON] = 1350;

So let's look at two different (short) lines of play, with a Compound Evaluator and my Piece Introduction Evaluator.

Line 1.
NxQe6 BxNe6 = H@c8

Compound Evaluator:
White gains Queen - Knight = 975 - 300 = 675.

Piece Introduction Evaluator
White gains Queen - Knight - introduced Hawk =  975 - 300 - 575 = 100.

Line 2.
Hc5 Qg4 f3 Qd7 Nxa8 e5 Hxf8 Kxf8

Compound Evaluator:
White gains Fortress + Bishop + Rook - Knight = 770 + 325 + 500 - 300 = 1295.

Piece Introduction Evaluator
White gains Fortress + Bishop + Rook - Knight = 770 + 325 + 500 - 300 = 1295.

The only difference we need to account for is that White started this whole line of play with a Knight sacrifice.

So both evaluators would have elected to play for line 2 here. I guess the question is, what is the "real" value of line 1? Is it a huge 675 point gain, or is it "not that big" since a Hawk is being thrown into the mix as a result of engaging in the exchange?



10
General Discussion / Re: Games against Programs
« on: March 28, 2018, 06:16:09 am »
I meant in the opening, prior to the gating. Usually by the middlegame a few minors and pawns have been traded, so the branching factor is not that bad. The worst case is Dragon + Spider (I think) because the spider has like 20 legal moves and the Dragon is ridiculously strong. Those two on the board will grind the search to a near standstill beyond depth 11.
Well, that is purely an artifact of badly misevaluating the positions with gatable pieces. This forces the search to gate these pieces before the horizon or consider them lost, while in practice there would not be any reason to assume they could not be gated just as easily behind the horizon. So yes, with each two pieces in hand 4 plies will effectively get lost on gating moves, reducing the depth left to see the really important stuff by 4 ply, so that you need that extra depth to get the same tactical quality. Doing those extra 4 ply is very expensive, no matter how smart your search is. Awarding a bonus for the virginity of the piece on the gating square in evaluation would acihieve the same, and cost exactly nothing,

In practice, it is usually 6-ply needed to "clear the hurdle" since there is always the "toss a pawn, capture the pawn" 2-ply delaying phenomenon at work. So it's 4-ply to get the pieces in play, 2-ply to see that tossing a pawn "won't work," for 6-ply total.

But here is a position where the Compound Piece evaluation might not work:



You can see white is clearly winning with NxQ an obvious continuation. But here Planchet played Hc5! because the black Queen is really not safe no matter where it goes. The game continued:

1. Hc5 Qg4
2. f3 Qd7 (and here the Queen blocks the Bishop which prevents the Hawk from deploying)
3. Nxa8! (amazingly the Fortress + Bishop on f8 cannot be saved) e5
4. Hxf8 (destroys the Fortress as well) Kxf8

And white is winning everything in sight.

I don't think the Compound Evaluator would see the "value" in forcing a move such as ...Qd7 since the Hawk would still "be there" in the sum of material.

11
General Discussion / Re: Games against Programs
« on: March 27, 2018, 09:16:53 pm »
But valuing the virginity of that particular piece as the value of the piece it will gate, should completely solve that. And can be done with zero extra cost, if you already value castling rights. The gating rights are logically equivalent to castling rights, just of vastly higher value.

The problem with code such as "if the king castles, award this particular bonus" is that, at some point, you search beyond that, and the castle flag is changed, and the bonus no longer is awarded.

The way I handle it is "distance until castle flag is changed for the better," with distance being the depth of search. So if the king can no longer castle because he did castle, the bonus is "castle bonus - (ply * 2)" so that it is encouraged to castle quickly. If the king can no longer castle because the castle privilege was lost, the penalty is "lost castle penalty - (ply * 2)" so it can try to postpone the castling loss if possible.



Is that also in the middle-game,

Quote
This is compounded to the extreme in Musketeer Chess. My estimate is that 6-ply of additional search is needed to get a reasonable pv compared to just standard chess. If you want a program to play with the tactical foresight of a chess program that can hit 13-ply, you need 19-ply in Musketeer chess.

after all pieces have been gated in, or just in the opening phase? If so, what would be the reason? Just that there are more and more-powerful pieces, which leads to more complex tactics?

I meant in the opening, prior to the gating. Usually by the middlegame a few minors and pawns have been traded, so the branching factor is not that bad. The worst case is Dragon + Spider (I think) because the spider has like 20 legal moves and the Dragon is ridiculously strong. Those two on the board will grind the search to a near standstill beyond depth 11.

12
General Discussion / Re: Games against Programs
« on: March 27, 2018, 04:09:21 pm »
But this gating problem seems purely self-inflicted, by introducing a huge misevaluation in a subset of the positions (namely those with pieces in hand that are still gatable, and almost certainly will be gated), and then hoping that the search will correct it. Trying to make the search guess something the evaluation could already have known seems a very round-about way to solve it.

It is even worse than that if you think about it. The program needs to "discover" what you would call the "gating gain." That is, it has no idea a piece is a deployer of the Musketeer piece until the move generator spawns that move, and then the score jumps with the piece dropped to the vacated square. But, fortunately, the History Heuristic is quick to note such thrashing of the alpha and beta bounds, and soon such moves have high history scores and are tried near the top of the move list.

Most noticeable problems I have with iteratively deepening alpha-beta (when analyzing positions) is that when in a PV node (most noticeable the root) the score of the best move of the previous iteration experiences a large drop in the next, it takes 'forever' to complete the new iteration.

Exactly! But do you want to know what the world's simplest cure is for this? You might laugh when I tell you. Perform "depth += 2" instead of "depth++" and you cure most of the odd/even "ply explosion" which bloats the tree depending on who has the last move! At least in the case of Musketeer Chess it has huge payoffs.


Also annoying is that in an iteration where the PV score spectacularly drops, the search tends to switch to nonsense sacrifices (that cannot be refused), having the idea that it can play the PV that was no good unmodified after these sacrifices, as the sacrifice reduced the depth by two ply, so that the PV there still has the score from before the drop. It will then stick to the nonsense sacrifice even in the next iteration, before it has enough depth to see that the PV drops the same amount after the sacrifice, so that the latter just adds the loss of the sacrifice.

This is compounded to the extreme in Musketeer Chess. My estimate is that 6-ply of additional search is needed to get a reasonable pv compared to just standard chess. If you want a program to play with the tactical foresight of a chess program that can hit 13-ply, you need 19-ply in Musketeer chess.

13
Twisty Puzzles / Re: CFOP on the 3x3x3 Cube
« on: March 27, 2018, 09:35:29 am »

I am extremely curious as to how your method works, as a method constructor with one currently in development, if you would care to explain your methodology that would be awesome!


I guess what I should do is make a few videos of my solves, maybe a dozen, so that I can explain it better. It is difficult to explain an intuitive process deductively, which is essentially what I would be attempting. I first solved the 3x3x3 in 1981, about a year before "books" came out, or at least those that I was aware of at the time. It wasn't until a few years later, when the 4x4x4 came out, that I changed my 3x3x3 method. I could sight-solve one side without making a move on the 3x3x3 cube, and I still can do this. With no more than "3 glances" as progress is being made, I can sight-solve top and bottom sides. This will be the most difficult part to explain because it's not really an "alg list" that I use. The remainder is easy to explain, because that is an "alg list" I have for the remaining edges.

14
General Discussion / Re: Who Runs Jocly.com?
« on: March 27, 2018, 09:22:12 am »
How do I connect with them? I'd love to have them on the forum!

Thanks,
Asher

I guess the easiest way is to create an account at Jocly.com, play a few games, then contact the admin when your games run out of time when you were otherwise winning. But your response will look like this:


15
General Discussion / Re: Games against Programs
« on: March 27, 2018, 09:20:53 am »
I have been looking at the alpha-beta routine as part of the problem in a Musketeer Chess implementation. Alpha-Beta wasn't really designed to handle a game with an opening phase like this. To prevent ridiculous "fails" of one kind or another, which trigger researches and just bloat the tree (causing more problems like not being able to reach a sufficient depth), I am coming up with a new kind of search that has additional parameters. It's basically an Alpha-Beta-Gamma-Delta function, that has not two but four competing terms; actually, more precisely, two pairs of competing terms. The idea is to mitigate instances where the Horizon Effect delays a Musketeer Piece introduction, yet maximizes instances where strong play forces the opponent to forgo introducing the Musketeer pieces without serious negative consequences. In essence, I have a Horizon Effect term added to each side. It keeps track of the "real" score without the piece introduction evaluation, and an algorithm determines to what extent the line of play is just trying to maximize one score with disregard of the other.

There are many details I am leaving out, but that was the gist of it. If it works, Planchet should be able to search much more deeply than it is now, with the lines of play much more meaningful.

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 »