From 930bbcfbbbe7bdb5d14b9294e2678a4be53efb27 Mon Sep 17 00:00:00 2001 From: bjoernschroeder Date: Tue, 4 Apr 2023 13:48:07 +0200 Subject: [PATCH 1/3] preven dynalloc for plans with negative utilityThreshold, set negative threshold for simulation plan --- alica_engine/src/engine/RuleBook.cpp | 8 +++++++- .../alica_ros_turtlesim/etc/plans/Simulation.pml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/alica_engine/src/engine/RuleBook.cpp b/alica_engine/src/engine/RuleBook.cpp index d9d9aa990..e0fdfeb62 100644 --- a/alica_engine/src/engine/RuleBook.cpp +++ b/alica_engine/src/engine/RuleBook.cpp @@ -157,6 +157,13 @@ PlanChange RuleBook::dynamicAllocationRule(RunningPlan& r) if (!r.getCycleManagement().mayDoUtilityCheck()) { return PlanChange::NoChange; } + + const Plan* p = static_cast(r.getActivePlan()); + + if (p->getUtilityThreshold() < 0) { + return PlanChange::NoChange; + } + const RunningPlan* parent = r.getParent(); AgentGrp robots; @@ -167,7 +174,6 @@ PlanChange RuleBook::dynamicAllocationRule(RunningPlan& r) if (newr == nullptr) { return PlanChange::NoChange; } - const Plan* p = static_cast(r.getActivePlan()); double possibleUtil = newr->getAssignment().getLastUtilityValue(); diff --git a/supplementary/alica_ros1/alica_ros_turtlesim/etc/plans/Simulation.pml b/supplementary/alica_ros1/alica_ros_turtlesim/etc/plans/Simulation.pml index d04fe33ef..c96330015 100644 --- a/supplementary/alica_ros1/alica_ros_turtlesim/etc/plans/Simulation.pml +++ b/supplementary/alica_ros1/alica_ros_turtlesim/etc/plans/Simulation.pml @@ -291,6 +291,6 @@ "synchronisation": null } ], - "utilityThreshold": 0.0, + "utilityThreshold": -1.0, "variables": [] } From 20f2bdf3021bac470310c64406f56aeed2390c45 Mon Sep 17 00:00:00 2001 From: bjoernschroeder Date: Wed, 5 Apr 2023 01:48:40 +0200 Subject: [PATCH 2/3] prevent dynamicAllocation if runningplan has no active plan --- alica_engine/src/engine/RuleBook.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alica_engine/src/engine/RuleBook.cpp b/alica_engine/src/engine/RuleBook.cpp index e0fdfeb62..92c8d3ddc 100644 --- a/alica_engine/src/engine/RuleBook.cpp +++ b/alica_engine/src/engine/RuleBook.cpp @@ -160,7 +160,7 @@ PlanChange RuleBook::dynamicAllocationRule(RunningPlan& r) const Plan* p = static_cast(r.getActivePlan()); - if (p->getUtilityThreshold() < 0) { + if (!p || p->getUtilityThreshold() < 0) { return PlanChange::NoChange; } From 2a2f6bff659972ea893271d542371819d8b39f98 Mon Sep 17 00:00:00 2001 From: bjoernschroeder Date: Wed, 5 Apr 2023 01:54:17 +0200 Subject: [PATCH 3/3] compare utilityThreshold with double --- alica_engine/src/engine/RuleBook.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alica_engine/src/engine/RuleBook.cpp b/alica_engine/src/engine/RuleBook.cpp index 92c8d3ddc..f1baf5b0b 100644 --- a/alica_engine/src/engine/RuleBook.cpp +++ b/alica_engine/src/engine/RuleBook.cpp @@ -160,7 +160,7 @@ PlanChange RuleBook::dynamicAllocationRule(RunningPlan& r) const Plan* p = static_cast(r.getActivePlan()); - if (!p || p->getUtilityThreshold() < 0) { + if (!p || p->getUtilityThreshold() < 0.) { return PlanChange::NoChange; }