Skip to content

Commit 04a4466

Browse files
authored
Integrate A02 High Density (attempt 2, different hyperparams) (#660)
* a02 update * bump again * add some type ignores
1 parent ba3261c commit 04a4466

File tree

9 files changed

+56
-8
lines changed

9 files changed

+56
-8
lines changed

fixtures/legacy/hyper-high-density/hyperhighdensity2.fixture.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ export default () => {
268268
{solver.solver?.activeSolver?.unsolvedConnections?.length}
269269
</td>
270270
<td style={{ fontVariantNumeric: "tabular-nums" }}>
271+
{/* @ts-ignore */}
271272
{solver.solver.solvedRoutes?.length}
272273
</td>
273274
<td>

fixtures/legacy/hyper-high-density/hyperhighdensity3.fixture.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ export default () => {
269269
{solver.solver?.unsolvedConnections?.length}
270270
</td>
271271
<td style={{ fontVariantNumeric: "tabular-nums" }}>
272+
{/* @ts-ignore */}
272273
{solver.solver.solvedRoutes?.length}
273274
</td>
274275
<td>

lib/solvers/HyperHighDensitySolver/HyperSingleIntraNodeSolver.ts

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import { SingleTransitionCrossingRouteSolver } from "../HighDensitySolver/TwoRou
1414
import { SingleTransitionIntraNodeSolver } from "../HighDensitySolver/SingleTransitionIntraNodeSolver"
1515
import { MultiHeadPolyLineIntraNodeSolver2 } from "../HighDensitySolver/MultiHeadPolyLineIntraNodeSolver/MultiHeadPolyLineIntraNodeSolver2_Optimized"
1616
import { MultiHeadPolyLineIntraNodeSolver3 } from "../HighDensitySolver/MultiHeadPolyLineIntraNodeSolver/MultiHeadPolyLineIntraNodeSolver3_ViaPossibilitiesSolverIntegration"
17-
import { HighDensitySolverA01 } from "@tscircuit/high-density-a01"
17+
import {
18+
HighDensitySolverA01,
19+
HighDensitySolverA02 as HighDensityA02Solver,
20+
} from "@tscircuit/high-density-a01"
1821
import { FixedTopologyHighDensityIntraNodeSolver } from "../FixedTopologyHighDensityIntraNodeSolver"
1922

2023
export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
@@ -23,6 +26,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
2326
| SingleTransitionCrossingRouteSolver
2427
| SingleTransitionIntraNodeSolver
2528
| FixedTopologyHighDensityIntraNodeSolver
29+
| HighDensityA02Solver
2630
> {
2731
override getSolverName(): string {
2832
return "HyperSingleIntraNodeSolver"
@@ -59,6 +63,7 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
5963
["closedFormSingleTrace"],
6064
// ["closedFormTwoTrace"],
6165
["highDensityA01"],
66+
["highDensityA02"],
6267
["fixedTopologyHighDensityIntraNodeSolver"],
6368
]
6469
}
@@ -198,11 +203,22 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
198203
},
199204
],
200205
},
206+
{
207+
name: "highDensityA02",
208+
possibleValues: [
209+
{
210+
HIGH_DENSITY_A02: true,
211+
},
212+
],
213+
},
201214
]
202215
}
203216

204217
computeG(solver: IntraNodeRouteSolver) {
205-
if ((solver as any) instanceof HighDensitySolverA01) {
218+
if (
219+
(solver as any) instanceof HighDensitySolverA01 ||
220+
(solver as any) instanceof HighDensityA02Solver
221+
) {
206222
return (solver as any).iterations / 1_000_000
207223
}
208224
if (solver?.hyperParameters?.MULTI_HEAD_POLYLINE_SOLVER) {
@@ -238,6 +254,32 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
238254
solver.MAX_ITERATIONS = 10_000_000
239255
return solver as any
240256
}
257+
if (hyperParameters.HIGH_DENSITY_A02) {
258+
const solver = new HighDensityA02Solver({
259+
nodeWithPortPoints: this.nodeWithPortPoints,
260+
outerGridCellSize: 0.1,
261+
outerGridCellThickness: 2,
262+
innerGridCellSize: 0.4,
263+
viaDiameter: this.constructorParams.viaDiameter ?? 0.3,
264+
viaMinDistFromBorder: 0.15,
265+
traceMargin: 0.15,
266+
enableDeferredConflictRepair: true,
267+
maxDeferredRepairPasses: 48,
268+
edgePenaltyStrength: 0.2,
269+
// This likely needs to be corrected to use the actual trace width-
270+
// but using anything but 0.1 for traceThickness is causing issues
271+
// needs more debugging- repro01 in the high-density-a01 repo
272+
// has a good reproduction
273+
traceThickness: 0.1, // this.constructorParams.traceWidth ?? 0.15,
274+
hyperParameters: {
275+
greedyMultiplier: 1.2,
276+
shuffleSeed: hyperParameters.SHUFFLE_SEED ?? 0,
277+
ripCost: 1,
278+
},
279+
})
280+
solver.MAX_ITERATIONS = 20_000_000 * this.effort
281+
return solver as any
282+
}
241283
if (hyperParameters.CLOSED_FORM_TWO_TRACE_SAME_LAYER) {
242284
return new TwoCrossingRoutesHighDensitySolver({
243285
nodeWithPortPoints: this.nodeWithPortPoints,
@@ -282,7 +324,10 @@ export class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
282324

283325
onSolve(solver: SupervisedSolver<IntraNodeRouteSolver>) {
284326
let routes: HighDensityIntraNodeRoute[]
285-
if ((solver.solver as any) instanceof HighDensitySolverA01) {
327+
if (
328+
(solver.solver as any) instanceof HighDensitySolverA01 ||
329+
(solver.solver as any) instanceof HighDensityA02Solver
330+
) {
286331
routes = (solver.solver as any).getOutput()
287332
} else {
288333
routes = solver.solver.solvedRoutes

lib/testing/HyperHighDensityDebugger.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ export const HyperHighDensityDebugger = ({
181181
{supervisedSolver.solver?.unsolvedConnections?.length}
182182
</td>
183183
<td style={{ fontVariantNumeric: "tabular-nums" }}>
184+
{/* @ts-ignore */}
184185
{supervisedSolver.solver.solvedRoutes?.length}
185186
</td>
186187
<td>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"bun-match-svg": "^0.0.14"
6767
},
6868
"dependencies": {
69-
"@tscircuit/high-density-a01": "^0.0.10",
69+
"@tscircuit/high-density-a01": "^0.0.17",
7070
"fast-json-stable-stringify": "^2.1.0",
7171
"object-hash": "^3.0.0"
7272
}

tests/__snapshots__/e2e3-jumpers.snap.svg

Lines changed: 1 addition & 1 deletion
Loading

tests/features/__snapshots__/jumper-high-density08.snap.svg

Lines changed: 1 addition & 1 deletion
Loading

tests/features/__snapshots__/jumper-high-density09.snap.svg

Lines changed: 1 addition & 1 deletion
Loading

tests/features/hyper-prepattern/__snapshots__/hyper-prepattern03.snap.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)