aboutsummaryrefslogtreecommitdiffstats
path: root/Domains
diff options
context:
space:
mode:
authorLibravatar Aren Babikian <aren.babikian@mail.mcgill.ca>2021-01-20 08:44:27 +0100
committerLibravatar Aren Babikian <aren.babikian@mail.mcgill.ca>2021-01-20 08:44:27 +0100
commit41a48543aea119acae321aae61b85d711610b652 (patch)
treeda29d1d172eaaa4c9744d77851966b727720ce06 /Domains
parentadd Actor+CollisionExists constrs & adjust dreal parser & measurements (diff)
downloadVIATRA-Generator-41a48543aea119acae321aae61b85d711610b652.tar.gz
VIATRA-Generator-41a48543aea119acae321aae61b85d711610b652.tar.zst
VIATRA-Generator-41a48543aea119acae321aae61b85d711610b652.zip
almost finish crossscen VQL + implement ITE handling + prelim results
Diffstat (limited to 'Domains')
-rw-r--r--Domains/crossingScenario/.gitignore9
-rw-r--r--Domains/crossingScenario/inputs/crossingScenarioGen.vsconfig14
-rw-r--r--Domains/crossingScenario/plugin.xml5
-rw-r--r--Domains/crossingScenario/queries/crossingScenarioQueries.vql277
-rw-r--r--Domains/crossingScenario/results-prelim/plot_RQ2_FamilyTree.pdfbin0 -> 4775 bytes
-rw-r--r--Domains/crossingScenario/results-prelim/stats1010.csv3
-rw-r--r--Domains/crossingScenario/results-prelim/stats1515.csv3
-rw-r--r--Domains/crossingScenario/results-prelim/stats2020.csv3
-rw-r--r--Domains/crossingScenario/results-prelim/stats2525.csv3
-rw-r--r--Domains/crossingScenario/src/crossingScenario/run/CrossingScenarioMain.java14
-rw-r--r--Domains/crossingScenario/src/queries/queries.vql10
11 files changed, 196 insertions, 145 deletions
diff --git a/Domains/crossingScenario/.gitignore b/Domains/crossingScenario/.gitignore
index 4c033661..50267f31 100644
--- a/Domains/crossingScenario/.gitignore
+++ b/Domains/crossingScenario/.gitignore
@@ -1,5 +1,4 @@
1/bin/ 1/bin/
2/outputs/ 2/outputs/
3/src-gen/ 3/src-gen/
4/xtend-gen/ 4/xtend-gen/
5/src/queries/
diff --git a/Domains/crossingScenario/inputs/crossingScenarioGen.vsconfig b/Domains/crossingScenario/inputs/crossingScenarioGen.vsconfig
index acd622c5..a5c862e4 100644
--- a/Domains/crossingScenario/inputs/crossingScenarioGen.vsconfig
+++ b/Domains/crossingScenario/inputs/crossingScenarioGen.vsconfig
@@ -7,12 +7,14 @@ generate {
7 partial-model = { "inputs/crossingScenarioInit.xmi"} 7 partial-model = { "inputs/crossingScenarioInit.xmi"}
8 solver = ViatraSolver 8 solver = ViatraSolver
9 scope = { 9 scope = {
10 #node = 10..100, 10 #node = 2..*
11 #int = {}, 11 //,
12 #<Lane> = 10..25, 12 //#<Lane> = 25..*
13 #<Actor> = 10..25, 13 //,#<Actor> = 25..*
14 #<CollisionExists> = 1..10//, 14 //,#<CollisionExists> = 1..10
15 //#<Relation> = 1..10 15 //,#<SeparationDistance> = 1..10
16 //,#<VisionBlocked> = 1..10
17 //,#<Relation> = 1..10
16 } 18 }
17 19
18 config = { 20 config = {
diff --git a/Domains/crossingScenario/plugin.xml b/Domains/crossingScenario/plugin.xml
index c8846e1b..39c9cd2b 100644
--- a/Domains/crossingScenario/plugin.xml
+++ b/Domains/crossingScenario/plugin.xml
@@ -4,4 +4,9 @@
4 <!-- @generated crossingScenario --> 4 <!-- @generated crossingScenario -->
5 <package class="crossingScenario.CrossingScenarioPackage" genModel="model/crossingScenario.genmodel" uri="http://www.example.com/crossingScenario"/> 5 <package class="crossingScenario.CrossingScenarioPackage" genModel="model/crossingScenario.genmodel" uri="http://www.example.com/crossingScenario"/>
6 </extension> 6 </extension>
7 <extension id="queries.Queries" point="org.eclipse.viatra.query.runtime.queryspecification">
8 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:queries.Queries" id="queries.Queries">
9 <query-specification fqn="queries.x"/>
10 </group>
11 </extension>
7</plugin> 12</plugin>
diff --git a/Domains/crossingScenario/queries/crossingScenarioQueries.vql b/Domains/crossingScenario/queries/crossingScenarioQueries.vql
index 03dafc97..34eff55c 100644
--- a/Domains/crossingScenario/queries/crossingScenarioQueries.vql
+++ b/Domains/crossingScenario/queries/crossingScenarioQueries.vql
@@ -424,88 +424,88 @@ pattern collisionExists_defineCollision_x2(a1:Actor, a2:Actor, c:CollisionExists
424 check((xPos1 + (xSpeed1 * cTime)) + (w1/2) < (xPos2 + (xSpeed2 * cTime)) - (w2/2)); 424 check((xPos1 + (xSpeed1 * cTime)) + (w1/2) < (xPos2 + (xSpeed2 * cTime)) - (w2/2));
425} 425}
426 426
427//////////////// 427//////////////
428////SeparationDistance 428//SeparationDistance
429//////////////// 429//////////////
430//@Constraint(severity="error", key={a1, sd}, message="x") 430@Constraint(severity="error", key={a1, sd}, message="x")
431//pattern SeparationDistance_near_lb(a1:Actor, a2:Actor, sd:SeparationDistance) { 431pattern SeparationDistance_near_lb(a1:Actor, a2:Actor, sd:SeparationDistance) {
432// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 432 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
433// Actor.relations(a1, sd); 433 Actor.relations(a1, sd);
434// SeparationDistance.target(sd, a2); 434 SeparationDistance.target(sd, a2);
435// SeparationDistance.distance(sd, Distance::Near); 435 SeparationDistance.distance(sd, Distance::D_Near);
436// 436
437// Actor.xPos(a1, x1); 437 Actor.xPos(a1, x1);
438// Actor.yPos(a1, y1); 438 Actor.yPos(a1, y1);
439// Actor.xPos(a2, x2); 439 Actor.xPos(a2, x2);
440// Actor.yPos(a2, y2); 440 Actor.yPos(a2, y2);
441// //check(dx^2 + dy^2 < 5^2) 441 //check(dx^2 + dy^2 < 5^2)
442// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 5*5); 442 check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 5*5);
443//} 443}
444// 444
445//@Constraint(severity="error", key={a1, sd}, message="x") 445@Constraint(severity="error", key={a1, sd}, message="x")
446//pattern SeparationDistance_near_ub(a1:Actor, a2:Actor, sd:SeparationDistance) { 446pattern SeparationDistance_near_ub(a1:Actor, a2:Actor, sd:SeparationDistance) {
447// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 447 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
448// Actor.relations(a1, sd); 448 Actor.relations(a1, sd);
449// SeparationDistance.target(sd, a2); 449 SeparationDistance.target(sd, a2);
450// SeparationDistance.distance(sd, Distance::Near); 450 SeparationDistance.distance(sd, Distance::D_Near);
451// 451
452// Actor.xPos(a1, x1); 452 Actor.xPos(a1, x1);
453// Actor.yPos(a1, y1); 453 Actor.yPos(a1, y1);
454// Actor.xPos(a2, x2); 454 Actor.xPos(a2, x2);
455// Actor.yPos(a2, y2); 455 Actor.yPos(a2, y2);
456// //check(dx^2 + dy^2 > 10^2) 456 //check(dx^2 + dy^2 > 10^2)
457// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) > 10*10); 457 check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) > 10*10);
458//} 458}
459// 459
460//@Constraint(severity="error", key={a1, sd}, message="x") 460@Constraint(severity="error", key={a1, sd}, message="x")
461//pattern SeparationDistance_medium_lb(a1:Actor, a2:Actor, sd:SeparationDistance) { 461pattern SeparationDistance_medium_lb(a1:Actor, a2:Actor, sd:SeparationDistance) {
462// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 462 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
463// Actor.relations(a1, sd); 463 Actor.relations(a1, sd);
464// SeparationDistance.target(sd, a2); 464 SeparationDistance.target(sd, a2);
465// SeparationDistance.distance(sd, Distance::Medium); 465 SeparationDistance.distance(sd, Distance::D_Med);
466// 466
467// Actor.xPos(a1, x1); 467 Actor.xPos(a1, x1);
468// Actor.yPos(a1, y1); 468 Actor.yPos(a1, y1);
469// Actor.xPos(a2, x2); 469 Actor.xPos(a2, x2);
470// Actor.yPos(a2, y2); 470 Actor.yPos(a2, y2);
471// //check(dx^2 + dy^2 < 10^2) 471 //check(dx^2 + dy^2 < 10^2)
472// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 10*10); 472 check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 10*10);
473//} 473}
474// 474
475//@Constraint(severity="error", key={a1, sd}, message="x") 475@Constraint(severity="error", key={a1, sd}, message="x")
476//pattern SeparationDistance_medium_ub(a1:Actor, a2:Actor, sd:SeparationDistance) { 476pattern SeparationDistance_medium_ub(a1:Actor, a2:Actor, sd:SeparationDistance) {
477// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 477 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
478// Actor.relations(a1, sd); 478 Actor.relations(a1, sd);
479// SeparationDistance.target(sd, a2); 479 SeparationDistance.target(sd, a2);
480// SeparationDistance.distance(sd, Distance::Medium); 480 SeparationDistance.distance(sd, Distance::D_Med);
481// 481
482// Actor.xPos(a1, x1); 482 Actor.xPos(a1, x1);
483// Actor.yPos(a1, y1); 483 Actor.yPos(a1, y1);
484// Actor.xPos(a2, x2); 484 Actor.xPos(a2, x2);
485// Actor.yPos(a2, y2); 485 Actor.yPos(a2, y2);
486// //check(dx^2 + dy^2 > 1^2) 486 //check(dx^2 + dy^2 > 1^2)
487// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) > 15*15); 487 check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) > 15*15);
488//} 488}
489// 489
490//@Constraint(severity="error", key={a1, sd}, message="x") 490@Constraint(severity="error", key={a1, sd}, message="x")
491//pattern SeparationDistance_far_lb(a1:Actor, a2:Actor, sd:SeparationDistance) { 491pattern SeparationDistance_far_lb(a1:Actor, a2:Actor, sd:SeparationDistance) {
492// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 492 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
493// Actor.relations(a1, sd); 493 Actor.relations(a1, sd);
494// SeparationDistance.target(sd, a2); 494 SeparationDistance.target(sd, a2);
495// SeparationDistance.distance(sd, Distance::Far); 495 SeparationDistance.distance(sd, Distance::D_Far);
496// 496
497// Actor.xPos(a1, x1); 497 Actor.xPos(a1, x1);
498// Actor.yPos(a1, y1); 498 Actor.yPos(a1, y1);
499// Actor.xPos(a2, x2); 499 Actor.xPos(a2, x2);
500// Actor.yPos(a2, y2); 500 Actor.yPos(a2, y2);
501// //check(dx^2 + dy^2 < 15^2) 501 //check(dx^2 + dy^2 < 15^2)
502// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 15*15); 502 check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 15*15);
503//} 503}
504// 504
505//////////////// 505////////////////
506////CollisionDoesNotExist 506////CollisionDoesNotExist
507//////////////// 507////////////////
508// 508//TODO
509////@Constraint(severity="error", key={a1, cdne}, message="x") 509////@Constraint(severity="error", key={a1, cdne}, message="x")
510////pattern collisionDoesNotExist(a1:Actor, a2:Actor, ss:CrossingScenario, cdne:CollisionDoesNotExist) { 510////pattern collisionDoesNotExist(a1:Actor, a2:Actor, ss:CrossingScenario, cdne:CollisionDoesNotExist) {
511//// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 511//// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
@@ -532,59 +532,72 @@ pattern collisionExists_defineCollision_x2(a1:Actor, a2:Actor, c:CollisionExists
532//// //check(dx^2 + dy^2 < 15^2) 532//// //check(dx^2 + dy^2 < 15^2)
533//// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 15*15); 533//// check((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 15*15);
534////} 534////}
535// 535
536//////////////// 536//////////////
537////VisionBlocked 537//VisionBlocked
538//////////////// 538//////////////
539// 539
540////OPTIONS 1: everything is from a single check expression containing ITEs 540@Constraint(severity="error", key={a1, a2}, message="x")
541////Currently unhandled bygenerator 541pattern visionBlocked_invalidBlocker(a1:Actor, a2:Actor) {
542//@Constraint(severity="error", key={a1, vb}, message="x") 542 Actor.relations(a1, vb);
543//pattern visionBlocked_ites_top(a1:Actor, a2:Actor, vb:VisionBlocked) { 543 VisionBlocked.target(vb, a2);
544// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 544 VisionBlocked.blockedBy(vb, a1);
545// Actor.relations(a1, vb); 545} or {
546// VisionBlocked.target(vb, a2); 546 Actor.relations(a1, vb);
547// VisionBlocked.blockedBy(vb, aBlocker); 547 VisionBlocked.target(vb, a2);
548// 548 VisionBlocked.blockedBy(vb, a1);
549// Actor.xPos(a1, x1); 549}
550// Actor.yPos(a1, y1); 550
551// Actor.xPos(a2, x2); 551//OPTIONS 1: everything is from a single check expression containing ITEs
552// Actor.yPos(a2, y2); 552//Currently unhandled bygenerator
553// Actor.xPos(aBlocker, xBlocker); 553@Constraint(severity="error", key={a1, vb}, message="x")
554// Actor.yPos(aBlocker, yBlocker); 554pattern visionBlocked_ites_top(a1:Actor, a2:Actor, vb:VisionBlocked) {
555// Actor.length(aBlocker, lenBlocker); 555 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
556// Actor.width(aBlocker, widBlocker); 556 Actor.relations(a1, vb);
557// 557 VisionBlocked.target(vb, a2);
558// //check(slope of a1-to-BlockerTop < slope of a1-to-a2) 558 VisionBlocked.blockedBy(vb, aBlocker);
559// check( 559
560// ( yBlocker - y1 + (if(xBlocker > x1){lenBlocker/2}else{0-lenBlocker/2})) / 560 Actor.xPos(a1, x1);
561// ( xBlocker - x1 + (if(yBlocker > y1){0-widBlocker/2}else{widBlocker/2})) 561 Actor.yPos(a1, y1);
562// < ((y1-y2)/(x1-x2))); 562 Actor.xPos(a2, x2);
563//} 563 Actor.yPos(a2, y2);
564// 564 Actor.xPos(aBlocker, xBlocker);
565//@Constraint(severity="error", key={a1, vb}, message="x") 565 Actor.yPos(aBlocker, yBlocker);
566//pattern visionBlocked_ites_bottom(a1:Actor, a2:Actor, vb:VisionBlocked) { 566 Actor.length(aBlocker, lenBlocker);
567// //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1 567 Actor.width(aBlocker, widBlocker);
568// Actor.relations(a1, vb); 568
569// VisionBlocked.target(vb, a2); 569 //check(slope of a1-to-BlockerTop < slope of a1-to-a2)
570// VisionBlocked.blockedBy(vb, aBlocker); 570 check(
571// 571 ( yBlocker - y1 + (if(xBlocker > x1){lenBlocker/2}else{0-lenBlocker/2})) /
572// Actor.xPos(a1, x1); 572 ( xBlocker - x1 + (if(yBlocker > y1){0-widBlocker/2}else{widBlocker/2}))
573// Actor.yPos(a1, y1); 573 < ((y1-y2)/(x1-x2)));
574// Actor.xPos(a2, x2); 574}
575// Actor.yPos(a2, y2); 575
576// Actor.xPos(aBlocker, xBlocker); 576@Constraint(severity="error", key={a1, vb}, message="x")
577// Actor.yPos(aBlocker, yBlocker); 577pattern visionBlocked_ites_bottom(a1:Actor, a2:Actor, vb:VisionBlocked) {
578// Actor.length(aBlocker, lenBlocker); 578 //This second one is required because we do not want to enforce both a1->c->a2 and a2->c->a1
579// Actor.width(aBlocker, widBlocker); 579 Actor.relations(a1, vb);
580// 580 VisionBlocked.target(vb, a2);
581// //check(slope of a1-to-BlockerBottom > slope of a1-to-a2) 581 VisionBlocked.blockedBy(vb, aBlocker);
582// check( 582
583// ( yBlocker - y1 + (if(xBlocker > x1){0-lenBlocker/2}else{lenBlocker/2})) / 583 Actor.xPos(a1, x1);
584// ( xBlocker - x1 + (if(yBlocker > y1){widBlocker/2}else{0-widBlocker/2})) 584 Actor.yPos(a1, y1);
585// > ((y1-y2)/(x1-x2))); 585 Actor.xPos(a2, x2);
586//} 586 Actor.yPos(a2, y2);
587// 587 Actor.xPos(aBlocker, xBlocker);
588 Actor.yPos(aBlocker, yBlocker);
589 Actor.length(aBlocker, lenBlocker);
590 Actor.width(aBlocker, widBlocker);
591
592 //check(slope of a1-to-BlockerBottom > slope of a1-to-a2)
593 check(
594 ( yBlocker - y1 + (if(xBlocker > x1){0-lenBlocker/2}else{lenBlocker/2})) /
595 ( xBlocker - x1 + (if(yBlocker > y1){widBlocker/2}else{0-widBlocker/2}))
596 > ((y1-y2)/(x1-x2)));
597}
598
599
600
588////OPTION 2: 601////OPTION 2:
589////we handle ITE by seperating the constraints 602////we handle ITE by seperating the constraints
590// 603//
diff --git a/Domains/crossingScenario/results-prelim/plot_RQ2_FamilyTree.pdf b/Domains/crossingScenario/results-prelim/plot_RQ2_FamilyTree.pdf
new file mode 100644
index 00000000..c6cda90a
--- /dev/null
+++ b/Domains/crossingScenario/results-prelim/plot_RQ2_FamilyTree.pdf
Binary files differ
diff --git a/Domains/crossingScenario/results-prelim/stats1010.csv b/Domains/crossingScenario/results-prelim/stats1010.csv
new file mode 100644
index 00000000..9755619c
--- /dev/null
+++ b/Domains/crossingScenario/results-prelim/stats1010.csv
@@ -0,0 +1,3 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution0FoundAt,Solution1FoundAt,Solution2FoundAt,Solution3FoundAt,Solution4FoundAt,Solution5FoundAt,Solution6FoundAt,Solution7FoundAt,Solution8FoundAt,Solution9FoundAt,Solution1DetailedStatistics,Solution2DetailedStatistics,Solution3DetailedStatistics,Solution4DetailedStatistics,Solution5DetailedStatistics,Solution6DetailedStatistics,Solution7DetailedStatistics,Solution8DetailedStatistics,Solution9DetailedStatistics,Solution10DetailedStatistics,ExplorationInitializationTime,TransformationExecutionTime,ScopePropagationTime,MustRelationPropagationTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,States,ForwardTime,BacktrackingTime,GlobalConstraintEvaluationTime,FitnessCalculationTime,ActivationSelectionTime,Decisions,Transformations,ScopePropagations,ScopePropagationsSolverCalls,NumericalSolverSumTime,NumericalSolverProblemFormingTime,NumericalSolverSolvingTime,NumericalSolverInterpretingSolution,NumericalSolverCachingTime,NumericalSolverCallNumber,NumericalSolverCachedAnswerNumber
21,1,ModelResultImpl,9010,23452,51887,1485,12797,15916,19434,23446,27192,31111,35422,40827,46435,51841,(TransformationExecutionTime164|StateCoderTime:878|ForwardTime:2360|Backtrackingtime:664|GlobalConstraintEvaluationTime:133|FitnessCalculationTime:161|ActivationSelectionTime:3|SolutionCopyTime:15|NumericalSolverSumTime:7655|NumericalSolverProblemFormingTime:7245|NumericalSolverSolvingTime:7245|NumericalSolverInterpretingSolution:11),(TransformationExecutionTime183|StateCoderTime:973|ForwardTime:2865|Backtrackingtime:808|GlobalConstraintEvaluationTime:138|FitnessCalculationTime:161|ActivationSelectionTime:4|SolutionCopyTime:32|NumericalSolverSumTime:9872|NumericalSolverProblemFormingTime:9491|NumericalSolverSolvingTime:9491|NumericalSolverInterpretingSolution:504),(TransformationExecutionTime194|StateCoderTime:1057|ForwardTime:3165|Backtrackingtime:916|GlobalConstraintEvaluationTime:142|FitnessCalculationTime:161|ActivationSelectionTime:4|SolutionCopyTime:55|NumericalSolverSumTime:12751|NumericalSolverProblemFormingTime:12412|NumericalSolverSolvingTime:12412|NumericalSolverInterpretingSolution:547),(TransformationExecutionTime203|StateCoderTime:1151|ForwardTime:3464|Backtrackingtime:1086|GlobalConstraintEvaluationTime:147|FitnessCalculationTime:161|ActivationSelectionTime:4|SolutionCopyTime:66|NumericalSolverSumTime:16025|NumericalSolverProblemFormingTime:15702|NumericalSolverSolvingTime:15702|NumericalSolverInterpretingSolution:615),(TransformationExecutionTime215|StateCoderTime:1246|ForwardTime:3765|Backtrackingtime:1215|GlobalConstraintEvaluationTime:152|FitnessCalculationTime:161|ActivationSelectionTime:5|SolutionCopyTime:75|NumericalSolverSumTime:19113|NumericalSolverProblemFormingTime:18809|NumericalSolverSolvingTime:18809|NumericalSolverInterpretingSolution:721),(TransformationExecutionTime226|StateCoderTime:1352|ForwardTime:4089|Backtrackingtime:1369|GlobalConstraintEvaluationTime:156|FitnessCalculationTime:161|ActivationSelectionTime:5|SolutionCopyTime:88|NumericalSolverSumTime:22319|NumericalSolverProblemFormingTime:22064|NumericalSolverSolvingTime:22064|NumericalSolverInterpretingSolution:804),(TransformationExecutionTime241|StateCoderTime:1478|ForwardTime:4395|Backtrackingtime:1512|GlobalConstraintEvaluationTime:160|FitnessCalculationTime:161|ActivationSelectionTime:5|SolutionCopyTime:102|NumericalSolverSumTime:25900|NumericalSolverProblemFormingTime:25664|NumericalSolverSolvingTime:25664|NumericalSolverInterpretingSolution:955),(TransformationExecutionTime252|StateCoderTime:1630|ForwardTime:4770|Backtrackingtime:1626|GlobalConstraintEvaluationTime:166|FitnessCalculationTime:161|ActivationSelectionTime:5|SolutionCopyTime:121|NumericalSolverSumTime:30532|NumericalSolverProblemFormingTime:30342|NumericalSolverSolvingTime:30342|NumericalSolverInterpretingSolution:984),(TransformationExecutionTime268|StateCoderTime:1781|ForwardTime:5284|Backtrackingtime:1781|GlobalConstraintEvaluationTime:171|FitnessCalculationTime:161|ActivationSelectionTime:5|SolutionCopyTime:130|NumericalSolverSumTime:35154|NumericalSolverProblemFormingTime:35000|NumericalSolverSolvingTime:35000|NumericalSolverInterpretingSolution:1038),(TransformationExecutionTime288|StateCoderTime:1947|ForwardTime:5919|Backtrackingtime:1949|GlobalConstraintEvaluationTime:189|FitnessCalculationTime:161|ActivationSelectionTime:6|SolutionCopyTime:141|NumericalSolverSumTime:39426|NumericalSolverProblemFormingTime:39283|NumericalSolverSolvingTime:39283|NumericalSolverInterpretingSolution:1147),877,288,74,0,425,1947,0,141,1029,5919,1980,189,161,6,1028,1334,693,0,39426,213,39283,1147,89,644,0
3
diff --git a/Domains/crossingScenario/results-prelim/stats1515.csv b/Domains/crossingScenario/results-prelim/stats1515.csv
new file mode 100644
index 00000000..b4629b3c
--- /dev/null
+++ b/Domains/crossingScenario/results-prelim/stats1515.csv
@@ -0,0 +1,3 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution0FoundAt,Solution1FoundAt,Solution2FoundAt,Solution3FoundAt,Solution4FoundAt,Solution5FoundAt,Solution6FoundAt,Solution7FoundAt,Solution8FoundAt,Solution9FoundAt,Solution1DetailedStatistics,Solution2DetailedStatistics,Solution3DetailedStatistics,Solution4DetailedStatistics,Solution5DetailedStatistics,Solution6DetailedStatistics,Solution7DetailedStatistics,Solution8DetailedStatistics,Solution9DetailedStatistics,Solution10DetailedStatistics,ExplorationInitializationTime,TransformationExecutionTime,ScopePropagationTime,MustRelationPropagationTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,States,ForwardTime,BacktrackingTime,GlobalConstraintEvaluationTime,FitnessCalculationTime,ActivationSelectionTime,Decisions,Transformations,ScopePropagations,ScopePropagationsSolverCalls,NumericalSolverSumTime,NumericalSolverProblemFormingTime,NumericalSolverSolvingTime,NumericalSolverInterpretingSolution,NumericalSolverCachingTime,NumericalSolverCallNumber,NumericalSolverCachedAnswerNumber
21,1,ModelResultImpl,8909,26896,147364,4539,43585,55701,66321,75680,88212,97969,110930,122811,135475,147093,(TransformationExecutionTime303|StateCoderTime:2016|ForwardTime:4913|Backtrackingtime:1500|GlobalConstraintEvaluationTime:162|FitnessCalculationTime:112|ActivationSelectionTime:7|SolutionCopyTime:29|NumericalSolverSumTime:33695|NumericalSolverProblemFormingTime:33071|NumericalSolverSolvingTime:33071|NumericalSolverInterpretingSolution:23),(TransformationExecutionTime347|StateCoderTime:2433|ForwardTime:6020|Backtrackingtime:1930|GlobalConstraintEvaluationTime:172|FitnessCalculationTime:112|ActivationSelectionTime:8|SolutionCopyTime:61|NumericalSolverSumTime:43518|NumericalSolverProblemFormingTime:42992|NumericalSolverSolvingTime:42992|NumericalSolverInterpretingSolution:1719),(TransformationExecutionTime369|StateCoderTime:2705|ForwardTime:6493|Backtrackingtime:2159|GlobalConstraintEvaluationTime:179|FitnessCalculationTime:112|ActivationSelectionTime:8|SolutionCopyTime:80|NumericalSolverSumTime:52854|NumericalSolverProblemFormingTime:52340|NumericalSolverSolvingTime:52340|NumericalSolverInterpretingSolution:2050),(TransformationExecutionTime387|StateCoderTime:3023|ForwardTime:7076|Backtrackingtime:2414|GlobalConstraintEvaluationTime:186|FitnessCalculationTime:112|ActivationSelectionTime:8|SolutionCopyTime:91|NumericalSolverSumTime:60837|NumericalSolverProblemFormingTime:60372|NumericalSolverSolvingTime:60372|NumericalSolverInterpretingSolution:2100),(TransformationExecutionTime416|StateCoderTime:3404|ForwardTime:7759|Backtrackingtime:2662|GlobalConstraintEvaluationTime:195|FitnessCalculationTime:112|ActivationSelectionTime:9|SolutionCopyTime:111|NumericalSolverSumTime:71781|NumericalSolverProblemFormingTime:71360|NumericalSolverSolvingTime:71360|NumericalSolverInterpretingSolution:2284),(TransformationExecutionTime431|StateCoderTime:3688|ForwardTime:8238|Backtrackingtime:2873|GlobalConstraintEvaluationTime:204|FitnessCalculationTime:112|ActivationSelectionTime:9|SolutionCopyTime:143|NumericalSolverSumTime:80265|NumericalSolverProblemFormingTime:79879|NumericalSolverSolvingTime:79879|NumericalSolverInterpretingSolution:4294),(TransformationExecutionTime454|StateCoderTime:4163|ForwardTime:8946|Backtrackingtime:3138|GlobalConstraintEvaluationTime:212|FitnessCalculationTime:112|ActivationSelectionTime:10|SolutionCopyTime:182|NumericalSolverSumTime:91499|NumericalSolverProblemFormingTime:91124|NumericalSolverSolvingTime:91124|NumericalSolverInterpretingSolution:5232),(TransformationExecutionTime468|StateCoderTime:4556|ForwardTime:9636|Backtrackingtime:3481|GlobalConstraintEvaluationTime:221|FitnessCalculationTime:112|ActivationSelectionTime:11|SolutionCopyTime:245|NumericalSolverSumTime:101575|NumericalSolverProblemFormingTime:101228|NumericalSolverSolvingTime:101228|NumericalSolverInterpretingSolution:7283),(TransformationExecutionTime493|StateCoderTime:5131|ForwardTime:10356|Backtrackingtime:3869|GlobalConstraintEvaluationTime:228|FitnessCalculationTime:112|ActivationSelectionTime:15|SolutionCopyTime:257|NumericalSolverSumTime:112229|NumericalSolverProblemFormingTime:111903|NumericalSolverSolvingTime:111903|NumericalSolverInterpretingSolution:7470),(TransformationExecutionTime505|StateCoderTime:5330|ForwardTime:11359|Backtrackingtime:4059|GlobalConstraintEvaluationTime:236|FitnessCalculationTime:112|ActivationSelectionTime:16|SolutionCopyTime:264|NumericalSolverSumTime:122243|NumericalSolverProblemFormingTime:122057|NumericalSolverSolvingTime:122057|NumericalSolverInterpretingSolution:7581),865,505,129,0,359,5330,0,264,1467,11359,4130,236,112,16,1466,2149,1125,0,122243,535,122057,7581,192,917,0
3
diff --git a/Domains/crossingScenario/results-prelim/stats2020.csv b/Domains/crossingScenario/results-prelim/stats2020.csv
new file mode 100644
index 00000000..95c7b6ed
--- /dev/null
+++ b/Domains/crossingScenario/results-prelim/stats2020.csv
@@ -0,0 +1,3 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution0FoundAt,Solution1FoundAt,Solution2FoundAt,Solution3FoundAt,Solution4FoundAt,Solution5FoundAt,Solution6FoundAt,Solution7FoundAt,Solution8FoundAt,Solution9FoundAt,Solution1DetailedStatistics,Solution2DetailedStatistics,Solution3DetailedStatistics,Solution4DetailedStatistics,Solution5DetailedStatistics,Solution6DetailedStatistics,Solution7DetailedStatistics,Solution8DetailedStatistics,Solution9DetailedStatistics,Solution10DetailedStatistics,ExplorationInitializationTime,TransformationExecutionTime,ScopePropagationTime,MustRelationPropagationTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,States,ForwardTime,BacktrackingTime,GlobalConstraintEvaluationTime,FitnessCalculationTime,ActivationSelectionTime,Decisions,Transformations,ScopePropagations,ScopePropagationsSolverCalls,NumericalSolverSumTime,NumericalSolverProblemFormingTime,NumericalSolverSolvingTime,NumericalSolverInterpretingSolution,NumericalSolverCachingTime,NumericalSolverCallNumber,NumericalSolverCachedAnswerNumber
21,1,ModelResultImpl,8960,38152,426782,5154,117015,139402,165609,258797,291602,320720,333001,373921,402602,426376,(TransformationExecutionTime494|StateCoderTime:3907|ForwardTime:8581|Backtrackingtime:2766|GlobalConstraintEvaluationTime:412|FitnessCalculationTime:226|ActivationSelectionTime:18|SolutionCopyTime:21|NumericalSolverSumTime:99075|NumericalSolverProblemFormingTime:97727|NumericalSolverSolvingTime:97727|NumericalSolverInterpretingSolution:5),(TransformationExecutionTime529|StateCoderTime:4517|ForwardTime:9707|Backtrackingtime:3074|GlobalConstraintEvaluationTime:427|FitnessCalculationTime:226|ActivationSelectionTime:19|SolutionCopyTime:29|NumericalSolverSumTime:118946|NumericalSolverProblemFormingTime:117798|NumericalSolverSolvingTime:117798|NumericalSolverInterpretingSolution:388),(TransformationExecutionTime544|StateCoderTime:4788|ForwardTime:10245|Backtrackingtime:3260|GlobalConstraintEvaluationTime:437|FitnessCalculationTime:226|ActivationSelectionTime:20|SolutionCopyTime:92|NumericalSolverSumTime:143648|NumericalSolverProblemFormingTime:142864|NumericalSolverSolvingTime:142864|NumericalSolverInterpretingSolution:2381),(TransformationExecutionTime585|StateCoderTime:5301|ForwardTime:11459|Backtrackingtime:3906|GlobalConstraintEvaluationTime:448|FitnessCalculationTime:226|ActivationSelectionTime:20|SolutionCopyTime:102|NumericalSolverSumTime:233896|NumericalSolverProblemFormingTime:232994|NumericalSolverSolvingTime:232994|NumericalSolverInterpretingSolution:2689),(TransformationExecutionTime624|StateCoderTime:5709|ForwardTime:12394|Backtrackingtime:4231|GlobalConstraintEvaluationTime:457|FitnessCalculationTime:226|ActivationSelectionTime:21|SolutionCopyTime:115|NumericalSolverSumTime:264480|NumericalSolverProblemFormingTime:263825|NumericalSolverSolvingTime:263825|NumericalSolverInterpretingSolution:2953),(TransformationExecutionTime654|StateCoderTime:6243|ForwardTime:13200|Backtrackingtime:4497|GlobalConstraintEvaluationTime:465|FitnessCalculationTime:226|ActivationSelectionTime:22|SolutionCopyTime:125|NumericalSolverSumTime:291496|NumericalSolverProblemFormingTime:291108|NumericalSolverSolvingTime:291108|NumericalSolverInterpretingSolution:3763),(TransformationExecutionTime666|StateCoderTime:6435|ForwardTime:13585|Backtrackingtime:4642|GlobalConstraintEvaluationTime:472|FitnessCalculationTime:226|ActivationSelectionTime:22|SolutionCopyTime:158|NumericalSolverSumTime:302593|NumericalSolverProblemFormingTime:302543|NumericalSolverSolvingTime:302543|NumericalSolverInterpretingSolution:3952),(TransformationExecutionTime687|StateCoderTime:6874|ForwardTime:14385|Backtrackingtime:4953|GlobalConstraintEvaluationTime:481|FitnessCalculationTime:226|ActivationSelectionTime:23|SolutionCopyTime:168|NumericalSolverSumTime:341436|NumericalSolverProblemFormingTime:341581|NumericalSolverSolvingTime:341581|NumericalSolverInterpretingSolution:4292),(TransformationExecutionTime743|StateCoderTime:7449|ForwardTime:16003|Backtrackingtime:5450|GlobalConstraintEvaluationTime:488|FitnessCalculationTime:226|ActivationSelectionTime:24|SolutionCopyTime:186|NumericalSolverSumTime:366975|NumericalSolverProblemFormingTime:367335|NumericalSolverSolvingTime:367335|NumericalSolverInterpretingSolution:4611),(TransformationExecutionTime770|StateCoderTime:7890|ForwardTime:17008|Backtrackingtime:5725|GlobalConstraintEvaluationTime:496|FitnessCalculationTime:226|ActivationSelectionTime:24|SolutionCopyTime:193|NumericalSolverSumTime:388630|NumericalSolverProblemFormingTime:389219|NumericalSolverSolvingTime:389219|NumericalSolverInterpretingSolution:4691),1756,770,161,0,482,7890,0,193,1913,17008,5828,496,226,24,1923,3123,1560,0,388630,758,389219,4691,326,1157,0
3
diff --git a/Domains/crossingScenario/results-prelim/stats2525.csv b/Domains/crossingScenario/results-prelim/stats2525.csv
new file mode 100644
index 00000000..3ef3b993
--- /dev/null
+++ b/Domains/crossingScenario/results-prelim/stats2525.csv
@@ -0,0 +1,3 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution0FoundAt,Solution1FoundAt,Solution2FoundAt,Solution3FoundAt,Solution4FoundAt,Solution5FoundAt,Solution6FoundAt,Solution7FoundAt,Solution8FoundAt,Solution9FoundAt,Solution1DetailedStatistics,Solution2DetailedStatistics,Solution3DetailedStatistics,Solution4DetailedStatistics,Solution5DetailedStatistics,Solution6DetailedStatistics,Solution7DetailedStatistics,Solution8DetailedStatistics,Solution9DetailedStatistics,Solution10DetailedStatistics,ExplorationInitializationTime,TransformationExecutionTime,ScopePropagationTime,MustRelationPropagationTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,States,ForwardTime,BacktrackingTime,GlobalConstraintEvaluationTime,FitnessCalculationTime,ActivationSelectionTime,Decisions,Transformations,ScopePropagations,ScopePropagationsSolverCalls,NumericalSolverSumTime,NumericalSolverProblemFormingTime,NumericalSolverSolvingTime,NumericalSolverInterpretingSolution,NumericalSolverCachingTime,NumericalSolverCallNumber,NumericalSolverCachedAnswerNumber
21,1,ModelResultImpl,16616,45089,845556,6143,292654,361779,420309,481525,545119,607816,665526,713971,778821,844868,(TransformationExecutionTime635|StateCoderTime:5581|ForwardTime:12383|Backtrackingtime:3798|GlobalConstraintEvaluationTime:254|FitnessCalculationTime:83|ActivationSelectionTime:18|SolutionCopyTime:115|NumericalSolverSumTime:268490|NumericalSolverProblemFormingTime:267792|NumericalSolverSolvingTime:267792|NumericalSolverInterpretingSolution:19),(TransformationExecutionTime731|StateCoderTime:6897|ForwardTime:14757|Backtrackingtime:4503|GlobalConstraintEvaluationTime:272|FitnessCalculationTime:83|ActivationSelectionTime:19|SolutionCopyTime:122|NumericalSolverSumTime:332112|NumericalSolverProblemFormingTime:331778|NumericalSolverSolvingTime:331778|NumericalSolverInterpretingSolution:1898),(TransformationExecutionTime764|StateCoderTime:7443|ForwardTime:15699|Backtrackingtime:4794|GlobalConstraintEvaluationTime:283|FitnessCalculationTime:83|ActivationSelectionTime:20|SolutionCopyTime:167|NumericalSolverSumTime:388161|NumericalSolverProblemFormingTime:388433|NumericalSolverSolvingTime:388433|NumericalSolverInterpretingSolution:2204),(TransformationExecutionTime799|StateCoderTime:8129|ForwardTime:16840|Backtrackingtime:5221|GlobalConstraintEvaluationTime:300|FitnessCalculationTime:83|ActivationSelectionTime:21|SolutionCopyTime:184|NumericalSolverSumTime:446208|NumericalSolverProblemFormingTime:447299|NumericalSolverSolvingTime:447299|NumericalSolverInterpretingSolution:3008),(TransformationExecutionTime835|StateCoderTime:8878|ForwardTime:17877|Backtrackingtime:5537|GlobalConstraintEvaluationTime:310|FitnessCalculationTime:83|ActivationSelectionTime:22|SolutionCopyTime:191|NumericalSolverSumTime:506613|NumericalSolverProblemFormingTime:508301|NumericalSolverSolvingTime:508301|NumericalSolverInterpretingSolution:3261),(TransformationExecutionTime933|StateCoderTime:9919|ForwardTime:20737|Backtrackingtime:6289|GlobalConstraintEvaluationTime:320|FitnessCalculationTime:83|ActivationSelectionTime:22|SolutionCopyTime:203|NumericalSolverSumTime:563726|NumericalSolverProblemFormingTime:565943|NumericalSolverSolvingTime:565943|NumericalSolverInterpretingSolution:3396),(TransformationExecutionTime974|StateCoderTime:11009|ForwardTime:22343|Backtrackingtime:6905|GlobalConstraintEvaluationTime:331|FitnessCalculationTime:83|ActivationSelectionTime:23|SolutionCopyTime:213|NumericalSolverSumTime:617206|NumericalSolverProblemFormingTime:619686|NumericalSolverSolvingTime:619686|NumericalSolverInterpretingSolution:3626),(TransformationExecutionTime1001|StateCoderTime:11697|ForwardTime:23206|Backtrackingtime:7223|GlobalConstraintEvaluationTime:339|FitnessCalculationTime:83|ActivationSelectionTime:24|SolutionCopyTime:244|NumericalSolverSumTime:663109|NumericalSolverProblemFormingTime:665951|NumericalSolverSolvingTime:665951|NumericalSolverInterpretingSolution:4870),(TransformationExecutionTime1049|StateCoderTime:12433|ForwardTime:24701|Backtrackingtime:7654|GlobalConstraintEvaluationTime:348|FitnessCalculationTime:83|ActivationSelectionTime:25|SolutionCopyTime:250|NumericalSolverSumTime:724603|NumericalSolverProblemFormingTime:727988|NumericalSolverSolvingTime:727988|NumericalSolverInterpretingSolution:5635),(TransformationExecutionTime1126|StateCoderTime:13570|ForwardTime:26801|Backtrackingtime:8243|GlobalConstraintEvaluationTime:373|FitnessCalculationTime:83|ActivationSelectionTime:26|SolutionCopyTime:259|NumericalSolverSumTime:785878|NumericalSolverProblemFormingTime:789775|NumericalSolverSolvingTime:789775|NumericalSolverInterpretingSolution:5726),836,1126,209,0,1317,13570,0,259,2859,26801,8319,373,83,26,2859,5353,2592,0,785878,1005,789775,5726,409,1693,0
3
diff --git a/Domains/crossingScenario/src/crossingScenario/run/CrossingScenarioMain.java b/Domains/crossingScenario/src/crossingScenario/run/CrossingScenarioMain.java
index 9b8f10dc..57a91dfc 100644
--- a/Domains/crossingScenario/src/crossingScenario/run/CrossingScenarioMain.java
+++ b/Domains/crossingScenario/src/crossingScenario/run/CrossingScenarioMain.java
@@ -3,9 +3,11 @@ package crossingScenario.run;
3import java.awt.Desktop; 3import java.awt.Desktop;
4import java.io.File; 4import java.io.File;
5import java.io.IOException; 5import java.io.IOException;
6import java.nio.file.CopyOption;
6import java.nio.file.Files; 7import java.nio.file.Files;
7import java.nio.file.Path; 8import java.nio.file.Path;
8import java.nio.file.Paths; 9import java.nio.file.Paths;
10import java.nio.file.StandardCopyOption;
9import java.util.List; 11import java.util.List;
10 12
11import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor; 13import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor;
@@ -26,7 +28,12 @@ public class CrossingScenarioMain {
26 if (errorMessages != null) { 28 if (errorMessages != null) {
27 System.out.println(errorMessages); 29 System.out.println(errorMessages);
28 } 30 }
29 Path path = Paths.get("outputs/statistics.csv"); 31
32
33 Path path = Paths.get("outputs/statistics.csv");
34 Path target = Paths.get("../..//Tests/MODELS2020-CaseStudies/case.study.pledge.run/measurements1/stats.csv");
35 Files.copy(path, target, StandardCopyOption.REPLACE_EXISTING);
36
30 List<String> content = Files.readAllLines(path); 37 List<String> content = Files.readAllLines(path);
31 String[] times = content.get(1).split(","); 38 String[] times = content.get(1).split(",");
32 System.out.println("STATISTICS"); 39 System.out.println("STATISTICS");
@@ -45,7 +52,10 @@ public class CrossingScenarioMain {
45 52
46 String p1 = "outputs/models/1.xmi"; 53 String p1 = "outputs/models/1.xmi";
47 String p2 = "outputs/simplePrevLane.tgf"; 54 String p2 = "outputs/simplePrevLane.tgf";
48 QueryDebug.checkPrevLanes(p1, p2); 55// QueryDebug.checkPrevLanes(p1, p2);
49// Desktop.getDesktop().open(new File(p2)); 56// Desktop.getDesktop().open(new File(p2));
57 System.gc();
58 System.gc();
59 System.gc();
50 } 60 }
51} 61}
diff --git a/Domains/crossingScenario/src/queries/queries.vql b/Domains/crossingScenario/src/queries/queries.vql
new file mode 100644
index 00000000..d00fae3f
--- /dev/null
+++ b/Domains/crossingScenario/src/queries/queries.vql
@@ -0,0 +1,10 @@
1package queries
2
3import "http://www.example.com/crossingScenario"
4import "http://www.eclipse.org/emf/2002/Ecore"
5
6/////////pedestrian-width (4) //TODO Derived?
7pattern x(p:Pedestrian) {
8 Pedestrian.length(p, l);
9 check(l != 1.0);
10} \ No newline at end of file