Professional Documents
Culture Documents
Licitaii
1. 2. 2.1. 2.2. 2.3. 2.4. 3. 4. Aspecte generale .......................................................................................................................... 1 Descrierea licitaiilor .................................................................................................................... 1 Tipuri de evaluare a bunului licitat ...................................................................................... 1 Strategii in licitaii ................................................................................................................ 1 Tipuri de licitaie .................................................................................................................. 2 Coaliii.................................................................................................................................. 3 Exemplificare printr-o aplicaie....................................................................................................3 Aplicaii .......................................................................................................................................6
1. Aspecte generale
Licitaiile au loc ntre un agent numit licitator i mai muli ageni numii cumprtori. Scopul unei licitaii este ca licitatorul s aloce un bun unuia dintre cumprtori. De obicei interesul licitatorului este s maximizeze preul, n timp ce al licitatorului este s-l minimizeze. n practic, exist mai multe tipuri de licitaii. Printre cele mai frecvent ntalnite se numr: licitaia englezeasc, licitaia olandez i tipul de licitare nchis.
2. Descrierea licitaiilor
2.1. Tipuri de evaluare a bunului licitat
- valori private: valoarea bunului depinde doar de preferinele personale ale cumprtorului; acesta se presupune c tie valoarea bunului; - valori comune: valoarea unui produs pentru un cumprtor depinde de valoarea acelui produs pentru ali cumprtori; - valori corelate: valoarea unui produs pentru un cumprtor depinde parial de preferinele sale personale i parial de valoarea acelui produs pentru alii.
Vickrey (second-price sealed-bid) auction Cumprtorii fac oferte n mod secret. Ctig autorul celei mai mari oferte, care va primi bunul corespunztor la preul dat de a doua ofert. La aceast licitaie, cel mai mare ofertant obine ntotdeauna profit dac oferta acestuia este raional. - o singur rund de negociere; - ofertele sunt secrete fa de ceilali cumprtori - ctig cel care a fcut cea mai mare ofert, dar pltete al doilea pre. Observaii: - Strategia dominant: se liciteaz valoarea real a bunului. - Avantajul acestui tip de licitaie este faptul c ncurajeaz cumprtorii s fie sinceri - Ctigtorul licitaiei nu poate ti ct a licitat cel care a pierdut (locul al doilea), deci nu tie dac preul pltit (al doilea pre) este corect. O soluie ar fi folosirea de semnturi digitale sau a unei tere pri de ncredere. - Se poate dezvolta un comportament antisocial: dac un cumprtor tie c va pierde, poate crete intenionat preul pentru a-i face pe alii s plteasc mai mult.
public override void action() { //inform managerAgent that I want to register for the auction ACLMessage m = new ACLMessage(ACLMessage.INFORM); AID receiverAID = new AID("managerAgent", AID.ISLOCALNAME); m.addReceiver(receiverAID); m.setContent("registering"); myAgent.send(m); myAgent.windowsForm.AddTextLine("Registering for auction ..."); }
managerAgent-ul adaug ntr-o structur de date proprie AID-urile agenilor cumprtori care solicit nregistrarea, i le confirm faptul c au fost nregistrai cu succes (n comportamentul ManagerReceive):
if(received.Contains("registering")) { //sender wants to register for auction myAgent.participantList.Add(sender); //reply to sender that registration was successful ACLMessage reply = new ACLMessage(ACLMessage.INFORM); reply.setContent("registered"); reply.addReceiver(sender); myAgent.send(reply); myAgent.windowsForm.AddTextLine("New participant: " + sender.getLocalName()); }
Licitaia se desfoar pe runde. Acestea sunt iniiate i ncheiate periodic de ctre managerAgent n comportamentul ManagerSend de tip TickerBehavior. O rund const n primirea i evaluarea ofertelor de pre de la agenii cumprtori. La nceput, managerAgent-ul trimite cumprtorilor un pre iniial al produsului, pentru ca apoi, n fiecare rund, s le trimit cel mai mare pre primit pn n acel moment:
public override void onTick() { int nParticipants = myAgent.participantList.Count; if (nParticipants > 1) // still more than 1 agent making offers { /* New auction round: * send calls to the participants inform them on current auction price ask them to send new offers */ ACLMessage toSend = new ACLMessage(ACLMessage.INFORM); toSend.setContent("current_price" + myAgent.currentPrice); foreach (AID a in myAgent.participantList) toSend.addReceiver(a); myAgent.send(toSend);
myAgent.windowsForm.AddTextLine(Environment.NewLine + "New Round: current price is " + myAgent.currentPrice); } else if (nParticipants == 1) //only one agent left, the winner { AID winner = myAgent.currentWinner; myAgent.windowsForm.AddTextLine(Environment.NewLine + "Auction over. Winner is " + winner.getLocalName() + " with price: " + myAgent.currentPrice); this.stop(); } else // no participants left { myAgent.windowsForm.AddTextLine(Environment.NewLine + "Auction over. All participants retreated."); this.stop(); } }
La primirea informaiilor legate de preul maxim din licitaie (n cadrul comportamentului BuyerReceive), agenii cumprtori decid, cu o anumit probabilitate, dac fac o ofert de pre mai mare, sau dac se retrag din licitaie. Ei trimit managerAgent-ului rspunul corespunztor:
if(received.Contains("current_price")) { // received new call from managerAgent //the highest current price is: int currentPrice = Convert.ToInt32(received.Remove(0, 13)); myAgent.windowsForm.AddTextLine("Received current price: " + currentPrice); // probability to make offer decreases with each price increase myAgent.probabilityToBid *= myAgent.probabilityDecreaseFactor; ACLMessage toSend = new ACLMessage(ACLMessage.INFORM); toSend.addReceiver(m.getSender()); //use agent name to generate unique seed for random numbers int seed = 1234 * Convert.ToInt32(myAgent.getLocalName().Remove(0, 5)); //decide if to send new offer or retreat if (myAgent.probabilityToBid > new Random(seed).NextDouble()) { //make an offer which is higher than the current price seed = 4321 * Convert.ToInt32(myAgent.getLocalName().Remove(0, 5)); int newPrice = currentPrice + new Random(seed).Next(1, myAgent.maxOfferIncrease); toSend.setContent("offer" + newPrice); myAgent.windowsForm.AddTextLine("Sent new offer: " + newPrice); } else { //price is too high, retreat from auction toSend.setContent("retreat"); myAgent.windowsForm.AddTextLine("Retreated from auction."); } myAgent.send(toSend); }
Licitaia se ncheie cnd fie rmne un singur cumprtor (care va fi si ctigtorul), fie se retrag toi cumprtorii (comportamentul ManagerSend).
4. Aplicaie
4.1. S se implementeze protocolul de licitaie Vickrey prezentat mai sus. Caracteristici: Licitatorul va avea o list de produse; Cumprtorii vor avea un pre (valoare privat) care va varia +/- 10% de la un agent la altul pentru fiecare produs; Cumprtorii se vor nregistra ca participani la licitaie; Licitatorul va comunica startul, informnd asupra obiectului scos la licitaie: produs, caracteristici, perioada de ateptare a ofertelor; Cumprtorii vor trimite cte o ofert de pre; Dup ce perioada de ateptare a ofertelor a expirat, licitatorul va analiza ofertele primite i va trimite: o mesaje celor care vor pierde licitaia, ce vor conine informaii despre preul dat de ctigtorul licitaiei i preul care l va plti acesta pentru produs; o un mesaj ctigtorului licitaiei, ce va conine informaii despre preul oferit de acesta i preul ce va trebui pltit (al doilea pre).