introduce bitloops

This commit is contained in:
mike
2026-01-14 20:04:14 +01:00
parent 70b2009723
commit 5849f543c5
3 changed files with 31 additions and 23 deletions

View File

@@ -687,6 +687,7 @@ public record SwedishGenerator(Rng rng, int[] stack, Clues cache) {
if (Main.VERBOSE) System.out.println("generateMask init pop: " + popSize + " clueSize: " + clueSize);
var pop = new ArrayList<GridAndFit>();
for (var i = 0; i < popSize; i++) {
if (Thread.currentThread().isInterrupted()) return null;
pop.add(new GridAndFit(hillclimb(randomMask(clueSize), clueSize, 180)));
}
@@ -695,6 +696,7 @@ public record SwedishGenerator(Rng rng, int[] stack, Clues cache) {
var children = new ArrayList<GridAndFit>();
for (var k = 0; k < offspring; k++) {
if (Thread.currentThread().isInterrupted()) break;
var p1 = pop.get(rng.randint(0, pop.size() - 1));
var p2 = pop.get(rng.randint(0, pop.size() - 1));
var child = crossover(p1.grid, p2.grid);
@@ -720,6 +722,7 @@ public record SwedishGenerator(Rng rng, int[] stack, Clues cache) {
if (Main.VERBOSE && (gen & 15) == 15) System.out.println(" gen " + gen + "/" + gens + " bestFitness=" + pop.get(0).fit());
}
if (pop.isEmpty()) return null;
GridAndFit best = pop.get(0);
for (int i = 1; i < pop.size(); i++) {
var x = pop.get(i);