aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-05-13 13:53:43 -0400
committerLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-05-13 13:53:43 -0400
commit074261b6e1fec6c5887af6d35dcf2eefe73904c3 (patch)
tree9c664f9517e5b045bc11b04d5eb94f367d057016 /Solvers
parentInterval power and aggregator fix (diff)
parentFix for symmetric activation codes on symmetric models (diff)
downloadVIATRA-Generator-074261b6e1fec6c5887af6d35dcf2eefe73904c3.tar.gz
VIATRA-Generator-074261b6e1fec6c5887af6d35dcf2eefe73904c3.tar.zst
VIATRA-Generator-074261b6e1fec6c5887af6d35dcf2eefe73904c3.zip
Merge remote-tracking branch 'origin/master' into kris
Diffstat (limited to 'Solvers')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend11
1 files changed, 10 insertions, 1 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend
index 65a8207e..b6d2043d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend
@@ -128,14 +128,23 @@ class NeighbourhoodBasedPartialInterpretationStateCoder implements IStateCoder{
128 val size = match.specification.parameters.size 128 val size = match.specification.parameters.size
129 val res = new ArrayList(size) 129 val res = new ArrayList(size)
130 var int index = 0 130 var int index = 0
131 var int equivalenceHash = 0
132 val prime = 31
133
131 while(index < size) { 134 while(index < size) {
132 res.add(getCode(match.get(index))) 135 res.add(getCode(match.get(index)))
133 index++ 136 index++
137 for(var i = 0; i<index; i++) {
138 val number = if(match.get(index) === match.get(i)){1}else{0}
139 equivalenceHash = prime * equivalenceHash + number
140 }
134 } 141 }
142
135 statecoderRuntime += (System.nanoTime - startTime) 143 statecoderRuntime += (System.nanoTime - startTime)
136 return match.specification.fullyQualifiedName->res.hashCode 144 return match.specification.fullyQualifiedName->(res->equivalenceHash).hashCode
137 } 145 }
138 146
147
139 def private getCode(Object o) { 148 def private getCode(Object o) {
140 if(o instanceof DefinedElement) { 149 if(o instanceof DefinedElement) {
141 this.nodeRepresentations.get(o) 150 this.nodeRepresentations.get(o)