Genetisk programmering i Othello
|
|
- Stefan Samuelsson
- för 8 år sedan
- Visningar:
Transkript
1 LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se
2
3 Innehållsförteckning 1. Inledning Bakgrund Regler för Othello Maskininlärning inom Othello-spel Implementation Genetisk programmering Heuristik Träd Fitness Elitselektion & Urval Mutationer Crossover Resultat Diskussion Källor... 7
4 1. Inledning 1.1 Bakgrund Regler för Othello Othello, även kallat Reversi, är ett brädspel för två spelare som spelas på en spelplan med 8x8 rutor. Från början ligger fyra brickor utlagda i mitten av spelplanen, två svarta och två vita. Brickorna är tvåfärgade så att undersidan av brickorna har motsatt färg och spelet går ut på att få vända på motspelarens brickor så att det vid spelets slut finns flest brickor av ens egen färg. Svart börjar spelet med att lägga ut en bricka av sin egen färg. Brickor måste läggas så att det på en rak linje från den nya brickan finns en eller flera brickor av motsatt färg, följt av en bricka av sin egen färg. Man får då vända på motståndarens brickor i linjen. Linjerna kan gå horisontellt, vertikalt eller diagonalt. Spelarna turas om att lägga ut brickor av sin egen färg och om en spelare inte kan lägga går turen över till motståndaren. När ingen kan lägga eller då spelplanen är full är spelet slut Maskininlärning inom Othello-spel I den här rapporten kommer jag att beskriva mitt försök till att få en dator till att lära sig spela Othello med hjälp av genetisk programmering. Som inspiration har jag använt instruktioner och studentrapporter från ett 3 veckors labbprojekt vid Columbia University kallat GPOthello (Eskin & Siegel, 1999). I detta labbprojekt var större delen av koden redan given i uppgiften och studenterna fick experimentera med att modifiera koden i syfte att förbättra programmet. Jag har inte överhuvudtaget studerat koden till detta program, men jag har fått ledtrådar till hur programmet fungerade genom uppgiftsinstruktionerna och studenternas rapporter. Den initiala koden till GPOthello använde sig av 9 parametrar (terminals) för att utvärdera hur bra ett drag var. Dessa var: 1) Black antalet svarta brickor på spelplanen 2) Black_corners antalet svarta brickor i hörnen 3) Black_near_corners antalet svarta brickor nära ett hörn 4) Black_edges antalet svarta brickor vid kanten av spelplanen 5) White antalet vita brickor på spelplanen 6) White_corners antalet vita brickor i hörnen 7) White_near_corners antalet vita brickor nära ett hörn 8) White_edges antalet vita brickor vid kanten av spelplanen 9) 10 en konstant. Fitness-värdet beräknades genom att spela 5 matcher mot en slumpmässig spelare och räkna ihop antalet av motståndarens pjäser vid spelets slut. De bästa spelarna skulle då ha låga värden. Den enda siffra jag har hittat på hur väl det ursprungliga programmet fungerade var att det i den sista generationen hade utvecklats spelare som kunde slå de slumpmässiga spelarna i 47 fall av 50 (Eskin & Siegel, 1999). Det står dock inte hur stor population som använts eller antalet generationer, vilket gör siffran ganska värdelös för jämförelse med andra program. 1
5 2. Implementation 2.1 Genetisk programmering Genetisk programmering är en specialisering av genetiska algoritmer, med skillnaden att lösningen är representerad som ett program. Tekniken är inspirerad av den biologiska evolutionen och använder sig av liknande terminologi. För att finna lösningen till ett problem använder sig genetisk programmering av fyra steg: 1. Skapa en population av slumpmässigt sammansatta datorprogram. 2. Kör alla program och beräkna ett fitnessvärde för hur väl de löser problemet. 3. Skapa en ny population med hjälp av: a) Kopiering av de bästa programmen b) Crossover: Parning av existerande program 4. Det bästa programmet som framkommit i någon generation är resultatet av den genetiska programmeringen. Förutom kopiering och parning kan man även använda sig av mutationer, dvs slumpmässiga förändringar hos existerande individer, i syfte att utöka den genetiska mångfalden i populationen. (Koza, 1992) 2.2 Heuristik De program som skapas med hjälp av den genetiska programmeringen kommer att vara sammansatta av fördefinierade funktioner och parametrar. Dessa sätts slumpmässigt samman när nya individer skapas. De funktioner som jag har valt att använda är de fyra räknesätten (+, -, *, /). Jag har dock gjort en egen funktion för division som fungerar på samma sätt som vanlig division förutom att den returnerar 1 vid division med noll. Parametrarna jag har valt är följande: own_bricks: Antalet egna brickor på spelplanen. Detta mått säger egentligen inte så mycket om hur bra positionen är eftersom man kan vända många brickor i ett drag. opp_bricks: Antalet av motståndarens brickor på spelplanen. ståndarens brickor. empty: Antalet tomma rutor på spelplanen. Kan ge en hint om hur långt in i spelet man har kommit 10 : konstanten 10 Tänkt att kunna användas för att t.ex. öka genomslagskraften hos en variabel opp_allowed_moves: Antalet möjliga drag för motståndaren. Om variabeln är lika med noll, går turen tillbaka. Own_in_pos_X: A Här finns 10 olika typer av positioner representerade. De är valda efter symmetri i spelplanen och är markerade i Figur
6 Figur 2.1 Symmetriska positioner 2.3 Träd De genetiska programmen är representerade som träd med noder. Funktionen består av roten som har två barn. Jag har begränsat antalet barn för varje nod till antingen noll (för en parameter) eller två (för en funktion). Jag har också satt en djupbegränsning på trädet för att undvika att programmet blir alltför stort. Eftersom värdet av trädet beräknas med en rekursiv loop varje gång man gör ett drag, finns det en tids- och minne däremot en nackdel att begränsa trädet, eftersom man kan missa lösningar som ligger utanför begränsningarna. 2.4 F itness Fitness-värdet beräknas genom att låta varje individ spela Othello ett antal gånger mot en annan motståndare (exempelvis en slumpspelare som slumpar fram ett drag ur alla tillåtna handlingar). Hälften av matcherna spelar individen som Vit, den andra hälften som Svart. Från matcherna sparas dels antalet gånger som individen vunnit och dels hur stor differensen var mellan antalet av de egna och motståndarens brickor. Antalet vunna matcher är den viktigaste aspekten, men för att ytterligare kunna skilja individerna åt har jag valt att även ha med differensen i fitness-värdet. Fitnessen beräknas som: F = Vinster*100 + Differens. (konstanten 100 finns bara med för att öka genomslagskraften av antalet vinster). Det finns dock ett problem med min definition av fitness som jag inte insåg från början. Om en match avslutas innan alla rutor är fyllda (t.ex. för att alla brickor av en färg redan har vänts) så kan detta ge en lägre differens än om alla rutor är fyllda. Så trots att det egentligen 3
7 borde ses som positivt att man har kunnat avgöra matchen i förtid är det inte något som belönas i beräkningen av fitness. Snarare tvärtom. Därför hade det varit bättre att istället för differens använda samma mått som GPOthello använde, dvs antalet av motståndarens brickor. Ett annat problem är att om man spelar mot en slumpspelare är det inte säkert att en högre fitness automatiskt innebär att man är en bättre spelare. Man kan bara ha haft tur, ifall ens motståndaren slumpade fram dåliga drag. Detta gör att man måste spela väldigt många matcher för att få ett tillförlitligt fitness-värde. Ett alternativ hade varit att låta individerna i populationen spela mot en annan datorspelare, helst en bättre spelare. Tyvärr har jag inte hunnit med att fixa någon sådan träningsspelare. 2.5 Elitselektion & Urval De n bästa individerna i generationen enligt fitness-värdet tillhör elitselektionen. Dessa kopieras direkt till nästa generation. Övriga platser i den nya populationen fylls genom att individer ur den gamla populationen väljs ut för mutation eller crossover. Först sorteras alla individer i den gamla populationen efter fitness så att de bästa individerna hamnar först i listan över individer i populationen. När sedan en individ ska väljas ut slumpas ett tal inom längden av listan fram som slutindex och individen väljs slumpmässigt bland de individer som ligger före slutindex i listan. På så sätt ökar sannolikheten för att bli vald ju högre fitness man har. Ett ännu bättre sätt att välja ut individer hade varit att välja dem med en sannolikhet som är direkt proportionell emot fitness-värdet, men detta har jag inte hunnit med att implementera. 2.6 Mutationer En individ som väljs ut kommer med en viss sannolikhet att antingen muteras eller paras med en annan individ. Mutation sker genom att värdet på en slumpmässigt utvald nod i trädet byts ut mot ett nytt värde. Det nya värdet väljs slumpmässigt bland de tillgängliga funktionerna eller parametrarna. 2.7 Crossover De individer som inte muteras kommer istället att paras. När två individer paras väljs en slumpmässig nod ur varje träd och dessa noder byter förälder i träden. För att undvika att maxdjupet i trädet överträds finns också en funktion som kontrollerar om det är tillåtet att para två noder. Ifall maxdjupet överträds vid parning kommer programmet istället att välja ett av barnen till den nod som har det största trädet. 4
8 3. Resultat När programmet kördes använde jag en extremt liten population på endast 25 individer. Detta beror på att jag valde att använda en relativt tidskrävande fitness-beräkning. Varje individ spelade 20 matcher per generation (10 som svart och 10 som vit) mot en slumpspelare. Eftersom det i första hand är antalet matcher som avgör hur lång tid den genetiska programmeringen tar, gjorde detta att jag istället var tvungen att minska ner på antalet individer. Jag lät populationen föröka sig och mutera i 50 generationer, med en mutation_rate på 0,05 (5 % mutationer och 95 % crossover) och en elitselektion på 5 individer. Funktionsträdens maxdjup sattes till 5. Jag körde programmet 3 gånger, dvs. med 3 olika slumpmässigt skapade startpopulationer och fick liknande utveckling av fitness vid varje körning. Diagram 3.1 nedan visar medelvärden från dessa 3 körningar. Diagram 3.1 Den blå linjen visar medelvärdet av det högsta fitness som någon individ fått i varje generation. Den gröna linjen visar medelvärdet av det lägsta fitness någon individ fått. Den röda linjen visar medelvärdet för alla individer i generationen. I diagrammet ser vi att utvecklingen går fortast i början och att kurvan sedan planar ut något. I startgenerationerna finns en väldigt stor variation mellan individernas sammansättning, medan det i senare generationer blir mer likriktat. I slutpopulationerna var de flesta individer av liknande uppbyggnad och det fanns mycket liten mångfald. Det förekom också identiska individer eftersom programmet saknar en funktion för att ta bort likadana kopior. De bästa individerna från varje körning, dvs den individ i någon generation som fick högst fitness, var följande: 5
9 T räd: (+ (* own_in_pos_a own_bricks') (+ (+ own_in_pos_h (/ own_in_pos_a own_in_pos_a)) (+ (* (/ own_in_pos_a own_in_pos_a) own_in_pos_a)) (* own_in_pos_h own_in_pos_a))) Högsta Fitness: 2577, i generation: 47 T räd: (*(* own_in_pos_a own_in_pos_c) (* (* own_in_pos_a (- own_in_pos_a opp_allowed_moves)) own_in_pos_c')) Högsta fitness: 2674, i generation 19 T räd: (+ own_in_pos_d (- (+ ( + (/ empty empty) own_in_pos_a) own_in_pos_a) own_in_pos_e)) Högsta fitness: 2569, i generation 38 Träden är här omskrivna till LISP-liknande funktioner. Egentligen består varje träd av noder som är representerade som objekt. Jag lät den sista av dessa 3 individer spela matcher mot slumpspelaren och den vann då av dessa, dvs ca 91 % av matcherna. Det kan jämföras med GPOthello-spelaren som vann 47 av 50 matcher mot deras slumpmässiga spelare (94 % av matcherna). Jag vet dock inte hur många generationer de körde eller hur stor population de använde, därför är det svårt att göra några exakta jämförelser. Jag vet inte heller om 47 matcher av 50 innebär att de bara lät den spela 50 matcher, vilket i så fall knappast kan ses som en statistiskt tillförlitlig siffra. I vilket fall som helst kan programmet knappast ses som en bra Othello-spelare om det förlorar eller spelar oavgort i 9 % av matcherna mot slumpen (som ju är en väldigt dålig Othello-spelare). 6
10 4. Diskussion Eftersom jag har bara har kört den genetiska programmeringen 3 gånger och inte testat att variera exempelvis populationsstorleken så är det svårt att utvärdera hur bra programmet fungerar. Från de körningar jag har gjort kan man dock se att populationerna förbättrar sig och att de program som den genetiska programmeringen resulterar i spelar betydligt bättre än slumpen. Jag har fått många idéer till förbättringar av programmet som jag skulle ha velat implementera om jag hade haft mer tid. Det skulle t.ex. ha varit intressant att utvidga urvalsfunktionen genom att göra det möjlighet att låta individerna i en population spela Othello mot varandra i en turnering, där de bästa går vidare och de sämsta slås ut. Andra förändringar skulle t.ex. vara en funktion som ser till att inga identiska kopior får förekomma i populationen, samt en bättre metod för att beräkna fitness-värde. För tillfället sparas inte heller individerna som skapas, så när man stänger ner Python är det genetiska programmet borta. Detta är också något som borde åtgärdas. 5. K ällor Eskin & Siegel (1999), Department of Computer Science, Columbia University. K oza, John R. (1992) Genetic Programming: On the Programming of Computers by Means of Natural Selection The MIT Press 7
Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer
Genetiska Algoritmer 1 Grundläggande Idéer 2 3 4 Exempel Parallell optimering inspirerad av biologisk evolution Parallell optimering inspirerad av biologisk evolution Population av hypoteser Urvalprocess
Läs merProjektdokumentation för Othello
Projektdokumentation för Gustav Fransson Nyvell gusfr229@student.liu.se Tomas Franzén tomfr819@student.liu.se 1. Inledning Vi har gjort ett -spel som går ut på att man turas om att lägga brickor på en
Läs merLathund för spel med karta
Lathund för spel med karta Från lärardagarna 2018, Scratch fördjupning med Linda Folkesson, Lotta Korslid och Linn Bergqvist Steg 1: Skapa prickar som säger en världsdel Moment: Kopior/kloner Lägg in en
Läs merHandbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll
Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................
Läs merRegression med Genetiska Algoritmer
Regression med Genetiska Algoritmer Projektarbete, Artificiell intelligens, 729G43 Jimmy Eriksson, jimer336 770529-5991 2014 Inledning Hur många kramar finns det i världen givet? Att kunna estimera givet
Läs merHandbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll
Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................
Läs merkl Tentaupplägg
Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer
Läs merJavaScript del 5 Funktioner
JavaScript del 5 Funktioner När man skriver JavaScriptkod eller program i andra programmeringsspråk för den delen så kan det finnas anledningar till att man vill dela upp sitt stora program i flera mindre
Läs merUtförliga regler för TRAX
Utförliga regler för TRAX Innehållsförteckning Vad är TRAX? Sid 2 Grundregler för TRAX Sid 3 Vad är en tvingad yta? Sid 4 Vad är en vinnande ögla? Sid 6 Vad är en vinnande linje? Sid 7 Grundläggande strategiska
Läs merHexaFlip. Kravspecifikation
HexaFlip Kravspecifikation Dokumentversion 1.0 Martin Larsson marla316@student.liu.se Carl Lindwall carli914@student.liu.se Senast modifierad 2009 02 17 Sammanfattning Detta dokument skall ligga som grund
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merSagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO
Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO SCHACK Schack matt När en av motståndarens pjäser hotar kungen säger man att den står i schack. Schack matt - I schack vinner den som först
Läs merProgrammeringsuppgift Game of Life
CTH/GU STUDIO TMV06a - 0/0 Matematiska vetenskaper Programmeringsuppgift Game of Life Analys och Linär Algebra, del A, K/Kf/Bt Inledning En cellulär automat är en dynamisk metod som beskriver hur komplicerade
Läs merHI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2014-10-27 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Läs merFördjupningsuppgift 729G43 Linköpings Universitet alelo408. Genetisk börshandel. Att hitta mönster i börsmarknaden med genetiska algoritmer
Genetisk börshandel Att hitta mönster i börsmarknaden med genetiska algoritmer Alexander Löfstrand HT 2017 1. Inledning 1.1. Bakgrund Börsmarknaden är full av möjligheter att tjäna pengar, men även på
Läs mergenetiska algoritmer
Introduktion till genetiska algoritmer CT3620 Vetenskapsmetodik 2005-10-21 Ylva egerfeldt ydt01001@student.mdh.se SAMMANFATTNING enna rapport är tänkt som en introduktion till genetiska algoritmer. Först
Läs merAnteckningar propp SMT2
Anteckningar propp SMT2 Lars Åström 11 december 2015 Under proppen ska följande gås igenom: Induktion - dominoeffekten Falluppdelning Extremprincipen Invarians Andra knep som används Induktion Vi använder
Läs merTenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00
1 ( 7) Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier (ej anteckningar,
Läs mer3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.
Moment 2: Klonspel Instruktioner för deltagare Idag ska du få lära dig om: Kloner - kopior av samma figur (sprajt) Variabler - ett värde, exempelvis antal poäng Slumptal - slå en tärning för att välja
Läs merMedelvärde, median och standardavvikelse
Medelvärde, median och standardavvikelse Detta är en enkel aktivitet där vi på ett dynamiskt sätt ska titta på hur de statistiska måtten, t.ex. median och medelvärde ändras när man ändar ett värde i en
Läs merLABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I
LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I Vt 2002 Mål: Lära sig: Filhantering Stränghantering Vektorer Funktioner Programstruktur Tid: Läroboken: 6 timmars handledd laborationstid. Beräknad klar
Läs merKravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer
Kravspecifikation Fyra i rad Javaprojekt inom TDDC32 Version 2.0 Datum 2008-05-19 Dokumentnummer 20080215 Sammanfattning Detta är en kravspecifikation över det klassiska spelet Fyra-i-rad programmerat
Läs merPROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI
PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI NG STRESS LUNDS TEKNISKA HÖGSKOLA - 2013-05-22 Projektmedlemmar: Emil Apelgren adi10eap@student.lu.se Fredrik Helander gda10fhe@student.lu.se Jonathan Klingberg
Läs merallt.cl Page 1 of 17 Date: torsdag 7 december 2006
allt.cl Page 1 of 17 Slumpspelaren Väljer slumpvis en flytt ur möjliga flyttar. (defun skapa-slump-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'slump-gör-flytt namn bricktyp))
Läs merFyra i rad Javaprojekt inom TDDC32
Fyra i rad Javaprojekt inom TDDC32 Analys och design-dokument Version 2.0 Datum 2008-05-19 Dokumentnummer 20080303 Sammanfattning Detta är analys och design-dokumentet för programmet Fyra i rad. Fyra i
Läs merEVOLUTIONENS DRIVKRAFTER ARTBILDNING
EVOLUTIONENS DRIVKRAFTER ARTBILDNING Evolutionen på 60 sek https://www.youtube.com/watch?v=oiwde6opvz U Vad är evolutionen (8 min)? https://www.youtube.com/watch?v=ghhojc4oxh8 Hur fungerar evolutionen
Läs merDatastrukturer och Algoritmer D0041D
Luleå Tekniska Universitet 19 mars 2014 Laborationsrapport Laboration 3 Datastrukturer och Algoritmer D0041D Primms Algoritm Namn E-mail Magnus Björk magbjr-3@ltu.student.se Handledare Felix Hansson Primms
Läs merTentamen TEN1 HI
Tentamen TEN1 HI1029 2014-03-14 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs merMinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004
MinMax Algoritmen Implementation och optimering Joakim Östlund 15 juni 2004 1 Samanfattning MinMax är en algoritm som kan användas i turbaserade spel för att skapa en virituell motståndare. Algoritmen
Läs merProgrammering. Den första datorn hette ENIAC.
Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och
Läs merKort Sammanfattning av Schack MAS
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
Läs merTENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET
UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt
Läs merStatistik över heltal
Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande
Läs merGenetiska Algoritmer. 10 mars 2014
Genetiska Algoritmer Johan Sandberg Jsg11008@student.mdh.se 10 mars 2014 Niklas Strömberg Nsg11001@student.mdh.se 1 SAMMANFATTNING Genetiska algoritmer är en sorts sökalgoritm som är till för att söka
Läs merEtt häfte om förbundet och Othellots regler, taktik och strategi.
Ett häfte om förbundet och Othellots regler, taktik och strategi. Othello är lätt att spela svårt att bemästra! Veronica koncentrerar sig under VM 2012 där hon även vinner damfinalen och Sveriges första
Läs merTillämpad Programmering (ID1218) :00-13:00
ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Läs merDet är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
Läs merExcel-guide. Introduktion
Excel-guide Introduktion I denna laboration kommer ni få använda några grundfunktioner i Microsoft Excel. Laborationen utgår ifrån Excel 2010, men om ni vill använda ett annat program för att lösa uppgifterna
Läs merTDP002 2015-08-26 14-19. Regler
Regler Student får lämna salen tidigast en timme efter tentans start. Vid toalettbesök eller rökpaus ska pauslista utanför salen fyllas i. All form av kontakt mellan studenter under tentans gång är strängt
Läs mer16. VOLLEY Volley är tillåtet dock inte på serven.
Spelregler 1. PLACERING AV SPELARNA Spelet spelas i par Spelarna står i områden som är belägna på varsin sida av nätet. Servaren sätter bollen i spel och mottagaren returnerar bollen. Mottagaren kan stå
Läs merGame of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.
Presentation av uppgiften Vi har fått i att skapa en webbapplikation med ett spelbart spel inbyt i sig. Eller som läraren formulerar sig: uppgiften är att skapa en webbapplikation där en eller flera spelare
Läs merMotivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!
Pekare (till objekt) Objektvariabler är pekare vad är det? (Viktiga begrepp inte bara inom objektorientering!) Hur används pekare för att sätta samman objekt (composition)? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel
732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public
Läs merUppgift 1 ( Betyg 3 uppgift )
2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal
Läs merBeskrivning av Gesällprov. Fia Med Knuff. Mikael Rydmark.
Beskrivning av Gesällprov Fia Med Knuff Mikael Rydmark rydmark@kth.se Mikael Rydmark 1(11) 10-05-05 Innehållsförteckning Inledning...3 Nytt spel...4 Regler... 6 Om Spelet... 7 Brädet... 7 Tärningen...8
Läs merLektionsanteckningar 11-12: Normalfördelningen
Lektionsanteckningar 11-12: Normalfördelningen När utfallsrummet för en slumpvariabel kan anta vilket värde som helst i ett givet intervall är variabeln kontinuerlig. Det är väsentligt att utfallsrummet
Läs merExempelprov. Matematik Del A, muntlig del. 1abc
Exempelprov Matematik Del A, muntlig del 1abc 2 DEL A, EXEMPELPROV MATEMATIK 1ABC Innehållsförteckning 1. Instruktioner för att genomföra del A... 5 2. Uppgifter för del A... 6 Version 1 Sten, sax och
Läs merProgrammering. Scratch - grundövningar
Programmering Scratch - grundövningar Lär känna programmet: Menyer för att växla mellan att arbeta med script, utseende/bakgrund och ljud. Scenen där allting utspelar sig. Här klickar du på bakgrunden
Läs merTDIU01 / 725G
TDIU01 / 725G67 2011-12-16 08-13 Inloggning Börja med att logga in i tentasystemet genom att logga in med användare examx som har lösenordet kluring1. Verifiera att dina uppgifter stämmer och förbered
Läs mer7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter
Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: ADAEK12h ASYST12h NGIMI12h 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum:
Läs merπ = proportionen plustecken i populationen. Det numeriska värdet på π är okänt.
Stat. teori gk, vt 006, JW F0 ICKE-PARAMETRISKA TEST (NCT 13.1, 13.3-13.4) Or dlista till NCT Nonparametric Sign test Rank Teckentest Icke-parametrisk Teckentest Rang Teckentestet är formellt ingenting
Läs merTentamen TEN1 HI
Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs mer[][] Arrayer med två index
[][] Arrayer med två index Exempel på saker med två index: En digital bild: bilden har rader (y) och kolumner (x) Mätdata i en tabell med rader och kolumner Spel: o Schack o Sudoku o Luffarschack Arrayer
Läs merMESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16
MESI-Protokollet Richard Elvhammar Lund Universitet 4/12-16 Abstract För att ett system snabbt ska kunna hantera information så används, å sidan åt primärminnet och sekundärminnet, ett cacheminne. I modern
Läs mer2. Test av hypotes rörande medianen i en population.
Stat. teori gk, ht 006, JW F0 ICKE-PARAMETRISKA TEST (NCT 15.1, 15.3-15.4) Ordlista till NCT Nonparametric Sign test Rank Icke-parametrisk Teckentest Rang Teckentest Teckentestet är formellt ingenting
Läs merMitt hus och jag steg för steg instruktioner
Mitt hus och jag steg för steg instruktioner Till den här uppgiften behöver du ett foto på dig själv, ditt hus, en karta och en huvudlös figur. Se till att alla bilder ligger på samma ställe på din dator
Läs merSpel. 1 mot 1 på en spelplan som omfattar ca 2 m². Endast fingerslag (eller bagger) är tillåtet. Alternativt kan man tillåta tre beröringar "per lag".
Spel (! = även lämplig för nybörjare) 1. Spel som tvingar till val av snabba utvägar (minst 8 spelare). Med extra antenner två meter in från sidantennerna d v s man använder 4 antenner. 5 mot 5 (eller
Läs merGenom att följa dessa steg lär du dig snabbt att spela onlinematcher... och som du kan se är det mycket enkelt, roligt och spännande!
HUR MAN SPELAR ONLINE Genom att följa dessa steg lär du dig snabbt att spela onlinematcher... och som du kan se är det mycket enkelt, roligt och spännande! 0. SKAPA DITT EGET PERSONLIGA EMBLEM OCH DINA
Läs merKoda ett mattetest 3 av 5. Lektionen handlar om att göra en variabel i programmet för ett multiplikationstest. Koda ett mattetest 3 av 5
Lektionen handlar om att göra en variabel i programmet för ett multiplikationstest. Lektionsförfattare: Christer Sjöberg Till läraren 1. Skapa en variabel för poäng 2. Nollställ räknaren En digital lektion
Läs merLabb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Läs merTeoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Läs merENKEL Programmering 3
ENKEL Programmering 3 Figurer i långa rader Titta på de olika figurerna i de olika raderna. Kan du se att de olika figurerna i varje rad är placerade enligt ett visst mönster? Kan du lista ut vilken figur
Läs merAGA-regler. goforbundet.se/ Referens: AGA 1991
AGA-regler Referens: AGA 1991 Varje formulering av dessa regler vars innehåll är identiskt, är godtagbar som ett uttryck för AGAs goregler, så länge de hänvisar till de mer kompletta regler som ges i AGAs
Läs merRIKSSEMIFINAL 2017 Lagen
RIKSSEMIFINAL 2017 Lagen 1. Festlig teknik Tuppkammen Bordsfjädern Rosen En viktig del av teknikarbetet är att kunna använda och tolka ritningar och beskrivningar av olika slag. Till exempel får plåtslagare
Läs merDetta är en lektion utvecklad under Kleindagarna 2011, vidareutvecklad och testad i klassrum av
Ramsey tal etta är en lektion utvecklad under Kleindagarna 2011, vidareutvecklad och testad i klassrum av Samuel engmark, Matematiska vetenskaper, halmers och Göteborgs universitet lisabeth Samuelsson,
Läs merExtramaterial till Matematik Y
LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TVÅ Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta
Läs merEn typisk medianmorot
Karin Landtblom En typisk medianmorot I artikeln Läget? Tja det beror på variablerna! i Nämnaren 1:1 beskrivs en del av problematiken kring lägesmått och variabler med några vanliga missförstånd som lätt
Läs merGenetiska Algoritmer
Linköpings Universitet Intutionen för datavetenskap Artificiell Intelligens HKGBB0 HT-2003, oktober Genetiska Algoritmer Som problemlösning Anna Skoglund annsk334@student.liu.se 0 Abstract Genetiska algoritmer
Läs merKänguru 2011 Cadet (Åk 8 och 9)
sida 1 / 7 NAMN KLASS/GRUPP Poängsumma: Känguruskutt: Lösgör svarsblanketten. Skriv ditt svarsalternativ under uppgiftsnumret. Lämna rutan tom om du inte vill besvara den frågan. Gissa inte, felaktigt
Läs merTentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
Läs merGenetiska algoritmer. Henrik Hansson (hhn00001@student.mdh.se) Rapport, CDT212 Mälardalens Högskola
Genetiska algoritmer Henrik Hansson (hhn00001@student.mdh.se) Rapport, CDT212 Mälardalens Högskola 1 Sammanfattning Genetiska algoritmer har rötter i 60-talet och efterliknar evolutionsteorin på så sätt
Läs merProgrammering II (ID1019) :00-17:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Läs merBrädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.
Brädspelet Mulan Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker Göteborg 1999 June 8, 2001 1 Innehåll: 1. Inledning 2. Projektbeskrivning 3. Programflöde
Läs merSPELREGLER. Delar i spelet. Antal spelare. Spelet i korthet
SPELREGLER Delar i spelet 1 spelplan 6 spelpjäser 6 x 8 magikerkort 6 spelbrickor 6 x 40 markörer 6 fat att lägga markörerna på 50 frågekort 25 rosa Gissa magiker -polletter 1 tärning Spelbricka Antal
Läs merLÄRARHANDLEDNING. Eleverna kan två och två eller i större grupper på ett lekfullt sätt träna följande: Talinnehåll Addition Subtraktion Multiplikation
LÄRARHANDLEDNING LH Tärningsövningar innehåller blandade matematikövningar inriktade på skolår F - 5 och kan med stor fördel användas som extra resursmaterial och idébank. Med korten som bas går det lätt
Läs merLektion 2: Sökagenter. Robin Keskisärkkä
Lektion 2: Sökagenter Robin Keskisärkkä Lektionens innehåll Introduktion till laboration 2 Implementation av en sökalgoritm Livekodning Konfrontera ett liknande problem själva Extra: Heuristisk sökning
Läs merGenJam En musikalisk genetisk algoritm?
GenJam En musikalisk genetisk algoritm? Kognitionsvetenskapliga programmet Abstract GenJam är en modell av en jazzmusiker som lär sig att improvisera. Det är en interaktiv genetisk algoritm som interagerar
Läs merHI1024 Programmering, grundkurs TEN2 2014-03-13
HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Läs merIntroduktion till programmering SMD180. Föreläsning 9: Tupler
Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]
Läs merFöreläsning 5: Grafer Del 1
2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första
Läs merStudietyper, inferens och konfidensintervall
Studietyper, inferens och konfidensintervall Andrew Hooker Division of Pharmacokinetics and Drug Therapy Department of Pharmaceutical Biosciences Uppsala University Studietyper Experimentella studier Innebär
Läs merDigital Choice 12 + MER, MER, MER!
MER, MER, MER! Digital Choice Du hämtar de minikategorier du vill ha på mytpchoice.se Det finns över 100 minikategorier, t.ex. Hjältar & hjältinnor, Sci-Fi & fantasy, Resor & äventyr, Mode & trender, Myter
Läs merPrecis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren
Publicerad med tillstånd av Nämnaren Thomas Lingefjärd Geogebra i gymnasieskolan En tilltalande egenskap med Geogebra är att programmet kan användas tvärs över stora delar av utbildningssystemets matematikkurser.
Läs merAllmänt om Pidro. Spelets uppbyggnad
Allmänt om Pidro Pidro är ett kortspel för fyra personer där ett par spelar mot ett annat par. Lagmedlemmarna sitter mittemot varandra. Pidro liknar t.ex. Bridge i det avseendet att spelet är uppdelat
Läs merHI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2016-12-22 KTH STH Flemingsberg 8.15-13.00 Tillåtna hjälpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början
Läs merFöreläsning G60 Statistiska metoder
Föreläsning 7 Statistiska metoder 1 Dagens föreläsning o Hypotesprövning för två populationer Populationsandelar Populationsmedelvärden Parvisa observationer Relation mellan hypotesprövning och konfidensintervall
Läs merTentamen på. Statistik och kvantitativa undersökningar STA100, 15 HP. Ten1 9 HP. 19 e augusti 2015
MÄLARDALENS HÖGSKOLA Akademin för ekonomi, samhälle och teknik Statistik Tentamen på Statistik och kvantitativa undersökningar STA100, 15 HP Ten1 9 HP 19 e augusti 2015 Tillåtna hjälpmedel: Miniräknare
Läs merObs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).
LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Tomas Johansson, 491000 Resultatet anslås senast 08-05-16 i A-huset. Tillåtna
Läs merBridge. på 10 minuter
Bridge på 10 minuter STEG FÖR STEG Det bästa sättet att lära sig spela bridge på är att börja med en förenklad form av spelet. Varje giv består av två moment, efter det att man delat ut korten: budgivning
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs merTynker gratisapp på AppStore
Tynker gratisapp på AppStore Innehåll Använda appen 2 Koordinatsystemet 6 Rita rektanglar i koordinatsystemet 7 Rita ellipser i koordinatsystemet 9 Rita trianglar i koordinatsystemet 11 Skapa mönster med
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merTentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl
Läs merC++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen
C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt
Läs merLennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM
Matematik Gymnasieskola Modul: Matematikundervisning med digitala verktyg II Del 1: Om programmering Aktiviteter Del 1 Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM Ni
Läs merDetaljbeskrivning av Player
Detaljbeskrivning av Player Syftet med Playerklassen är att representera det skepp som spelaren styr. Spelarens skepp styrs till skillnad från övriga skepp av spelaren både när det kommer till vilken riktning
Läs merArbeta med normalfördelningar
Arbeta med normalfördelningar I en större undersökning om hur kvinnors längd gjorde man undersökning hos kvinnor i ett viss åldersintervall. Man drog sedan ett slumpmässigt urval på 2000 kvinnor och resultatet
Läs merSlump och statistik med Scratch. Se video
Se video I lektionen simuleras hundratals tärningskast på kort tid. Eleverna får skapa en statistikapplikation och lära sig att skapa och modifiera algoritmer. Måns Jonasson, Internetstiftelsen, har arbetat
Läs merExtramaterial till Matematik Y
LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TRE Algebra ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få bekanta dig med i den här uppgiften.
Läs merEkvivalensrelationer
Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element
Läs mer