TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer...

28
TAC – Trading Agent Competition 1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim <[email protected] frankfurt.de> Jochen Franke <[email protected] frankfurt.de> Michael Schwind <[email protected] frankfurt.de> Donnerstag 16.00 – 18.00 Uhr – Raum 220 C

Transcript of TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer...

Page 1: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 1

Programmierung von Agenten in JAVA:Implementierung einer Supply-Chain

WS 2003/04

Veranstalter: Tim Stockheim <[email protected]>Jochen Franke <[email protected]>Michael Schwind <[email protected]>

Donnerstag 16.00 – 18.00 Uhr – Raum 220 C

Page 2: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 2

TAC

• Trading Agent Competition• www.sics.se/tac• Supply Chain Szenario, in dem mehrere Agenten

mit benutzerdefinierten Strategien in einem gemeinsamen Framework gegeneinander antreten

• Kooperationsprojekt der Carnegie Mellon University und Swedish Institute of Computer Science

• TAC Classic => Ursprüngliches Szenario mit Traveling Agent

• TAC SCM => Supply Chain Szenario

Page 3: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 3

TAC SCM Szenraio

Page 4: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 4

Akteure

• Agenten => Benutzerdefinierte Strategien, Konkurrenzkampf zwischen Agenten

• Customer => Kunden, die eine externe Nachfrage stellen und feste Lieferzeitpunkte einfordern

• Supplier => Hersteller, die auf Bestellung Rohstoffe produzieren

• Manufacturer => Produktionseinheit, die Rohstoffe in verkaufbare Fertiggüter transformiert

Page 5: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 5

Agenten

• Agenten befinden sich im Spannungsfeld zwischen Kunden und Zulieferern

• Aufgaben der Agenten– Zuliefererkontrakte aushandeln– Für Kundenorders bieten– Tägliche Produktionsplanung

Page 6: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 6

Ablauf TAC

Page 7: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 7

Ablauf TAC

• Produktion von PCs, Varianten• CPUs, Mainboards, Speicher, Festplatten• Zwei Supplier für jeden Komponententyp

Page 8: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 8

Einkauf von Rohmaterialien

• Agent gibt RFQs an Zulieferer aus

• Maximal 10 RFQs pro simuliertem Tag

• RFQ spezifiziert Menge und Lieferdatum

• Zulieferer sammelt alle RFQs und bearbeitet sie sequentiell

• RFQs eines Agenten werden als RFQ-Bundle ausgewertet

Page 9: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 9

Auswahl RFQ-Bundle

• Zufällige Auswahl eines RFQ-Bundles

• QuantityRequested=Summe aller nachgefragten Mengen

• QuantityPurchased=Summe der tatsächlich gekauften Menge

• Weight=min(0.5, order ratio)

weight

weighthkeitrscheinlicAuswahlwah A

A

questedQuantityRe

rchasedQuantityPuRatioOrder

Page 10: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 10

Offer-Bundles

• Zulieferer bearbeiten alle RFQs und liefern gegebenenfalls Offers zurück

• Falls RFQ komplett erfüllt werden kann, wird entsprechende Offer zurückgegeben

• Falls RFQ nicht erfüllt werden kann, werden zwei Offers zurückgegeben– Offer1 mit passender Menge und späterer

Fälligkeit– Offer2 mit kleinerer Menge und passender

Fäligkeit• Agent kann eines der alternativen Angebote

annehmen

Page 11: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 11

Beispiel

Page 12: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 12

Zulieferer - Verhalten

• Zulieferer haben zwei Aufgaben– Produktion und Versand von Komponenten

an die Agenten– Verfügbare Produktionskapazität planen,

um den Agenten Offers bieten zu können

Page 13: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 13

Zulieferer - Annahmen

• Zulieferer operieren auf Basis einer make-to-order Strategie

• Sollten mehrere Tage notwendig sein, um eine Order zu befriedigen, werden die jeweils überschüssiges Komponenten in einem Lager abgelegt, Lagerkosten sind null

• Orders werden stets am Fälligkeitsdatum ausgeliefert, überschüssige Produktionskapazität wird stets aufgebraucht

Page 14: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 14

Zulieferer – Annahmen 2

• Produktionskapazität wird durch random walk bestimmt

• In der Planung des Zulieferers wird angenommen, dass die zukünftige Kapazität der nominalen Kapazität entspricht

• Falls eine Order wegen unzureichender Kapazität nicht erfüllt werden kann, bekommt diese eine höhere Priorität vor Orders mit späterem Liefertermin zugewiesen

Page 15: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 15

Zulieferer Produktionskapazität

) ) 1)-(dC-C(01.0C*0.05)05,random(-0.1)-(dC max(0,)d(C pnominalnominalpp

Formel zur Bestimmung der Kapazität eines Zulieferers an einem Tag d

Kapazität wird nicht negativ,

untere Grenze ist null

Kapazität des Vortages

Random Walk Komponente

Abweichung des Vortages zur nominalen Kapazität wird stets um 1% reduziert, sowohl

Über- als auch Unterschreitungen

werden somit abgedämpft

Page 16: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 16

Zulieferer Preisfunktion

i*C

i)(dC*0.5-1)(componentPi)P(d

nominal

availablebase

Basispreis der Komponente

Diskontierungsfaktor

mit )(j)C-(Ci)(dC1idj

djorderednominalavailable

Freie Kapazität zum Zeitpunkt j

Page 17: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 17

Konsumenten

• Konsumenten erstellen jeden simulierten Tag RFQs

• RFQs spezifizieren– Bestelltyp– Bestellmenge– Fälligkeitsdatum– Reservationspreis (maximaler Preis, den

der Konsument bereit ist zu zahlen)

Page 18: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 18

Konsumenten 2

• Anzahl von RFQ haben obere und untere Grenze• Anzahl von RFQs zwischen den Grenzen variieren

und folgen einem Random Walk• RFQ spezifiziert auch ein Penalty in Form eines

Prozentsatzes des Reservationspreises, das bei Fälligkeitsüberschreitung eingefordert wird

• Bei Fälligkeitsüberschreitung werden Strafzahlungen bis zu fünf simulierten Tagen fällig, dann wird die Bestellung gelöscht

• Konsument nimmt Offer des Agenten mit dem niedrigsten Preis an, das die geforderte Quantität zum geforderten Stichtag mit einem Preis kleiner als der Reservationspreis anbietet

Page 19: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 19

Bank

• Die verfügbaren Mittel eines Agenten werden von einer Bank verwaltet

• Negative Kontostände sind erlaubt

• Finanzmittel des Agenten werden mit einem fixierten Zinssatz verzinst (sowohl Guthaben als auch Defizit)

Page 20: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 20

Informationen

• Agenten erhalten Informationen aus verschiedenen Quellen

• RFQs der Konsumenten• Offers der Zulieferer• Preisintervalle der bestellten PCs eines Tages• Periodische Markt-Reports (alle 20 TAC-Tage)

– Aggregierte Angaben der von den Zulieferern produzierten Mengen

– Aggregierte Angaben der von den Zulieferern abgesetzten Mengen

– Durchschnittlicher Preis und Anzahl der verkauften PCs eines jeden Typs

Page 21: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 21

Parametrisierung

Page 22: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 22

Installation der Testumgebung

Page 23: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 23

Installation der Testumgebung

• Beispielagent TAC• Server-Modul TAC• Server-Modul fungiert als Host für die

Agenten und eignet sich zum Test des eigenen Agenten

• Download beider Pakete von http://www.sics.se/tac

• Server und Agenten-Modul in jeweils eigene Verzeichnisse entpacken

Page 24: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 24

Server konfigurieren und starten

• Konfigurationsdatei im Ordner /config/server.conf

• server.name festlegen auf localhost (oder den DNS-Namen des Computers)

• admin.password bei Bedarf auf ein eigenes Passwort setzen

• Server auf der Kommandozeile starten mit java –jar scmserver.jar

Page 25: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 25

Server konfigurieren und starten (2)

• Browser aufrufen: http://127.0.0.1:8080• Neuen Agenten anmelden (Register new user)

Page 26: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 26

Agent konfigurieren und starten

• Agent zunächst kompilieren durch Aufruf von compile.bat auf der Kommandozeile

• Agent konfigurieren in der Datei aw.conf– agentName => Name des Agenten– agentPassword => Passwort des Agenten– Werte identisch zur Serverkonfiguration wählen– serverHost => localhost

• Agent von der Kommandozeile starten mit java –jar scmaw.jar

Page 27: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 27

Spielablauf

• Agent startet automatisch Statusbericht

Page 28: TAC – Trading Agent Competition1 Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim Jochen Franke.

TAC – Trading Agent Competition 28

Spielablauf

• GameViewer auf der Serverkonfigurationsseite starten