From 945f487a08b643392a5d5918c631640b9a0e4605 Mon Sep 17 00:00:00 2001 From: 20001LastOrder Date: Tue, 3 Nov 2020 22:52:26 -0500 Subject: add realistic solver --- .../ca/mcgill/ecse/socialnetwork/plugin/.gitignore | 10 + .../mcgill/ecse/socialnetwork/plugin/Queries.vql | 54 ++ .../bin/constraints/ecore/.gitignore | 8 + .../SocialNetwork_plugin/bin/ecore.ecore | 1023 ++++++++++++++++++++ .../SocialNetwork_plugin/bin/ecore/.gitignore | 8 + .../SocialNetwork_plugin/bin/queries/.gitignore | 9 + .../SocialNetwork_plugin/bin/queries/Ecore.vql | 33 + .../SocialNetwork_plugin/bin/socialnetwork.aird | 183 ++++ .../SocialNetwork_plugin/bin/socialnetwork.ecore | 17 + .../bin/socialnetwork.genmodel | 21 + .../bin/statistics/200_nodes.jpg | Bin 0 -> 49128 bytes .../bin/statistics/220_nodes.jpg | Bin 0 -> 51088 bytes .../bin/statistics/260_nodes.jpg | Bin 0 -> 51426 bytes .../bin/statistics/280_nodes.jpg | Bin 0 -> 50852 bytes .../SocialNetwork_plugin/bin/statistics/output.txt | 300 ++++++ .../bin/statistics/plot_distribution.m | 11 + 16 files changed, 1677 insertions(+) create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m (limited to 'Metrics/Metrics-Calculation/SocialNetwork_plugin/bin') diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore new file mode 100644 index 00000000..f2558cf5 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore @@ -0,0 +1,10 @@ +/.Friendship.java._trace +/.NoFriend.java._trace +/.Queries.java._trace +/.SelfFriend.java._trace +/.SingleFriendship.java._trace +/Friendship.java +/NoFriend.java +/Queries.java +/SelfFriend.java +/SingleFriendship.java diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql new file mode 100644 index 00000000..3e7fc68c --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql @@ -0,0 +1,54 @@ +package ca.mcgill.ecse.socialnetwork.plugin + +import epackage "http://ecse.mcgill.ca/socialnetwork" + +//@Constraint(message="terminatorAndInformation", severity="error", key={T}) +//pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { +// FunctionalOutput.outgoingLinks(Out,I); +// FunctionalOutput.terminator(Out,T); +//} or { +// InformationLink.to(I,In); +// FunctionalInput.terminator(In,T); +//} + +@Constraint(message="singleFriendship", severity="error", key={p1}) +pattern singleFriendship(p1: Person) { + find friendship(p1, p); + neg find friendship(p, p1); +} + +//@Constraint(message="cycle", severity="error", key={p}) +//pattern cycleInParenthood(p: Person) { +// find isAncestor(p, p); +//} + +@Constraint(message="noFriend", severity="error", key={p}) +pattern noFriend(p: Person){ + neg find friendship(p, _); +} + +//@Constraint(message="brothhoodParent", severity="error", key={p1,p2}) +//pattern brothhoodParent(p1: Person, p2: Person){ +// Person.parents(p1, parent1); +// Person.parents(p2, parent2); +// parent1 == parent2; +// find isAncestor(p1, p2); +//} +@Constraint(message="selfFriend", severity="error", key={p}) +pattern selfFriend(p: Person){ + Person.friends(p,p); +} + +pattern friendship(p1: Person, p2: Person){ + Person.friends(p1,p2); +} + +//pattern isAncestor(person : Person, ancestor : Person){ +// Person.parents(person, ancestor); +//} or { +// Person.parents(person, parent); +// find isAncestor(parent, ancestor); +//} + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore new file mode 100644 index 00000000..c42ca056 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore @@ -0,0 +1,8 @@ +/.Ecore_pattern.java._trace +/.MoreThenFiveSuperTypes.java._trace +/.DirectSupertype.java._trace +/.Ecore.java._trace +/.LoopInInheritence.java._trace +/.NonSymmetricOpposite.java._trace +/.Opposite.java._trace +/.OppositeDifferentClass.java._trace diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore new file mode 100644 index 00000000..eaaf3d11 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore @@ -0,0 +1,1023 @@ + + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + + +
+
+ + + + +
+
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+ + + + +
+
+ + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+ + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
+ + + +
+
+ + + + + +
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+ + + + + +
+
+ + +
+ + + + + + + + + + + + +
+
+ + + + + +
+ + + + +
+
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ + + + + + + + + + + + + + +
+
+ + + + + +
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + +
+ + + + +
+
+ + + + +
+ + + + +
+ + + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+ + + + + + +
+
+ + + + + + +
+
+ + + + + +
+
+ + +
+ + + +
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
+ + +
+ + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ + + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + +
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+ + + + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+ + + + + +
+
+ + +
+ + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + +
+
+ + + +
+
+ + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore new file mode 100644 index 00000000..c42ca056 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore @@ -0,0 +1,8 @@ +/.Ecore_pattern.java._trace +/.MoreThenFiveSuperTypes.java._trace +/.DirectSupertype.java._trace +/.Ecore.java._trace +/.LoopInInheritence.java._trace +/.NonSymmetricOpposite.java._trace +/.Opposite.java._trace +/.OppositeDifferentClass.java._trace diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore new file mode 100644 index 00000000..e9d711d4 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore @@ -0,0 +1,9 @@ +/.Ecore_pattern.java._trace +/.MoreThenFiveSuperTypes.java._trace +/.DirectSupertype.java._trace +/.Ecore.java._trace +/.LoopInInheritence.java._trace +/.NonSymmetricOpposite.java._trace +/.Opposite.java._trace +/.OppositeDifferentClass.java._trace +/.SuperTypes.java._trace diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql new file mode 100644 index 00000000..9ddb64c9 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql @@ -0,0 +1,33 @@ +package queries + +import epackage "http://www.eclipse.org/emf/2002/Ecore" + +pattern directSupertype(a: EClass, b:EClass) { + EClass.eSuperTypes(a,b); +} + +@Constraint(key={a}, severity="error", message="error") +pattern loopInInheritence(a: EClass) { + find directSupertype+(a,a); +} + +pattern opposite(a:EReference, b: EReference) { + EReference.eOpposite(a,b); +} +@Constraint(key={a}, severity="error", message="error") +pattern oppositeDifferentClass(a:EReference) { + EReference.eOpposite(a,b); + EReference.eContainingClass(a,aContaining); + EReference.eType(b,bTarget); + aContaining != bTarget; +} + +@Constraint(key={a}, severity="error", message="error") +pattern nonSymmetricOpposite(a:EReference, b:EReference) { + find opposite(a,b); + neg find opposite(b,a); +} + +pattern superTypes(c1:EClass, c2:EClass){ + EClass.eSuperTypes(c1,c2); +} diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird new file mode 100644 index 00000000..e7e28ecd --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird @@ -0,0 +1,183 @@ + + + + socialnetwork.ecore + socialnetwork.genmodel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore new file mode 100644 index 00000000..cacf9921 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel new file mode 100644 index 00000000..c9515653 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel @@ -0,0 +1,21 @@ + + + socialnetwork.ecore + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg new file mode 100644 index 00000000..a35c291b Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg new file mode 100644 index 00000000..4d41dff7 Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg new file mode 100644 index 00000000..b16cdfb2 Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg new file mode 100644 index 00000000..16c0ee23 Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt new file mode 100644 index 00000000..35158e20 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt @@ -0,0 +1,300 @@ +1 +9 +7 +0 +4 +6 +16 +0 +2 +4 +17 +20 +1 +5 +2 +3 +11 +6 +4 +0 +2 +1 +3 +5 +9 +13 +11 +0 +1 +10 +3 +0 +1 +1 +0 +17 +0 +4 +2 +0 +1 +10 +10 +0 +24 +9 +0 +14 +1 +11 +2 +17 +3 +3 +3 +0 +3 +1 +3 +2 +2 +1 +0 +3 +6 +3 +16 +3 +10 +6 +6 +6 +11 +6 +10 +20 +1 +4 +13 +0 +0 +3 +2 +0 +12 +0 +0 +22 +4 +0 +0 +20 +1 +10 +9 +11 +5 +27 +1 +3 +9 +0 +23 +10 +9 +23 +0 +3 +7 +2 +0 +9 +3 +0 +12 +11 +7 +6 +9 +2 +0 +3 +4 +3 +9 +3 +0 +7 +2 +1 +9 +1 +11 +6 +5 +16 +0 +19 +14 +9 +13 +2 +8 +0 +6 +1 +1 +2 +0 +3 +15 +3 +0 +3 +17 +1 +15 +5 +1 +21 +8 +2 +7 +3 +16 +11 +1 +5 +1 +5 +1 +6 +3 +16 +6 +17 +3 +5 +7 +2 +9 +2 +1 +11 +1 +0 +3 +5 +6 +2 +5 +1 +4 +9 +0 +11 +1 +10 +13 +6 +2 +1 +3 +4 +0 +1 +2 +10 +12 +3 +3 +3 +0 +2 +4 +2 +18 +3 +8 +7 +5 +3 +16 +1 +4 +8 +15 +1 +11 +15 +1 +8 +7 +1 +2 +0 +9 +5 +2 +1 +3 +6 +4 +8 +3 +12 +4 +21 +9 +2 +3 +2 +1 +3 +11 +2 +9 +0 +10 +6 +1 +2 +0 +8 +5 +2 +3 +8 +1 +13 +8 +2 +2 +11 +4 +21 +6 +5 +0 +8 +8 +12 +0 +0 +4 +1 +19 +5 +3 +1 +3 +12 +2 +6 +11 +8 +8 +2 +18 +0 diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m new file mode 100644 index 00000000..4c67a191 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m @@ -0,0 +1,11 @@ +clear; +clc; + +matrix = load('-ascii', "output.txt"); +hist(matrix,unique(matrix)); +hold on; +[a,b] = hist(matrix,unique(matrix)) +plot(b, a) +hold off; +sum(matrix) +average = sum(matrix) / length(matrix) \ No newline at end of file -- cgit v1.2.3-54-g00ecf