143 return outerIterations;
147 return graphBasedAnalysisWinOb;
151 graphBasedAnalysisWinOb++;
155 uint64_t satCalls = 0;
156 uint64_t outerIterations = 0;
157 uint64_t graphBasedAnalysisWinOb = 0;
163 std::shared_ptr<storm::utility::solver::SmtSolverFactory>& smtSolverFactory,
MemlessSearchOptions const& options);
169 STORM_LOG_TRACE(
"Questionmark states: " << (~surelyReachSinkStates & ~targetStates));
170 bool result =
analyze(k, ~surelyReachSinkStates & ~targetStates, pomdp.getInitialStates());
177 analyze(k, ~surelyReachSinkStates & ~targetStates);
182 return winningRegion;
197 STORM_LOG_INFO(
"Reset solver to restart with current winning region");
198 schedulerForObs.clear();
199 finalSchedulers.clear();
202 void printScheduler(std::vector<InternalObservationScheduler>
const&);
205 bool initialize(uint64_t k);
207 bool smtCheck(uint64_t iteration, std::set<storm::expressions::Expression>
const& assumptions = {});
209 std::unique_ptr<storm::solver::SmtSolver> smtSolver;
211 std::shared_ptr<storm::expressions::ExpressionManager> expressionManager;
212 uint64_t maxK = std::numeric_limits<uint64_t>::max();
216 std::vector<std::vector<uint64_t>> statesPerObservation;
218 std::vector<storm::expressions::Variable> schedulerVariables;
219 std::vector<storm::expressions::Expression> schedulerVariableExpressions;
220 std::vector<std::vector<storm::expressions::Expression>> actionSelectionVarExpressions;
221 std::vector<std::vector<storm::expressions::Variable>> actionSelectionVars;
223 std::vector<storm::expressions::Variable> reachVars;
224 std::vector<storm::expressions::Expression> reachVarExpressions;
225 std::vector<std::vector<storm::expressions::Expression>> reachVarExpressionsPerObservation;
227 std::vector<storm::expressions::Variable> observationUpdatedVariables;
228 std::vector<storm::expressions::Expression> observationUpdatedExpressions;
230 std::vector<storm::expressions::Variable> switchVars;
231 std::vector<storm::expressions::Expression> switchVarExpressions;
232 std::vector<storm::expressions::Variable> followVars;
233 std::vector<storm::expressions::Expression> followVarExpressions;
234 std::vector<storm::expressions::Variable> continuationVars;
235 std::vector<storm::expressions::Expression> continuationVarExpressions;
236 std::vector<std::vector<storm::expressions::Variable>> pathVars;
237 std::vector<std::vector<storm::expressions::Expression>> pathVarExpressions;
239 std::vector<InternalObservationScheduler> finalSchedulers;
240 std::vector<uint64_t> schedulerForObs;
241 WinningRegion winningRegion;
243 MemlessSearchOptions options;
246 std::shared_ptr<storm::utility::solver::SmtSolverFactory>& smtSolverFactory;
247 std::shared_ptr<WinningRegionQueryInterface<ValueType>> validator;
249 mutable bool useFindOffset =
false;