I took another crack at the max pop custom weight code and I think I like this version better than the last sketch of it. This one allows configuration per combination of root label and depth, but with a built-in default of:
Code: Select all
[
[['0', null], [0, 0]],
[['1', null], [1, 0]],
[['2', null], [2, 0]],
[['G', null], [1, 1]],
]
This codes the 0/1/2/G behavior we do right now (and "@maxpop" magic grid expects). The fields are root label, depth ("null" is the default at every unconfigured depth), the own generation weight, and the GS-flipped generation weight.
With this I took a look at trying to push on the c4/d non-trivial gutter pop limits (>29, <=50 right now).
Even before these changes you could search for c4d-s2s non-trivial gutter ships with a gnarly input file like:
Code: Select all
$ cat g.pre
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| .....*AAA.. | .....AAAA.. | .....AAAA.. | .....AAAA.. | ........... | ........... | ........... | ........... |
| .....*AAA.. | .....AAAA.. | .....AAAA.. | .....AAAA.. | ..WWWWWWW.. | ..WWWWWWW.. | ..WWWWWWW.. | ..WWWWWWW.. |
$ ./rlife grid-tool from-uwi c4d-s2s < g.pre > g.in
$ cat g.in
| L | L | LL | LL |
| .LL | .LL | ..LL | ..LL |
| ...LL | ...LL | ....LL | ....LL |
| ....LL | ....LL | ....LL | ....LL |
| ....LL | ....LL | W...LL | W...LL |
| W...Lu | W...Lu | W...uu | W...uu |
| W..*uR | W..AuR | W..ARR | W..ARR |
| W*.ARR | WA.ARR | WA.ARR | WA.ARR |
| WA.ARR | WA.ARR | WA.ARR | WA.ARR |
| WA.ARR | WA.ARR | WA.ARR | WA.ARR |
| WA..RR | WA..RR | WA..RR | WA..RR |
| W...R | W...R | .... | .... |
| ... | ... | .. | .. |
| . | . | | |
$
Here "non-trivial" is taken to mean "some cell is on in the half-diagonal adjacent to the gutter HD". I've marked a chosen first (in T order) such cell and built the input file around it.
As there are no even birth conditions in S23/B3 there is no concern about not completing the CA check on the gutter itself. In rules with even birth conditions you would have to scroll another HD into view and would probably die on wildcard combinatorial explosion.
Now with --max-pop added for non-WAO recentering and custom weight config we could max-pop this. But what weights where?
Depths 0-3 are I0-I3 in the first W row and are the duplicated HD on the "far" side of the gutter. Depth 4-7 are I4-I7 in the first W row and are the HD that is the gutter. Depth 8-11 are I0-I3 in the second W row and are the duplicated HD on the "near" side of the gutter ("A" wildcard is generated independently per subtile-position and persists from W row to W row). Depth 12+ are the rest of the ship somewhat more "away" from the gutter and only appear once in view.
It would be morally superior to weight depths 0-11 with 1 and everything else with 2, but it makes a bigger config file. You get the same results if you weight depths 0-3 with 0 and everything else with 2 and it's less configuration that way:
Code: Select all
$ cat g.wcfg
[
[['L', 0], [0, 0]],
[['L', 1], [0, 0]],
[['L', 2], [0, 0]],
[['L', 3], [0, 0]],
[['L', null], [2, 0]],
[['u', 0], [0, 0]],
[['u', 1], [0, 0]],
[['u', 2], [0, 0]],
[['u', 3], [0, 0]],
[['u', null], [2, 0]],
[['R', 0], [0, 0]],
[['R', 1], [0, 0]],
[['R', 2], [0, 0]],
[['R', 3], [0, 0]],
[['R', null], [2, 0]],
]
$
Finally we can run with something like...
Code: Select all
$ rlife llsss-recentering c4d-s2s g.in --max-pop 00:10 --llsss-env LLSSS_MAX_POP_WEIGHT_CONFIG=g.wcfg --ends none XX
$ rlife llsss-recentering c4d-s2s g.in --max-pop 01:10 --llsss-env LLSSS_MAX_POP_WEIGHT_CONFIG=g.wcfg --ends none XX
$ rlife llsss-recentering c4d-s2s g.in --max-pop 02:10 --llsss-env LLSSS_MAX_POP_WEIGHT_CONFIG=g.wcfg --ends none XX
$ rlife llsss-recentering c4d-s2s g.in --max-pop 03:10 --llsss-env LLSSS_MAX_POP_WEIGHT_CONFIG=g.wcfg --ends none XX
I've just started running these. Pop 10 worst gen internal memory was 1.60 GB and pop 15 was 8.57 GB. I've started the line of searches from pop 16 onward, but I'm not optimistic as naive projection (admittedly from only these two very early data points) puts pop 30 at 1.28 TB.
Also unfortunately I don't think this is gonna allow anything for odd symmetry c4/d. The problem is any framing of it is going to involve 3 distinct HDs in initialization which is going to end up with 36 wildcard bits in the worst AF2 window. In the most compact form the jcol is 8 bytes per entry and you've got 2^36 of them which is 512 GB of just that, not to mention all the other various overheads and duplications on the way. Even with the 1TB computer I don't think there is any surviving that.
I've pushed both --max-pop for non-WAO recentering and LLSSS_MAX_POP_WEIGHT_CONFIG to codeberg just now. As always, maybe let me know if you get up to anything with it.
EDIT: I almost immediately thought better of the configuration. I've simplified it and also made it slightly more flexible (just pushed). Now it's specified by subtile position and W position (rather than depth) and you can specify any prefix of (root label, subtile pos, w pos) and it will default accordingly. You can also omit the GS-flipped weight. As an example:
Code: Select all
[
[null, 1],
['A', 2],
[['B', 0], 3],
[['C', 0, 0], [4, 5]],
]