Kort Sammanfattning av Schack MAS Krister Ljung kljung@kth.se 6th April 2003 1 Bamse 1.1 Agenter 1.1.1 Bamse Bestämmer vilket drag som skall skickas till spelplanen. Har även nio öppningar att spela dom fyra första dragen. Vilken öppning som väljs beror på hur öppningar tidigare har fungerat. Hur dessa fungerat reds ut med en utvärdering av spelplanen efter 8 drag. Resten av tiden tar Bamse drag förslag från Lilleskutt och Skalman, om dessa inte nnes slumpar Bamse fram ett drag. 1.1.2 Lilleskutt Restriktiv agent med humör. Flyttar endast bönder, om yttbara bönder inte nns yttas den pjäs som värderas lägst. Slår alltid med bonde om möjligt annars väljs slumpmässigt bondedrag. Gör inga drag om rädd eller ledsen. Humör kontrolleras av Bamse och klockan 1.1.3 Skalman Söker efter bästa drag med Alphabeta-alrgoritm, vilken alltid körs med djup 3 och kan ej inse att t.ex. slå en pjäs med ett drag skulle vara bättre än att slå en pjäs med tre drag. Arbetet påverkas av mat och sov klockan, kan vara tvungen att sova vid inopportuna tillfällen. 1.1.4 Mat och sov klockan Synkroniserar tiden. 1.2 Utvärdering av spelplanen/drag Varje pjässort har ett numeriskt värde, det sammanlagda värdet för vit och svart subtraheras och ett värde returneras, noll om ställningen är lika och positivt om vår färg har bättre poäng annars negativt. 1
2 Big Red MASchine Belief-Desire-Intention-arkitektur Kom fram till att de agenter som utnyttjar någon form av traditionella djupsökningar var de som generellt sätt lämnade de bästa dragen. 2.1 Agent Tikonov Koordineringsagent, får resterande agenter att upplämna drag, väljer drag att skicka till spelplanen, håller reda på tid. Delar in partiet i faser, baserat på tid, eller antal kvarvarande pjäser, detta påverkar vilken agents drag han väljer. Vid jämnt spel eller när det är väldigt lite tid görs dödsföraktande drag där man tar motståndarens högsta pjäs utan tanke på förluster. 2.2 Agent Krutov Letar efter den högsta pjäsen som kan slås. 2.3 Agent Fetisov Letar gaar. 2.4 Agent Makarov Bestämmer drag med minimax med alpha-beta pruning. Använder 2 utvärderingsalgoritmer, materiall värdering (baserad på vilka pjäser som nns kvar) och positionsbestäm värdering (baserad på de positioner på brädet som spelaren kontrollera med sina pjäser). 2.5 Agent Kasatanov Utvärderar brädet med hänsyn till 1) vilka rutor som kontrolleras efter ett drag och 2) vilka pjäser som kan bli slagna. Söker och utvärderar ner till djup 2 (bredden först sökning). 3 Chemical X ChessAgent 3.1 ChessPlayer Sköter schackspelandet. Generar alla möjliga drag från det nuvarande läget och skickar dessa till utvärderingsagenterna. Dessa utvärderar dragen och skickar tillbaka resultaten, varpå ChessPlayer agenten väljer ett drag. Layered arkitektur, 3 layers, 1) hantering av miljön (schackbrädet), 2) planering av när drag skall utförs, 3) kommunikation med utvärderingsagenterna 3.2 Utvärderingsagenter: PieceCounterEvaluator och VulnerabilityEvaluator Utvärderar de schackbrädespositioner som är resultat av tänkbara drag. Reaktiv design, väntar på ett utvärderingsmeddelanden från Chessplayer, utvärder och 2
skickar tillbaka ett resultat. PieceCounterEvaluator räknar antalet pjäser och typ. VulnerabilityEvaluator utvärderar hur många av den egna färgens pjäser som i nästa drag skulle kunna plockas. 4 ChessMASter Feodal-lik beslutsfattning. Förslag på drag skickas till Kungen som sedan tar ett beslut. Horizontally layered agents Men varje pjäs är som en BDI-agent. Feodalsamhälle som spel metafor, vissa pjäser (kung, drottning, springare, etc) har undersåtar och alla har personliga attribut, intentioner, relationer. Vid spel gör alla pjäser en bedömning av möjliga drag och skickar sitt bästa drag till Kungen som utvärderar villket drag som är bäst och fattar beslut. 5 Green 2 lager - ett beslutsfattande lager och ett draggenererande lager 5.1 WebschackdatorAgent Söker efter bra drag på en schackdator via Internet. 5.2 ÖppningsdragsAgent Olika uppsättningar av öppningsdrag 5.3 SlumpdragsAgent Genererar alla möjliga drag i det aktuella läget och väljer slumpmässigt ett av dessa. 5.4 ChefsAgent Väljer ett av dom föreslagna dragen. Dragen som kommer ifrån de olika agenterna har olika hög prioritet beroende på den genererande agenten och tiden av matchen som gått. 6 JDKAS 6.1 GeneralAgent Centraliserad multiagentplanering. Generalagenten tar in drag från strategiagenterna (se nedan), dessa är viktade utav strategiagenterna själva och generalagenten väljer det drag som är viktat högst. 6.2 Aggro Letar drag som kan ta så mycket av motståndarens pjäser som möjligt. Drag vägs med motståndarpjäsens värde och den potentiella förlusten. Föreslår era drag under samma tur. 3
6.3 Deo Använder minimax för att hitta drag som leder till minst förlust. 6.4 Schackis Letar efter drag som kan ställa motståndarkungen i schack utan att själv bli hotad. Skickar först odkända draget till Generalagenten. 6.5 Stratego Hittar drag som kan hota motståndarens pjäser (utom kungen) utan att själv bli hotad. 6.6 Startis Agent för att föreslå bra öppningar. Försöker först göra skolmatt om vit, eller förhindra detta om svart. Därefter yttar den ut bönder i ett aggressivt mönster. Fortätter föreslå drag hela spelet men dessa vägs lågt efter starten. 7 JKSD 7.1 Oensiv Agent Läser in schackbrädet, tar fram samtiliga tillåtna drag. Plockar fram det drag som den tycker är bäst, dvs det som slår högst rangordnade motståndrapjäs. Skickar vidare detta drag till den defensiva agenten. 7.2 Defensiv Agent Tar ett drag från den oensiva agenten och kollar om den pjäs som föreslås att yttas på löper risk för att bli slagen i motståndarens nästkommande drag. Om motståndarpjäsen är av högre rang än en pjäs som riskeras att bli slagen (eller ingen pjäs kan bli slagen) så godkänns draget och utförs. Om draget ej godkänns får slumpagenten ta över. 7.3 Slumpagent Läser in schackbrädet och slumpar fram ett av de tillåtna dragen och utför detta. 8 KTHMASters Försöker att ha ett så öppet system som möjligt med avancerade kommunikationsmöjligheter där agenter kan göra drag, bedöma drag, rösta ut varandra, med mera. Systemet har fyra (i princip) oberoende typer av agenter som kan kombineras i olika laguppställningar 4
8.1 Agent1 Utvärderar de möjliga dragen endast utifrån nuvarande positioner. 8.2 OpeningAgent Plockar drag ur en databas, om den hittar ett lämpligt drag ur sin databas så gör den detta så fort som möjligt. 8.3 SimpleAgent Hämtar drag från ett schackprogram på nätet vilket använder sig av alphabetasökning och attacksökning. Gör sitt drag i slutet av spelomgången. Försöker rösta ut andra agenter som gör sina drag tidigt. 8.4 AlphaBetaAgnet Använder en enkel och inte djup alpha-betasökning. Har en tillitslista över andra agenter som påverkar hur den röstar ut och in på andra agenter. Tillitslistan påverkas av hur agenternas föreslagna drag jämförs med AlphaBetaAgentens föredragna drag. 9 MALD 6 agenter röstar om vilket drag som skall utföras. En ControllerAgent initierar röstning och kontrollerar resultatet och kommunicerar vidare resultatet till den utförande Communicator. De fem röstande agenterna har implementerats med en alphabeta algoritm och har en utvärderingsfunktion med vikter som går att ställa in dynamiskt under körning. 9.1 ControllerAgent Initierar röstning och kontrollerar resultatet. 9.2 Standard Agent alphabeta sökning, värderar alla fördelar lika. 9.3 materiel Agent Värderar schackbrädets materiel (pjäserna på brädet?) 9.4 Bonde Agent Värderar högt hur bönderna används på spelplanen 9.5 Startup Agent Försöker snabbt få fram löpare och springare till centrala positioner 5
9.6 Oensiva agenter Två st, rycker fram mot motståndarens kung med torn, springare, och damen 10 Reykavik 72 10.1 Supervisor Samlar in drag från övriga agenter och väljer det med högst värde. Ansvarar för öppningsdragen. Skickar bästa draget till servern innan tiden gått ut. Skickar meddelande om när agenterna skall börja arbeta. 10.2 MovePicker Föreslår drag som slår motståndarens pjäser 10.3 KingChecker Kontroller Supervisorns drag så att inte kungen hamnar i schack 10.4 NoSlump Förslår drag så att pjäsen som skall yttas inte ställs på en hotad position 10.5 Protecter Föreslår drag som skyddar andra pjäser 11 SchackMatt 11.1 Samordningsagent Till samordningsagenten skickas förslag med en bedömning om hur bra de är ifrån utvärderingsagenten. Sloclar det bästa dragförslaget när tiden börjar gå ut. Drag viktas dessutom beroende på vem de kommer ifrån. 11.2 Utvärderingsagent Bedömer dragförslag från de andra agenterna. Bedömningen består av ett heltal som representerar "godhetsvärdet". Detta skickas vidare till samordningsagenten. Utvärdering består främst av att räkna pjäsbalansen mellan svart och vitt men också andra parametrar som hur mycket rörelsefrihet torn och löpare har och hur bönder står uppställda. 11.3 Dragförslagagenter Föreslår giltiga drag, som utvärderas av utvärderingsagenten som skickar vidare dessa till samordningsagenten. 1. Slumpis generar alla möjliga drag och väljer ett på måfå. 6
2. Aggro generar alla möjliga drag och föreslår drag som kan slå en motståndarpjäs 3. Deo letar efter den högsta pjäsen som är hotad och föreslår en föryttning 4. MTD alpha-betasökning med MTD(f) algoritmen 5. Delorie hämtar dragförslag från ett webbaserat schackspel. 6. Opener innehåller hårdkodade öppningsekvenser 7