You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We noticed that the scheduler for infinity states in MDPs when computing expected rewards is sometimes incorrect. I'm attaching a simple MDP in PRISM inf-reward-bad-scheduler-mdp.zip. When you run model checking with property Rmax=? [F "goal"] it correctly decides the value to be infinity, however, if you extract the scheduler and apply it to the MDP you get a DTMC where the same property doesn't give you infinity anymore. This is because the scheduler chooses the action a3 instead of a4, which would ensure that the state s=2 is a trap state.
From our investigation, the culprit is the following function:
The comment in the function is correct on how this should be computed, but the code is wrong. For me, the trap states should only be those infinity states which are part of some end component where every state is an infinity state. Here line 610 only checks if all the successors of the selected choice are infinity states but does not check whether they are all part of end component.
The text was updated successfully, but these errors were encountered:
We noticed that the scheduler for infinity states in MDPs when computing expected rewards is sometimes incorrect. I'm attaching a simple MDP in PRISM inf-reward-bad-scheduler-mdp.zip. When you run model checking with property
Rmax=? [F "goal"]
it correctly decides the value to be infinity, however, if you extract the scheduler and apply it to the MDP you get a DTMC where the same property doesn't give you infinity anymore. This is because the scheduler chooses the actiona3
instead ofa4
, which would ensure that the states=2
is a trap state.From our investigation, the culprit is the following function:
storm/src/storm/utility/graph.cpp
Lines 599 to 620 in 8dc90e9
The comment in the function is correct on how this should be computed, but the code is wrong. For me, the trap states should only be those infinity states which are part of some end component where every state is an infinity state. Here line 610 only checks if all the successors of the selected choice are infinity states but does not check whether they are all part of end component.
The text was updated successfully, but these errors were encountered: