280 likes | 394 Views
Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim <stockheim@wiwi.uni-frankfurt.de> Jochen Franke <jfranke@wiwi.uni-frankfurt.de> Michael Schwind <schwind@wiwi.uni-frankfurt.de> Donnerstag 16.00 – 18.00 Uhr – Raum 220 C. TAC.
E N D
Programmierung von Agenten in JAVA: Implementierung einer Supply-Chain WS 2003/04 Veranstalter: Tim Stockheim <stockheim@wiwi.uni-frankfurt.de> Jochen Franke <jfranke@wiwi.uni-frankfurt.de> Michael Schwind <schwind@wiwi.uni-frankfurt.de> Donnerstag 16.00 – 18.00 Uhr – Raum 220 C TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
TAC SCM Szenraio TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
Agenten • Agenten befinden sich im Spannungsfeld zwischen Kunden und Zulieferern • Aufgaben der Agenten • Zuliefererkontrakte aushandeln • Für Kundenorders bieten • Tägliche Produktionsplanung TAC – Trading Agent Competition
Ablauf TAC TAC – Trading Agent Competition
Ablauf TAC • Produktion von PCs, Varianten • CPUs, Mainboards, Speicher, Festplatten • Zwei Supplier für jeden Komponententyp TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
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) TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
Beispiel TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
Zulieferer Produktionskapazität Formel zur Bestimmung der Kapazität eines Zulieferers an einem Tag d Random Walk Komponente Abweichung des Vortages zur nominalen Kapazität wird stets um 1% reduziert, sowohl Über- als auch Unterschreitungen werden somit abgedämpft Kapazität des Vortages Kapazität wird nicht negativ, untere Grenze ist null TAC – Trading Agent Competition
Zulieferer Preisfunktion Diskontierungsfaktor Basispreis der Komponente mit Freie Kapazität zum Zeitpunkt j TAC – Trading Agent Competition
Konsumenten • Konsumenten erstellen jeden simulierten Tag RFQs • RFQs spezifizieren • Bestelltyp • Bestellmenge • Fälligkeitsdatum • Reservationspreis (maximaler Preis, den der Konsument bereit ist zu zahlen) TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
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) TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
Parametrisierung TAC – Trading Agent Competition
Installation der Testumgebung TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
Server konfigurieren und starten (2) • Browser aufrufen: http://127.0.0.1:8080 • Neuen Agenten anmelden (Register new user) TAC – Trading Agent Competition
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 TAC – Trading Agent Competition
Spielablauf • Agent startet automatisch Statusbericht TAC – Trading Agent Competition
Spielablauf • GameViewer auf der Serverkonfigurationsseite starten TAC – Trading Agent Competition