Skip to content

Commit

Permalink
Change to template-based iteration instead of transforming IntObjMapView
Browse files Browse the repository at this point in the history
  • Loading branch information
mondokm committed Feb 15, 2024
1 parent 2263f28 commit 521e8fa
Showing 1 changed file with 31 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,17 +112,37 @@ private MddNode saturate(
// indent++;

final MddStateSpaceInfo stateSpaceInfo = new MddStateSpaceInfo(variable, n);

IntObjMapView<MddNode> satTemplate = new IntObjMapViews.Transforming<MddNode, MddNode>(n,
(node, key) -> node == null ? null : terminalZeroToNull(saturate(node,
d.getDiagonal(stateSpaceInfo).get(key),
variable.getLower().orElse(null),
cache.getLower()
))
);

MddNode nsat = variable.checkInNode(MddStructuralTemplate.of(satTemplate));


//
// IntObjMapView<MddNode> satTemplate = new IntObjMapViews.Transforming<MddNode, MddNode>(n,
// (node, key) -> node == null ? null : terminalZeroToNull(saturate(node,
// d.getDiagonal(stateSpaceInfo).get(key),
// variable.getLower().orElse(null),
// cache.getLower()
// ))
// );
//
// MddNode nsat = variable.checkInNode(MddStructuralTemplate.of(satTemplate));


MddUnsafeTemplateBuilder templateBuilder = JavaMddFactory.getDefault().createUnsafeTemplateBuilder();

for (IntObjCursor<? extends MddNode> cFrom = n.cursor(); cFrom.moveNext(); ){

MddNode s = saturate(cFrom.value(),
d.getDiagonal(stateSpaceInfo).get(cFrom.key()),
variable.getLower().orElse(null),
cache.getLower()
);

templateBuilder.set(cFrom.key(),
terminalZeroToNull(unionChildren(templateBuilder.get(cFrom.key()), s, variable))
);

}

MddNode nsat = variable.checkInNode(MddStructuralTemplate.of(templateBuilder.buildAndReset()));

boolean changed;

do {
Expand Down

0 comments on commit 521e8fa

Please sign in to comment.