diff --git a/.gitignore b/.gitignore index 4d7938cd..5ca82659 100644 --- a/.gitignore +++ b/.gitignore @@ -72,8 +72,8 @@ xtend-gen/ *.iml tests/dev.arcovia.mitigation.sat.tests/testresults/*.json -tests/dev.arcovia.mitigation.sat.tests/efficencyTest/*.json -tests/dev.arcovia.mitigation.ilp.tests/efficencyTest/*.json +tests/dev.arcovia.mitigation.sat.tests/efficiencyTest/*.json +tests/dev.arcovia.mitigation.ilp.tests/efficiencyTest/*.json !*literalMapping.json *.lp tests/dev.arcovia.mitigation.ilp.tests/models/temp-repaired.json diff --git a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/ModelCostCalculator.java b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/ModelCostCalculator.java index ca26da2c..799f31a9 100644 --- a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/ModelCostCalculator.java +++ b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/ModelCostCalculator.java @@ -72,42 +72,51 @@ public int calculateCost() { return cost; } - public int calculateCostWithoutForwarding() { + + public void changedLabelsWithoutForwarding() { determineRelevantLabels(); for (var label : allRelevantLabels.keySet()) { for (var vertex : nodes) { if (vertex.hasVertexLabel(label)) allRelevantLabels.get(label) .add("Vertex: " + vertex.name); - + var assignments = vertex.getAssignments(); - + for (var assignment : assignments) { - + List assignmentLabel = null; - + if (assignment instanceof Assignment cast) { assignmentLabel = cast.getOutputLabels(); - - } - else if (assignment instanceof SetAssignment cast) { + + } else if (assignment instanceof SetAssignment cast) { assignmentLabel = cast.getOutputLabels(); } - if (assignmentLabel == null) continue; - + if (assignmentLabel == null) + continue; + for (var l : assignmentLabel) { LabelTypeImpl labelType = (LabelTypeImpl) l.eContainer(); - - var tempLabel = new Label(labelType.getEntityName(),l.getEntityName()); - - if (tempLabel.toString().equals(label.toString())) { + + var tempLabel = new Label(labelType.getEntityName(), l.getEntityName()); + + if (tempLabel.toString() + .equals(label.toString())) { Pin outpin = assignment.getOutputPin(); allRelevantLabels.get(label) - .add("Outgoing: " + outpin.getId() + " from: " + vertex.name); + .add("Outgoing: " + outpin.getId() + " from: " + vertex.name); } } } } + } + } + + public int calculateCostWithoutForwarding() { + changedLabelsWithoutForwarding(); + + for (var label : allRelevantLabels.keySet()) { cost += allRelevantLabels.get(label) .size() * costs.get(label); } @@ -115,6 +124,36 @@ else if (assignment instanceof SetAssignment cast) { return cost; } + public int calculateSymmetricDifferenceCost(ModelCostCalculator referenceCalculator) { + + changedLabelsWithoutForwarding(); + referenceCalculator.changedLabelsWithoutForwarding(); + + Set