Check out Janggi (Korean Chess), our featured variant for November, 2024.

Enter Your Reply

The Comment You're Replying To
H. G. Muller wrote on Fri, Feb 24, 2023 06:59 PM UTC in reply to H. G. Muller from Wed Feb 22 09:22 PM:

I have been streamlining the AI of the Diagram a bit, to make it possible to play variants like Tenjiku with a (more) reasonable thinking time. One source of trouble was that the jumping generals always have many captures, which tends to blow up Quiescence Search, even though they are all bad. To combat this I implemented more aggressive pruning of high x low captures of protected pieces. Such moves were already pruned, but only 'after the fact', as it was not known in advance whether a piece was protected. So it such moves would still be tried, and all replies generated. It would then abort when on of these reply moves could recapture. I now use information from the preceding move, recording all friendly pieces that blocked moves that had capture ability. These were protected before the move. I now prune H x L capture of these pieces in the next ply. This is not 100% reliable, as the preceding move could have abandoned a piece it was protecting, or block a protection by another piece. But it is a very fast method, and the idea is that the speedup, through which you could afford larger search depth, would more than compensate for the occasional inaccuracy.

Another source of inefficiency was duplicate moves. Since the AI does not use a transposition table, it would not recognize that a move leading to a position it already searched was a duplicat, and it would search it again. Ideally duplicat moves should not occur, but it is often cumbersome to make an XBetza description that avoids them. (E.g. for BA the A leap is a duplicat if the square it leaps over is empty.) E.g. B(paf)0cB includes a plain cB  next to B, duplicating all non-hopping captures. This could be avoded by writing the non-hopping part as mB, but that gives misleadin highlighting. Particularly disastrous were the area moves: aaK has 8x7x7 = 392 paths when centralized on an empty board (and together with aK and K it makes 356). But there are of course only 49 possible destinations, so each of those can be reached through about 9 paths on average. I now let the move generator suppress repeated destinations for the same piece, if there are no locust squares.

I also hand-tuned the value of the Great General upward; based on its move the Vice General would be worth more, because the value estimates ignore the blocking power. This also distracted (and thus slowed down) the search, by thinking that GG x VG* (kamikaze) was a good move, worth searching.

As a result the time it needs to play 1... SEn11 after 1.j6 at 2.5 ply went down from 47 sec to about 7.

In the process of debugging this I also stumbled on a bug in the piece tracking; at game level this works fine, but in the AI it did not. (Because at some point moves for an enemy piece are generated to test if it delivers check, and this made it track pieces of the opposit color.) This is now fixed too.


Of course Modern Tenjiku Shogi is a game that is impossible to play without opening knowledge, which the Diagram doesn't have at all. So it will still lose in a few moves against a player who knows what he is doing. But at least it plays reasonable moves.


Edit Form

Comment on the page Tenjiku Shogi

Conduct Guidelines
This is a Chess variants website, not a general forum.
Please limit your comments to Chess variants or the operation of this site.
Keep this website a safe space for Chess variant hobbyists of all stripes.
Because we want people to feel comfortable here no matter what their political or religious beliefs might be, we ask you to avoid discussing politics, religion, or other controversial subjects here. No matter how passionately you feel about any of these subjects, just take it someplace else.
Avoid Inflammatory Comments
If you are feeling anger, keep it to yourself until you calm down. Avoid insulting, blaming, or attacking someone you are angry with. Focus criticisms on ideas rather than people, and understand that criticisms of your ideas are not personal attacks and do not justify an inflammatory response.
Quick Markdown Guide

By default, new comments may be entered as Markdown, simple markup syntax designed to be readable and not look like markup. Comments stored as Markdown will be converted to HTML by Parsedown before displaying them. This follows the Github Flavored Markdown Spec with support for Markdown Extra. For a good overview of Markdown in general, check out the Markdown Guide. Here is a quick comparison of some commonly used Markdown with the rendered result:

Top level header: <H1>

Block quote

Second paragraph in block quote

First Paragraph of response. Italics, bold, and bold italics.

Second Paragraph after blank line. Here is some HTML code mixed in with the Markdown, and here is the same <U>HTML code</U> enclosed by backticks.

Secondary Header: <H2>

  • Unordered list item
  • Second unordered list item
  • New unordered list
    • Nested list item

Third Level header <H3>

  1. An ordered list item.
  2. A second ordered list item with the same number.
  3. A third ordered list item.
Here is some preformatted text.
  This line begins with some indentation.
    This begins with even more indentation.
And this line has no indentation.

Alt text for a graphic image

A definition list
A list of terms, each with one or more definitions following it.
An HTML construct using the tags <DL>, <DT> and <DD>.
A term
Its definition after a colon.
A second definition.
A third definition.
Another term following a blank line
The definition of that term.