25 typedef boost::container::flat_map<StateType, BeliefValueType>
BeliefType;
33 void setRewardModel(std::optional<std::string> rewardModelName = std::nullopt);
40 uint64_t
size()
const;
58 std::string
toString(Triangulation
const &t)
const;
62 std::pair<bool, ValueType>
getWeightedSum(
BeliefId const &beliefId, std::unordered_map<StateType, ValueType>
const &summands);
81 template<
typename DistributionType>
82 void addToDistribution(DistributionType &distr, StateType
const &state, BeliefValueType
const &value);
89 std::vector<BeliefValueType>
const &observationResolutions);
92 std::vector<uint64_t>
const &observationResolutions);
104 std::vector<BeliefValueType> getBeliefAsVector(
BeliefId const &beliefId);
106 std::vector<BeliefValueType> getBeliefAsVector(
const BeliefType &belief);
110 template<
typename DistributionType>
111 void adjustDistribution(DistributionType &distr);
114 std::size_t operator()(
const BeliefType &belief)
const;
117 struct Belief_equal_to {
121 struct FreudenthalDiff {
122 FreudenthalDiff(StateType
const &dimension, BeliefValueType diff);
125 BeliefValueType diff;
126 bool operator>(FreudenthalDiff
const &other)
const;
137 bool assertBelief(
BeliefType const &belief)
const;
139 bool assertTriangulation(
BeliefType const &belief, Triangulation
const &triangulation)
const;
143 void triangulateBeliefFreudenthal(
BeliefType const &belief, BeliefValueType
const &resolution, Triangulation &result);
145 void triangulateBeliefDynamic(
BeliefType const &belief, BeliefValueType
const &resolution, Triangulation &result);
149 std::vector<std::pair<BeliefId, ValueType>> expandInternal(
151 std::optional<std::vector<BeliefValueType>>
const &observationTriangulationResolutions = std::nullopt,
152 std::optional<std::vector<uint64_t>>
const &observationGridClippingResolutions = std::nullopt);
158 PomdpType
const &pomdp;
159 std::vector<ValueType> pomdpActionRewardVector;
161 std::vector<BeliefType> beliefs;
162 std::vector<std::unordered_map<BeliefType, BeliefId, BeliefHash, Belief_equal_to>> beliefToIdMap;
167 std::shared_ptr<storm::solver::LpSolver<BeliefValueType>> lpSolver;