@Override protected ACLMessage handleAcceptProposal(ACLMessage cfp, ACLMessage propose, ACLMessage accept) { // TODO Handle the accept Cfp content = null; try { content = (Cfp) accept.getContentObject(); } catch (UnreadableException e) { // TODO Auto-generated catch block e.printStackTrace(); } // System.out.println(myAgent.getLocalName() + ": proposta aceite:" + // propose.getConversationId() + " content = " + content.getOrigin().getLocalName() + " " + // content.getDestination().getLocalName() + " " + content.getAgv().getLocalName()); ACLMessage reply = accept.createReply(); reply.setPerformative(ACLMessage.INFORM); if (myAgent.getClass() == AGV.class) { AGV a = (AGV) myAgent; AgvTransport t = new AgvTransport((AGV) myAgent, content); a.setTransportBehaviour(t); a.addBehaviour(new AgvTransport(a, content)); } return reply; }
private double calculateCost(String originMachine, String destinationMachine, AGV agent) { HashMap<String, Location> map = agent.getMachineLocation(); double cost = (agent.getLocation().distanceTo(map.get(originMachine)) + Location.distanceTo(map.get(originMachine), map.get(destinationMachine))) * agent.getCost(); return cost; }
private Cfp calculateCosts(Cfp cfpContent, AGV agent) { HashMap<AID, Integer> mapCost = new HashMap<AID, Integer>(); // TODO improve cost calculation according products in the agv for (DFAgentDescription dfAgent : agent.getAgentListWithService("ProcessProduct")) { // check if origin is diferent than the destination to calculate the cost if (dfAgent.getName().getName().compareTo(cfpContent.getOrigin().getName()) != 0) { cfpContent = cfpContent.clone(); cfpContent.setType(ObjectType.Agv); cfpContent.setAgv(myAgent.getAID()); mapCost.put( dfAgent.getName(), (int) calculateCost( cfpContent.getOrigin().getName(), dfAgent.getName().getName(), agent)); } } cfpContent.setMachineCostMap(mapCost); return cfpContent; }