@@ -19,6 +19,7 @@ import { MultiSectionPortPointOptimizer } from "../../solvers/MultiSectionPortPo
1919import { NetToPointPairsSolver } from "../../solvers/NetToPointPairsSolver/NetToPointPairsSolver"
2020import { NetToPointPairsSolver2_OffBoardConnection } from "../../solvers/NetToPointPairsSolver2_OffBoardConnection/NetToPointPairsSolver2_OffBoardConnection"
2121import { InputNodeWithPortPoints } from "../../solvers/PortPointPathingSolver/PortPointPathingSolver"
22+ import { precomputeSharedParams } from "../../solvers/PortPointPathingSolver/precomputeSharedParams"
2223import { MultipleHighDensityRouteStitchSolver } from "../../solvers/RouteStitchingSolver/MultipleHighDensityRouteStitchSolver"
2324import { SingleLayerNodeMergerSolver } from "../../solvers/SingleLayerNodeMerger/SingleLayerNodeMergerSolver"
2425import { StrawSolver } from "../../solvers/StrawSolver/StrawSolver"
@@ -274,27 +275,54 @@ export class AutoroutingPipelineSolver3_HgPortPointPathing extends BaseSolver {
274275 ]
275276 } ,
276277 ) ,
277- // definePipelineStep(
278- // "multiSectionPortPointOptimizer",
279- // MultiSectionPortPointOptimizer,
280- // (cms) => {
281- // const portPointSolver = cms.portPointPathingSolver!
282- // return [
283- // {
284- // simpleRouteJson: cms.srjWithPointPairs!,
285- // inputNodes: portPointSolver.inputNodes,
286- // capacityMeshNodes: cms.capacityNodes!,
287- // capacityMeshEdges: cms.capacityEdges!,
288- // colorMap: cms.colorMap,
289- // initialConnectionResults: portPointSolver.connectionsWithResults,
290- // initialAssignedPortPoints: portPointSolver.assignedPortPoints,
291- // initialNodeAssignedPortPoints:
292- // portPointSolver.nodeAssignedPortPoints,
293- // effort: cms.effort,
294- // },
295- // ]
296- // },
297- // ),
278+ definePipelineStep (
279+ "multiSectionPortPointOptimizer" ,
280+ MultiSectionPortPointOptimizer ,
281+ ( cms ) => {
282+ const portPointSolver = cms . portPointPathingSolver !
283+ const {
284+ nodesWithPortPoints,
285+ inputNodeWithPortPoints : inputNodesWithPortPoints ,
286+ } = portPointSolver . getOutput ( )
287+
288+ const initialAssignedPortPoints = new Map <
289+ string ,
290+ { connectionName : string ; rootConnectionName ?: string }
291+ > ( )
292+ const initialNodeAssignedPortPoints = new Map ( )
293+ for ( const node of nodesWithPortPoints ) {
294+ initialNodeAssignedPortPoints . set ( node . capacityMeshNodeId , [
295+ ...node . portPoints ,
296+ ] )
297+ for ( const portPoint of node . portPoints ) {
298+ if ( ! portPoint . portPointId ) continue
299+ initialAssignedPortPoints . set ( portPoint . portPointId , {
300+ connectionName : portPoint . connectionName ,
301+ rootConnectionName : portPoint . rootConnectionName ,
302+ } )
303+ }
304+ }
305+
306+ const { unshuffledConnectionsWithResults } = precomputeSharedParams (
307+ cms . srjWithPointPairs ! ,
308+ inputNodesWithPortPoints ,
309+ )
310+
311+ return [
312+ {
313+ simpleRouteJson : cms . srjWithPointPairs ! ,
314+ inputNodes : inputNodesWithPortPoints ,
315+ capacityMeshNodes : cms . capacityNodes ! ,
316+ capacityMeshEdges : cms . capacityEdges ! ,
317+ colorMap : cms . colorMap ,
318+ initialConnectionResults : unshuffledConnectionsWithResults ,
319+ initialAssignedPortPoints,
320+ initialNodeAssignedPortPoints,
321+ effort : cms . effort ,
322+ } ,
323+ ]
324+ } ,
325+ ) ,
298326 definePipelineStep (
299327 "uniformPortDistributionSolver" ,
300328 UniformPortDistributionSolver ,
0 commit comments