Exemplo n.º 1
0
    public void action() {

      try {
        ContentElement content = getContentManager().extractContent(request);
        CreatePreferences cp = (CreatePreferences) ((Action) content).getAction();
        for (int i = 0; i < artifacts.size(); i++) {
          Artifact a = (Artifact) artifacts.get(i);
          if ((a.getGenre().equals(cp.getGenre())) || (a.getCreator().equals(cp.getCreator()))) {
            l.add(a);
          }
        }
        // System.out.println("Tour-Guide: " + l);
        Result result = new Result((Action) content, l);
        ACLMessage reply = request.createReply();
        reply.setPerformative(ACLMessage.INFORM);
        getContentManager().fillContent(reply, result);
        send(reply);

      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
    private boolean acceptOffer(Artifact item) { // task 2, bidding strategy
      ArrayList<Integer> genresInCommon = new ArrayList<Integer>();
      for (int i = 0; i < interests.size(); i++)
        if (item.getGenre().contains(interests.get(i))) // interested in a genre item has
        genresInCommon.add(priorityInterests.get(i));

      if (genresInCommon.size() > 0) {
        int prioritySum = 0;
        for (int sum : genresInCommon) prioritySum += sum;
        prioritySum /=
            genresInCommon
                .size(); // average priority points taken all interests/genre match into
                         // consideration

        if ((prioritySum * 1000 >= item.getPrice())
            && (item.getPrice()
                <= ((int)
                    (money
                        * 0.7)))) // willing to pay the current price? 1000 for every priority point
                                  // and dont spend more than 70% money
        return true;
        else return false;
      } else return false;
    }
    private ACLMessage handleTourGuideRequest(ACLMessage request) {
      AID tourGuide = request.getSender();
      ArrayList<String> interests;
      try {
        interests = (ArrayList<String>) request.getContentObject();
        // System.out.println(getName() + ": Will handle " + interests.size() + " interests.
        // (Successfully read message)");
      } catch (UnreadableException e) {
        System.out.println(
            myAgent.getAID().getName()
                + ":ERROR Couldn't get interests. Will respond with an empty list...");
        interests = new ArrayList<>();
      }
      String conversationID = request.getConversationId();
      ArrayList<Integer> ids = new ArrayList<>();

      for (Artifact artifact : artifacts)
        for (String interest : interests)
          if (artifact.getGenre().contains(interest) || artifact.getType().equals(interest))
            ids.add(artifact.getId());

      ACLMessage response = new ACLMessage(ACLMessage.INFORM);
      response.addReceiver(tourGuide);
      response.setConversationId(conversationID);
      response.setOntology("get-artifact-ids");
      try {
        response.setContentObject(ids);
      } catch (IOException e) {
        System.err.println(
            myAgent.getAID().getName()
                + ": Couldn't serialize the ID-list... Will cause problems with other agents.");
      }
      return response;
      // System.out.println(myAgent.getAID().getName() + ":Response message sent to TourGuide with "
      // + ids.size() + " IDs.");
    }