From 3e1f5eaeb2395600ea6c80b3aee7bedbd3bfab79 Mon Sep 17 00:00:00 2001 From: Matthias Volk Date: Tue, 21 Apr 2026 17:12:07 +0200 Subject: [PATCH] Adaption to changes in POMDP --- src/pomdp/tracker.cpp | 17 ----------------- src/pomdp/transformations.cpp | 7 +++++-- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/pomdp/tracker.cpp b/src/pomdp/tracker.cpp index 11740e2b98..3635773a0b 100644 --- a/src/pomdp/tracker.cpp +++ b/src/pomdp/tracker.cpp @@ -10,7 +10,6 @@ template using SparsePomdp = storm::models::sparse::Pomdp using SparsePomdpTracker = storm::generator::BeliefSupportTracker; template using NDPomdpTrackerSparse = storm::generator::NondeterministicBeliefTracker>; -template using NDPomdpTrackerDense = storm::generator::NondeterministicBeliefTracker>; template @@ -25,11 +24,6 @@ void define_tracker(py::module& m, std::string const& vtSuffix) { sbel.def_property_readonly("risk", &storm::generator::SparseBeliefState::getRisk); sbel.def("__str__", &storm::generator::SparseBeliefState::toString); sbel.def_property_readonly("is_valid", &storm::generator::SparseBeliefState::isValid); -// -// py::class_> dbel(m, "DenseBeliefStateDouble", "Belief state in dense format"); -// dbel.def("get", &storm::generator::ObservationDenseBeliefState::get, py::arg("state")); -// dbel.def_property_readonly("risk", &storm::generator::ObservationDenseBeliefState::getRisk); -// dbel.def("__str__", &storm::generator::ObservationDenseBeliefState::toString); py::class_::Options> opts(m, ("NondeterministicBeliefTracker" + vtSuffix + "SparseOptions").c_str(), "Options for the corresponding tracker"); opts.def(py::init<>()); @@ -49,17 +43,6 @@ void define_tracker(py::module& m, std::string const& vtSuffix) { ndetbelieftracker.def("obtain_last_observation", &NDPomdpTrackerSparse::getCurrentObservation); ndetbelieftracker.def("reduce",&NDPomdpTrackerSparse::reduce); ndetbelieftracker.def("reduction_timed_out", &NDPomdpTrackerSparse::hasTimedOut); - -// py::class_> ndetbelieftrackerd(m, "NondeterministicBeliefTrackerDoubleDense", "Tracker for belief states and uncontrollable actions"); -// ndetbelieftrackerd.def(py::init const&>(), py::arg("pomdp")); -// ndetbelieftrackerd.def("reset", &NDPomdpTrackerDense::reset); -// ndetbelieftrackerd.def("set_risk", &NDPomdpTrackerDense::setRisk, py::arg("risk")); -// ndetbelieftrackerd.def("obtain_current_risk",&NDPomdpTrackerDense::getCurrentRisk, py::arg("max")=true); -// ndetbelieftrackerd.def("track", &NDPomdpTrackerDense::track, py::arg("observation")); -// ndetbelieftrackerd.def("obtain_beliefs", &NDPomdpTrackerDense::getCurrentBeliefs); -// ndetbelieftrackerd.def("obtain_last_observation", &NDPomdpTrackerDense::getCurrentObservation); -// ndetbelieftrackerd.def("reduce",&NDPomdpTrackerDense::reduce); - } template void define_tracker(py::module& m, std::string const& vtSuffix); diff --git a/src/pomdp/transformations.cpp b/src/pomdp/transformations.cpp index dea2cb7437..2eb05ef222 100644 --- a/src/pomdp/transformations.cpp +++ b/src/pomdp/transformations.cpp @@ -47,7 +47,10 @@ void define_transformations_nt(py::module &m) { .value("simple_log", storm::transformer::PomdpFscApplicationMode::SIMPLE_LOG) .value("full", storm::transformer::PomdpFscApplicationMode::FULL) ; - + py::class_ options(m, "ObservationTraceUnfolderOptions", "Options for unfolding observation traces"); + options.def(py::init<>()); + options.def_readwrite("restart_semantics", &storm::pomdp::ObservationTraceUnfolderOptions::useRestartSemantics, + "Use restart semantics instead of a sink state"); } template @@ -59,7 +62,7 @@ void define_transformations(py::module& m, std::string const& vtSuffix) { //m.def(("_unfold_trace_" + vtSuffix).c_str(), &unfold_trace, "Unfold observed trace", py::arg("pomdp"), py::arg("expression_manager"),py::arg("observation_trace"), py::arg("risk_definition")); py::class_> unfolder(m, ("ObservationTraceUnfolder" + vtSuffix).c_str(), "Unfolds observation traces in models"); - unfolder.def(py::init const&, std::vector const&, std::shared_ptr&>(), py::arg("model"), py::arg("risk"), py::arg("expression_manager")); + unfolder.def(py::init const&, std::vector const&, std::shared_ptr&, storm::pomdp::ObservationTraceUnfolderOptions const &>(), py::arg("model"), py::arg("risk"), py::arg("expression_manager"), py::arg("options"), py::keep_alive<2, 1>()); unfolder.def("transform", &storm::pomdp::ObservationTraceUnfolder::transform, py::arg("trace")); unfolder.def("extend", &storm::pomdp::ObservationTraceUnfolder::extend, py::arg("new_observation")); unfolder.def("reset", &storm::pomdp::ObservationTraceUnfolder::reset, py::arg("new_observation"));