Exemplo n.º 1
0
  /**
   * Compute the min/max probability, from the initial state, of reaching a set of target locations.
   */
  private double computeProbabilisticReachability(BitSet targetLocs, boolean min)
      throws PrismException {
    // Determine which method to use for computation
    String ptaMethod = prism.getSettings().getString(PrismSettings.PRISM_PTA_METHOD);

    // Do probability computation through abstraction/refinement/stochastic games
    if (ptaMethod.equals("Stochastic games")) {
      PTAAbstractRefine ptaAR;
      ptaAR = new PTAAbstractRefine();
      String arOptions = prism.getSettings().getString(PrismSettings.PRISM_AR_OPTIONS);
      ptaAR.setLog(mainLog);
      ptaAR.parseOptions(arOptions.split(","));
      return ptaAR.forwardsReachAbstractRefine(pta, targetLocs, null, min);
    }

    // Do probability computation by first constructing a bisimulation
    else if (ptaMethod.equals("Bisimulation minimisation")) {
      // Not supported yet
      throw new PrismException("Not yet supported");
    } else throw new PrismException("Unknown PTA solution method");
  }