Research Article

Optimizing Negotiation Conflict in the Cloud Service Negotiation Framework Using Probabilistic Decision Making Model

Sourcecode 4

CloudSellerAgent.java.
package cloudTrading.seller;
import jade.core.Agent;
import jade.core.behaviours.;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import jade.domain.;
import jade.domain.FIPAAgentManagement.;
import java.util.;
public class CloudSellerAgent extends Agent
protected void setup()
System.out.println("Seller-agent "+getAID().getName()+" is ready.");
myGui = new CloudSellerGuiImpl();
myGui.setAgent(this);
myGui.show();
addBehaviour(new CallForOfferServer());
DFAgentDescription dfd = new DFAgentDescription();
dfd.setName(getAID());
ServiceDescription sd = new ServiceDescription();
sd.setType("Cloud-selling");
sd.setName(getLocalName()+"-cloud-selling");
dfd.addServices(sd);
DFService.register(this, dfd);
protected void takeDown()
if (myGui != null)
myGui.dispose();
System.out.println("Seller-agent "+getAID().getName()+"terminating.");
DFService.deregister(this);
public void putForSale(String title, float initPrice, float minPrice, Date deadline)
addBehaviour(new PriceManager(this, title, initPrice, minPrice, deadline));
public class PriceManager extends TickerBehaviour
private PriceManager(Agent a, String t, float ip, float mp, Date d)
super(a, 60000); // tick every minute
title = t;
initPrice = ip;
currentPrice = initPrice;
deltaP = initPrice - mp;
deadline = d.getTime();
initTime = System.currentTimeMillis();
deltaT = ((deadline - initTime) > 0 ? (deadline - initTime): 60000);
bestPrice = initPrice;
public void onStart()
catalogue.put(title, this);
super.onStart();
public void onTick()
long currentTime = System.currentTimeMillis();
if (currentTime > deadline)
myGui.notifyUser("Cannot sell cloud"+title);
catalogue.remove(title);
stop();
public float getCurrentPrice()
return currentPrice;
private class CallForOfferServer extends CyclicBehaviour
private MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP);
public void action()
ACLMessage msg = myAgent.receive(mt);
if (msg != null)
cPrice = Float.valueOf(msg.getContent());
myGui.notifyUser("Received Proposal to buy service at price"+cPrice);
ACLMessage reply = msg.createReply();
pPrice = pcurrentPrice;
if (cPrice != 0.0)
if (msg.getPerformative() == ACLMessage.ACCEPT_PROPOSAL)
ACLMessage commit = new ACLMessage(ACLMessage.ACCEPT_PROPOSAL); 
myAgent.send(commit);
myGui.notifyUser("SLA Commit at Price =" + bestPrice);
myGui.notifyUser("Cloud service successfully provisioned");
elseif (cPrice < pPrice)
reply.setPerformative(ACLMessage.PROPOSE);
reply.setContent(String.valueOf(pPrice));
else
reply.setPerformative(ACLMessage.ACCEPT_PROPOSAL);
reply.setContent(String.valueOf(cPrice));
myGui.notifyUser("Accept Proposal at price"+ cPrice);
else
reply.setPerformative(ACLMessage.REFUSE);
myGui.notifyUser("Reject Proposal at price"+ cPrice);
myAgent.send(reply);
myGui.notifyUser(cPrice != 0.0 ? "Sent Proposal to sell at price "+reply.getContent():  
"Refused Proposal as the cloud is not for sale");