This is a reference post summarizing ideas for improving the current model of generating varied starting positions, created by runarberg:
This new thread was created as the first one got pretty long (
could someone add “(old)” at the end of the name and lock the previous thread?thanks @AdamR):
What constitutes an interesting/uninteresting starting position? We currently have stone-free margin (no stones near edges) and spreading apart. Is there any other factor?
To reduce clustering there are two types of ideas so far, each with a few specific models.
- Biased placing of stones
- adaptive probability field: table of probabilities over the board that changes as stones are placed.
- loose circle packing: guaranteeing certain length of minimum separation between stones. (edit: this feels too restrictive alone; perhaps combine?)
- Post-processing a randomly generated configuration
- repulsive random walk: probability to move in each direction varies with crowdedness.
- reluctant walker: accept or reject a candidate move according to relative crowdedness of current and candidate location (aka Metropolis-Hastings algorithm).
There are multiple possible definitions for crowdedness.
- distance to nearest stone.
- each stone weighted according to distance: diluted contributions.
- number of stones in a given radius: neighbor counting.
Taxicab geometry might be suitable: kosumi and one-space jump are considered the same distance.
I’m thinking of relearning programming to attempt simulating and comparing those models. I’m looking at ipython as it seems simplest but let me know if anyone knows a language better suited for this (grid based simulation).
The only method for comparison so far is visual inspection of generated configurations.
Using AI to ensure certain degree of fairness, which can be circumvented somewhat by some form of I-cut-you-choose at beginning of game. Bonus problem: optimal placement of a hole, which works like the edge, to balance the configuration of stones.
There is an unrelated OGS group with a similar idea: