Exemplo n.º 1
0
 @Override
 public void visitState(ATNState p) {
   if (p.getClass() == ATNState.class && p.getNumberOfTransitions() == 1) {
     ATNState q = p.transition(0).target;
     if (p.transition(0) instanceof RuleTransition) {
       q = ((RuleTransition) p.transition(0)).followState;
     }
     if (q.getClass() == ATNState.class) {
       // we have p-x->q for x in {rule, action, pred, token, ...}
       // if edge out of q is single epsilon to block end
       // we can strip epsilon p-x->q-eps->r
       Transition trans = q.transition(0);
       if (q.getNumberOfTransitions() == 1
           && trans.isEpsilon()
           && !(trans instanceof ActionTransition)) {
         ATNState r = trans.target;
         if (r instanceof BlockEndState
             || r instanceof PlusLoopbackState
             || r instanceof StarLoopbackState) {
           // skip over q
           if (p.transition(0) instanceof RuleTransition) {
             ((RuleTransition) p.transition(0)).followState = r;
           } else {
             p.transition(0).target = r;
           }
           atn.removeState(q);
         }
       }
     }
   }
 }
  /*
   * input transition exp loop through transition experiences
   *
   * for each transition t use Q update rule oldState and action comes from t
   * new state comes from t
   *
   * for Q update fill up Q_table (output)
   */
  public void Qsweep(List<Transition> transitions) {
    if (firstTimeQ) initTable(transitions);
    for (int index = 0; index < transitions.size(); index++) {
      Transition t = transitions.get(index);

      // get reward (if any)
      float reward = -0.08f; // small penalty for each timestep used
      if (t.getNextState().getEnemyHealth() < 0.001) {
        reward = 5;
      } else if (t.getNextState().getOgreHealth() < 0.001) {
        reward = -10;
      } else if ( // t.getNextState().getEnemyHealth() <
      // t.getCurrentState()
      // .getEnemyHealth()&&
      t.getNextState().getOgreEnergy() < t.getCurrentState().getOgreEnergy()) {
        // if we just got him with the bow
        reward = 5;
        // System.out.println("got reward");
      }
      Q_table[index][0] += alpha * (reward + gamma * queryBestState(t) - Q_table[index][0]);

      // original version
      if (Q_table[index][0] > 10) Q_table[index][0] = 10;
      if (Q_table[index][0] < -10) Q_table[index][0] = -10;
      // System.out.println("Q: "+index+": "+Q_tableNN[index][0]);
    }
    firstTimeQ = false;
  }
 /**
  * (non-Javadoc).
  *
  * @return the string
  * @see dj.DigitalDJ#toXML()
  */
 @Override
 public String toXML() {
   StringBuilder sb = new StringBuilder(2000);
   sb.append(toXMLGeneralParameters());
   sb.append("\t<" + Const.XML_DJ_TRANSITIONS + ">\n");
   for (Transition transition : transitions) {
     sb.append(
         "\t\t<"
             + Const.XML_DJ_TRANSITION
             + " "
             + Const.XML_DJ_FROM
             + "='"
             + transition.getFrom().toXML()
             + "' "
             + Const.XML_DJ_TO
             + "='"
             + transition.getTo().toXML()
             + "' "
             + Const.XML_DJ_NUMBER
             + "='"
             + transition.getNbTracks()
             + "'/>\n");
   }
   sb.append("\t</" + Const.XML_DJ_TRANSITIONS + ">\n");
   sb.append("</" + Const.XML_DJ_DJ + ">\n");
   return sb.toString();
 }
Exemplo n.º 4
0
  @Override
  public void render(float delta) {

    if (to == null) {
      if (onTo) main.setScreen(nextScreen);
    } else {
      if ((to.finished() && onTo) || previousScreen == nextScreen) main.setScreen(nextScreen);
    }

    if (from == null) {
      onTo = true;
    } else {
      if (from.finished()) {
        onTo = true;
      }
    }

    if (onTo) {
      if (nextScreen != null) nextScreen.render(delta);
      main.batch.begin();
      if (to != null) to.render(main);
      main.batch.end();
    } else {
      if (previousScreen != null && previousScreen != this) previousScreen.render(delta);
      main.batch.begin();
      from.render(main);
      main.batch.end();
    }
  }
Exemplo n.º 5
0
 /** Returns a string representation of this automaton. */
 @Override
 public String toString() {
   StringBuilder b = new StringBuilder();
   b.append("initial state: ").append(initial).append("\n");
   for (int i = 0; i < size; i++) {
     b.append("state " + i);
     if (accept[i]) b.append(" [accept]:\n");
     else b.append(" [reject]:\n");
     for (int j = 0; j < points.length; j++) {
       int k = transitions[i * points.length + j];
       if (k != -1) {
         char min = points[j];
         char max;
         if (j + 1 < points.length) max = (char) (points[j + 1] - 1);
         else max = Character.MAX_VALUE;
         b.append(" ");
         Transition.appendCharString(min, b);
         if (min != max) {
           b.append("-");
           Transition.appendCharString(max, b);
         }
         b.append(" -> ").append(k).append("\n");
       }
     }
   }
   return b.toString();
 }
Exemplo n.º 6
0
 public int getNumberOfEnabledTransitions() {
   int numberOfEnabledTransitions = 0;
   for (Transition transition : this.transitions) {
     if (transition.isEnabled()) numberOfEnabledTransitions++;
   }
   return numberOfEnabledTransitions;
 }
Exemplo n.º 7
0
  @Override
  public String toString() {
    StringBuilder result = new StringBuilder();
    result.append("Fireable transitions: ");

    lock.readLock().lock();
    try {
      for (Transition transition : this.getAllEnabledTransitions()) {
        result.append(transition.getFullLabel() + " ");
      }
      if (this.getAllEnabledTransitions().isEmpty()) {
        result.append("-NONE-");
      }
      result.append("\nPlaces: ");
      for (Place place : petriNet.getRootSubnet().getPlacesRecursively()) {
        result.append(place.getLabel() + ":" + getTokens(place) + " ");
      }
      if (petriNet.getRootSubnet().getPlacesRecursively().isEmpty()) {
        result.append("-NONE-");
      }
    } finally {
      lock.readLock().unlock();
    }

    return result.toString();
  }
Exemplo n.º 8
0
  @Override
  public String toJpdl() throws InvalidModelException {
    StringWriter jpdl = new StringWriter();
    String type = "";
    if (outgoings.size() <= 1) type = "join";
    else type = "fork";

    jpdl.write("  <" + type);

    jpdl.write(JsonToJpdl.transformAttribute("name", name));

    if (bounds != null) {
      jpdl.write(bounds.toJpdl());
    } else {
      throw new InvalidModelException("Invalid Wait activity. Bounds is missing.");
    }

    if (outgoings.size() > 0) {
      jpdl.write(" >\n");
      for (Transition t : outgoings) {
        jpdl.write(t.toJpdl());
      }
      jpdl.write("  </" + type + ">\n\n");
    } else {
      jpdl.write(" />\n\n");
    }

    return jpdl.toString();
  }
Exemplo n.º 9
0
 @NotNull
 public Handle elemList(@NotNull List<Handle> els) {
   int n = els.size();
   for (int i = 0; i < n - 1; i++) { // hook up elements (visit all but last)
     Handle el = els.get(i);
     // if el is of form o-x->o for x in {rule, action, pred, token, ...}
     // and not last in alt
     Transition tr = null;
     if (el.left.getNumberOfTransitions() == 1) tr = el.left.transition(0);
     boolean isRuleTrans = tr instanceof RuleTransition;
     if (el.left.getClass() == ATNState.class
         && el.right.getClass() == ATNState.class
         && tr != null
         && (isRuleTrans || tr.target == el.right)) {
       // we can avoid epsilon edge to next el
       if (isRuleTrans) ((RuleTransition) tr).followState = els.get(i + 1).left;
       else tr.target = els.get(i + 1).left;
       atn.removeState(el.right); // we skipped over this state
     } else { // need epsilon if previous block's right end node is complicated
       epsilon(el.right, els.get(i + 1).left);
     }
   }
   Handle first = els.get(0);
   Handle last = els.get(n - 1);
   if (first == null || last == null) {
     g.tool.errMgr.toolError(ErrorType.INTERNAL_ERROR, "element list has first|last == null");
   }
   return new Handle(first.left, last.right);
 }
  public static double nearestValue(double energy, double distance, double action) {
    //		if(distance>0.43&&energy>0.5)
    //			System.out.print("test");

    // scale energy to nearest 0.1
    energy *= 10;
    energy = Math.round(energy);
    energy /= 10;

    double closestDist = 100;
    Transition trans;
    double bestValue = 1;
    int bestIndex = 1;
    for (int index = 0; index < transitionList.size(); index += 2) {
      trans = transitionList.get(index);
      if (Math.abs(trans.getCurrentState().getOgreEnergy() - energy) < 0.001
          && Math.abs(trans.getCurrentState().getEnemyDistance() - distance) < closestDist) {
        closestDist = Math.abs(trans.getCurrentState().getEnemyDistance() - distance);
        bestIndex = index;
      }
    }
    // value of evade
    bestValue = Q_table[bestIndex][0];
    // if attack then use that value
    if (bestIndex + 1 < transitionList.size())
      if (action < 0.5) bestValue = Q_table[bestIndex + 1][0];
    return bestValue;
  }
Exemplo n.º 11
0
  @Override
  public String toJpdl() throws InvalidModelException {
    StringWriter jpdl = new StringWriter();
    jpdl.write("  <esb");

    jpdl.write(JsonToJpdl.transformAttribute("name", name));

    try {
      jpdl.write(JsonToJpdl.transformRequieredAttribute("category", category));
      jpdl.write(JsonToJpdl.transformRequieredAttribute("service", service));
    } catch (InvalidModelException e) {
      throw new InvalidModelException("Invalid Esb activity. " + e.getMessage());
    }

    if (bounds != null) {
      jpdl.write(bounds.toJpdl());
    } else {
      throw new InvalidModelException("Invalid ESB activity. Bounds is missing.");
    }

    jpdl.write(" >\n");

    for (Part p : part) {
      jpdl.write(p.toJpdl());
    }

    for (Transition t : outgoings) {
      jpdl.write(t.toJpdl());
    }

    jpdl.write("  </esb>\n\n");

    return jpdl.toString();
  }
 public static Set<String> getStringValues() {
   final Set<String> res = new HashSet<String>();
   for (final Transition transitions : Transition.values()) {
     res.add(transitions.toString());
   }
   return res;
 }
Exemplo n.º 13
0
  @Override
  public final ListenableFuture<State> stop() {
    lock.lock();
    try {
      if (state == State.NEW) {
        state = State.TERMINATED;
        terminated(State.NEW);
        startup.set(State.TERMINATED);
        shutdown.set(State.TERMINATED);
      } else if (state == State.STARTING) {
        shutdownWhenStartupFinishes = true;
        startup.set(State.STOPPING);
      } else if (state == State.RUNNING) {
        state = State.STOPPING;
        stopping(State.RUNNING);
        doStop();
      }
    } catch (Throwable shutdownFailure) {
      // put the exception in the future, the user can get it via Future.get()
      notifyFailed(shutdownFailure);
    } finally {
      lock.unlock();
    }

    return shutdown;
  }
Exemplo n.º 14
0
  public Transition addTransition(Transition value) {
    if (value.sign == null
        || value.sign.equals("")
        || transitions.containsKey(value.sign) && !transitions.get(value.sign).equals(value)) {
      Iterator<String> it = transitions.keySet().iterator();
      int i = 0;

      while (it.hasNext()) {
        String act = it.next();

        if (act.matches("^t[0-9]+$")) {
          try {
            i = Math.max(i, Integer.parseInt(act.substring(1)));
          } catch (NumberFormatException e) {
            // Never happens
            // throw new PNException("InvalidNameFormat", "Error");
          }
        }
      }

      ++i;
      value.sign = "t" + i;
    } else if (transitions.containsKey(value.sign) && transitions.get(value.sign).equals(value)) {
      return transitions.get(value.sign);
    }

    value._net = this;
    transitions.put(value.sign, value);
    return value;
  }
 public double queryBestState(Transition t) {
   double energy = t.getNextState().getOgreEnergy();
   double distance = t.getNextState().getEnemyDistance();
   double vAttack = FQ_learner.nearestValue(energy, distance, 0);
   double vEvade = FQ_learner.nearestValue(energy, distance, 1);
   if (vAttack > vEvade) return vAttack;
   else return vEvade;
 }
Exemplo n.º 16
0
 @Override
 public void tickUpdate() {
   if (onTo) {
     if (to != null) to.tickUpdate(main);
   } else {
     if (from != null) from.tickUpdate(main);
   }
 }
 /**
  * Gets the transition.
  *
  * @param ambience DOCUMENT_ME
  * @return transition mapping this FROM ambience or null if none maps it
  */
 public Transition getTransition(Ambience ambience) {
   for (Transition transition : transitions) {
     if (CollectionUtils.containsAny(transition.getFrom().getGenres(), ambience.getGenres())) {
       return transition;
     }
   }
   return null;
 }
 /**
  * Gets the ambience.
  *
  * @param genre DOCUMENT_ME
  * @return ambience associated with a genre known in transitions or null if none
  */
 private Ambience getAmbience(Genre genre) {
   for (Transition transition : transitions) {
     if (transition.getFrom().getGenres().contains(genre)) {
       return transition.getFrom();
     }
   }
   return null;
 }
Exemplo n.º 19
0
 public void clearPetrinet() {
   for (Place place : this.places) {
     place.setNumberOfTokens(0);
   }
   for (Transition transition : this.transitions) {
     transition.setEnabled(false);
   }
 }
Exemplo n.º 20
0
 private Transition find(Iterable<Transition> transitions, String what) {
   for (Transition t : transitions) {
     if (what.equalsIgnoreCase(t.getName())) {
       return t;
     }
   }
   return null;
 }
Exemplo n.º 21
0
 @Override
 public void removeReferences() {
   // Remove place and transition's references to each other
   startPlace.removeOutTransition(endTransition);
   endTransition.removeInPlace(startPlace);
   // Remove references to this edge in the vertices
   startPlace.removeOutEdge(this);
   endTransition.removeInEdge(this);
 }
Exemplo n.º 22
0
 public Builder transition(Transition transition) {
   Preconditions.checkArgument(
       states.contains(transition.from()),
       "Originating state does not exist: " + transition.from());
   Preconditions.checkArgument(
       states.contains(transition.to()), "Destination state does not exist: " + transition.to());
   outTransitions.put(transition.from(), transition);
   return this;
 }
Exemplo n.º 23
0
 public void enableTransitions() {
   for (Transition transition : transitions) {
     Boolean enabled = true;
     for (Place inPlace : transition.getIncomingPlaces()) {
       if (inPlace.hasTokens() == false) enabled = false;
     }
     transition.setEnabled(enabled);
   }
 }
Exemplo n.º 24
0
  public static JSONArray getTransitions(List<Transition> outgoings) throws JSONException {
    JSONArray outgoing = new JSONArray();

    for (Transition t : outgoings) {
      JSONObject tt = new JSONObject();
      tt.put("resourceId", t.getUuid());
      outgoing.put(tt);
    }
    return outgoing;
  }
Exemplo n.º 25
0
  /**
   * @see Transition#update(org.newdawn.slick.state.StateBasedGame, org.newdawn.slick.GameContainer,
   *     int)
   */
  public void update(StateBasedGame game, GameContainer container, int delta)
      throws SlickException {
    for (int i = 0; i < transitions.size(); i++) {
      Transition t = (Transition) transitions.get(i);

      if (!t.isComplete()) {
        t.update(game, container, delta);
      }
    }
  }
Exemplo n.º 26
0
 @Override
 public String toString() {
   String ret = "InEdge";
   if (startPlace.getName() != null
       && !startPlace.getName().equals("")
       && endTransition.getName() != null
       && !endTransition.getName().equals("")) {
     ret += ":" + startPlace.getName() + "\u21e8" + endTransition.getName();
   }
   return ret;
 }
Exemplo n.º 27
0
  /**
   * This implements a deep copy of the class for replicating FSM information.
   *
   * @throws CloneNotSupportedException if clone method is not supported
   * @return Object
   */
  @Override
  public Object clone() throws CloneNotSupportedException {
    Transition retval = (Transition) super.clone();
    if (retval != null) {
      if (this.from != null) retval.from = new String(this.from);
      if (this.to != null) retval.to = new String(this.to);
      if (this.event != null) retval.event = new String(this.event);
    }

    return retval;
  }
Exemplo n.º 28
0
 /** Same thing, but with compound unary transitions */
 public void testCompoundUnaryTransitions() {
   for (String treeText : treeStrings) {
     Tree tree = convertTree(treeText);
     List<Transition> transitions = CreateTransitionSequence.createTransitionSequence(tree, true);
     State state = ShiftReduceParser.initialStateFromGoldTagTree(tree);
     for (Transition transition : transitions) {
       state = transition.apply(state);
     }
     assertEquals(tree, state.stack.peek());
   }
 }
Exemplo n.º 29
0
 public static BufferedImage createBlurbGraphic(Dimension preferredSize) {
   BufferedImage frameA = AbstractTransition.createImage(400, "A", true, true);
   BufferedImage frameB = AbstractTransition.createImage(400, "B", false, true);
   BufferedImage finalImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
   Transition transition = new CubeTransition3D(Transition.LEFT, true, Color.WHITE);
   float fraction = .55f;
   Graphics2D g = finalImage.createGraphics();
   g.setRenderingHints(Transition2DDemo.createQualityHints());
   transition.paint(g, frameA, frameB, fraction);
   g.dispose();
   return finalImage;
 }
Exemplo n.º 30
0
 public void addTransition(Transition transition) {
   if (!transitions.isEmpty()
       && !transition.getS().equals(transitions.get(transitions.size() - 1).getsPrime())) {
     throw new RuntimeException(
         "Cannot add transition. Initial state is not the same as final state of previous transition");
   }
   if (allStates.isEmpty()) {
     allStates.add(transition.getS());
   }
   transitions.add(transition);
   allStates.add(transition.getsPrime());
 }