Adaptiva algoritmer och intelligenta maskiner, 2005 Hemtentamen

Relevanta dokument
Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

TANA17 Matematiska beräkningar med Matlab

MMA132: Laboration 2 Matriser i MATLAB

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Uppgift 1 ( Betyg 3 uppgift )

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

TMA226 datorlaboration

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

TAIU07 Matematiska beräkningar med Matlab

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

SF1624 Algebra och geometri

729G43 Artificiell intelligens (2016) Maskininlärning 3. Marco Kuhlmann Institutionen för datavetenskap

Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

ELLER (fyll bara i om du saknar tentamenskod): Datum: 32 maj Bordsnummer: Kontrollera att du fått rätt tentamensuppgifter

Konvergens för iterativa metoder

TDDD78 projekt: Tower Defence

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit.

Projekt 3: Diskret fouriertransform

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Tentamen för kursen TME135 Programmering i Matlab för M1

Vinjetter TDDC91 Datastrukturer och algoritmer

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Torsdag 28 maj 2010 kl

Tentamen TEN1 HI

Optimeringslära Kaj Holmberg

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

Kappa 2014, lösningsförslag på problem 5

Hemuppgift 2, SF1861 Optimeringslära för T, VT-10

TANA81: Simuleringar med Matlab

NUMPROG, 2D1212, vt Föreläsning 9, Numme-delen. Stabilitet vid numerisk behandling av diffekvationer Linjära och icke-linjära ekvationssystem

Linjära ekvationssystem. Avsnitt 1. Vi ska lära oss en metod som på ett systematiskt sätt löser alla linjära ekvationssystem. Linjära ekvationssystem

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Föreläsning 5. Approximationsteori

Lösningsförslag till övningsuppgifter, del V

TMV166 Linjär Algebra för M. Tentamen

HI1024 Programmering, grundkurs TEN

Introduktion till MATLAB

Ordinära differentialekvationer,

Experimentella metoder, FK3001. Datorövning: Finn ett samband

Artificiella Neuronnät

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

För teknologer inskrivna H06 eller tidigare. Skriv GAMMAL på omslaget till din anomyna tentamen så att jag kan sortera ut de gamla teknologerna.

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 13:e januari klockan

Oändligtdimensionella vektorrum

Tentamen 1 i Matematik 1, HF okt 2018, Skrivtid: 14:00-18:00 Examinator: Armin Halilovic

1 Minkostnadsflödesproblem i nätverk

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Linjära ekvationer med tillämpningar

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

Optimalitetsvillkor. Optimum? Matematisk notation. Optimum? Definition. Definition

Linjära ekvationssystem

TANA17 Matematiska beräkningar med Matlab

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Laboration: Grunderna i MATLAB

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Linjära ekvationssystem

2 februari 2016 Sida 1 / 23

de var svåra att implementera och var väldigt ineffektiva.

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Datum: 24 okt Betygsgränser: För. finns på. Skriv endast på en. omslaget) Denna. Uppgift. Uppgift Beräkna. Uppgift Låt z. Var god. vänd.

HI1024 Programmering, grundkurs TEN

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Robotarm och algebra

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Moment 6.1, 6.2 Viktiga exempel Övningsuppgifter T6.1-T6.6

Programmeringsuppgift Game of Life

Numerisk Analys, MMG410. Lecture 13. 1/58

Vektorgeometri för gymnasister

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Uppgift 1 ( Betyg 3 uppgift )

Tentamen i Beräkningsvetenskap II, 5.0 hp,

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

Tentamen för kursen. Linjära statistiska modeller. 17 februari

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Fixpunktsiteration. Kapitel Fixpunktsekvation. 1. f(x) = x = g(x).

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

FÖRSÄTTSBLAD TILL TENTAMEN. ELLER (fyll bara i om du saknar tentamenskod): Datum: 16 januari Bordsnummer:

Laboration 3. Funktioner, vektorer, integraler och felskattning

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

Dagens föreläsning (F15)

Föreläsning 7. Felrättande koder

5B1817 Tillämpad ickelinjär optimering. Metoder för problem utan bivillkor, forts.

Armin Halilovic: EXTRA ÖVNINGAR

Transkript:

Adaptiva algoritmer och intelligenta maskiner, 2005 Hemtentamen Hemtentamen består av 5 uppgifter. Totalpoängen är 25 och varje uppgift ger 5 poäng. För godkänt krävs minst 10 poäng. Det är givetvis tillåtet att diskutera uppgifterna med andra teknologer, men de lösningar du skickar måste vara dina egna. Uppenbara fall av plagiat kommer att leda till poängavdrag för de inblandade. Skicka dina lösningar via e-mail till mattias.wahde@me.chalmers.se, med TYDLIG information om ditt namn och personnummer. Lösningarna SKALL skickas i form av EN zip-fil, som vid extraktion ger 5 kataloger med namnen Uppgift1, Uppgift2 etc. Till VARJE uppgift skall bifogas (1) dina Matlabprogram för den aktuella uppgiften, (2) en separat, kortfattad rapport i PDF- eller MS Word-format. OBS! Inlämnade uppgifter som saknar rapport ger 0 poäng. Detsamma gäller uppgifter för vilka matlabprogrammet ej är direkt körbart: Ingen editering, kopiering av filer mellan olika kataloger eller annan modifikation skall behöva göras av den som rättar uppgiften. Alltså: Kontrollera NOGA att (1) dina program är körbara (gå ur Matlab, starta om det igen, och kör programmen), (2) rapporterna har bifogats och att du har SVARAT på de frågor som ingår i uppgiften (läs NOGA de separata instruktionerna för varje uppgift), (3) alla filer har samlats i EN zip-fil enligt ovan. Dessutom: Kontrollera att du faktiskt BIFOGAR zip-filen när du skickar mailet. Zip-filen ska skickas, via e-mail, senast den 16/5 kl. 11.00 (OBS! 11 på förmiddagen, EJ kl. 23!). Sen inlämning medför 5 poängs avdrag (fram till 23.59 den 17/5) eller 10 poängs avdrag (fr.o.m. 18/5, kl. 00.00). Vissa av uppgifterna är individualiserade, d.v.s. uppgiftens parametrar varierar från teknolog till teknolog. Parametrarna finns att ladda ner på

1 Handelsresandeproblemet Handelsresandeproblemet (TSP) förekommer i många tillämpningar, t.ex. vid utplacering av m komponenter på ett kretskort. Det rör sig då oftast om mycket stora m (10 4 10 6 eller mer). Här skall vi lösa samma problem, men för en transporttillämpning, där m är mycket mindre: Ett företag har som uppgift att leverera varor till 30 olika städer. Givetvis vill man göra detta på ett så effektivt sätt som möjligt. Man måste alltså lösa TSP. Skriv en GA som kan söka efter den kortaste vägen mellan m orter (för godtyckligt m). Ett krav är att programmet alltid skall generera korrekta rutter, d.v.s. sådana som endast besöker varje stad en gång och, i sista steget, återvänder till startstaden. Använd därför en kodningsmetod där varje kromosom består av en permutation av talen 1, 2,..., m, d.v.s. städernas index. Man behöver även speciella operatorer som ser till att nya individer bildas på ett korrekt sätt. Implementera order crossover enligt uppgift 3.6 i kursboken, i form av en separat Matlabfunktion med följande gränssnitt (OBS!) function [c1new,c2new] = order_crossover(c1,c2); där c1, c2, c1new och c2new är kromosomer. Skriv även en valfri mutationsoperator (t.ex. den som finns i uppgift 3.6, men andra operatorer är också möjliga). Städernas position anges med två koordinater (x, y), och listan över koordinaterna finns att ladda ner i Matlabformat på I många transportproblem är kostnaden inte en enkel linjär funktion av avståndet. I denna uppgift, antag att kostnadsfunktionen c(i, j) ges av L 0 om L L 0 c(i, j) = L om L 0 < L L 1 (1) L 2 L 1 om L > L 1, där L = (x i x j ) 2 + (y i y j ) 2, (2) är avståndet mellan stad i och stad j. Som fitnessmått, använd uttrycket f = 1 c, (3) där c betecknar summan av alla delkostnaderna för de 30 resorna längs rutten. Använd de numeriska värdena L 0 = 3.0 och L 1 = 6.0. Kör sedan programmet för att finna en rutt med så hög fitness som möjligt (se websidan för information om vilka värden som måste nås för full poäng). Ange följande i din rapport: (1) kostnaden c och (2) längden för den bästa rutt du funnit. Skicka dessutom med (1) ditt TSP-program samt (2) den bästa kromosomen (d.v.s. en permutation av talen 1, 2,...,30) i Matlab-format, d.v.s. som en.mat-fil eller en.m-fil.

2 Funktionsanpassning med neuronnät Neuronnät används ofta för funktionsanpassning, d.v.s. för att bilda en representation av en okänd funktion f(x 1, x 2,...,x m ). I denna uppgift ska du använda backpropagation för att ta fram ett neuronnät som kan representera en given funktion f(x, y) av två variabler på intervallet x, y [0, 1]. Nätet ska alltså ha två insignaler och en utsignal. De funktioner (en per teknolog) som ska användas finns beskrivna på I detta fall skall både en träningsmängd och en valideringsmängd genereras. Träningsmängden skall bestå av N tr = 121 in-utdatapar av typen (x, y, f(x, y)), tagna från ett rutnät med separationen 0.1 mellan närliggande punkter. Datamängden skall placeras i en Matlabfil (training_data.mat eller training_data.m) på formen training_data = [0.000 0.000 0.0000; 0.100 0.000 0.5641; 0.200 0.000 0.7671;... 0.900 1.000-0.4351; 1.000 1.000-0.5341]; (Siffervärdena för f(x, y) kommer givetvis att variera från fall till fall). Valideringsmängden skall placeras i en Matlabfil (validation_data.mat eller validation_data.m), och skall bestå av N val = 100 in-utdatapar, tagna i mittpunkterna mellan de punkter som ingår i träningsmängden, d.v.s. validation_data = [0.050 0.000 0.0000; 0.150 0.000 0.3278; 0.250 0.000 0.5161;... 0.850 0.950-0.4764; 0.950 0.950-0.8571]; Välj själv antalet neuroner i mellanlagret (så litet som möjligt, men inte mindre!). Definiera medelfelet för ett neuronnät som ɛ = 1 N ( ˆf(xi, y i ) f(x i, y i ) ) 2, (4) N i=1 där ˆf är neuronnätets uppskattning av det verkliga funktionsvärdet f i punkten x i, y i. För träningsmängden beräknas felet ɛ tr med N = N tr och för valideringsmängden beräknas felet ɛ val med N = N val. OBS! Uppgiften fortsätter på nästa sida!

Under träningen, som skall genomföras med vanlig, stokastisk gradientföljning, d.v.s. den metod som oftast används i samband med backpropagation, mät träningsfelet ɛ tr och valideringsfelet ɛ val efter var 10:e träningsepok (Liksom i inlämningsuppgift 2 skall felen beräknas med fixa vikter). OBS! Backpropagationalgoritmen får EJ ges direkt information om sitt resultat på valideringsmängden under pågående träning! Däremot får ɛ val (givetvis) användas för att bestämma när träningen skall avbrytas. För full poäng krävs att ett visst minimivärde nås för ɛ val. För mer information, se websidan enligt ovan. Tag med följande i din rapport: (1) Information om minimivärdena (d.v.s. för ditt bästa neuronnät) för felen ɛ tr och ɛ val och (2) en plot (skall inkluderas i rapporten OBS!) över felen ɛ tr och ɛ val som funktion av träningsepoken (d.v.s. för epok 10, 20, 30, etc., enligt ovan). Dessutom SKALL (1) backpropagationprogrammet och (2) både träningsmängden och valideringsmängden bifogas (i Matlabformat, d.v.s i en.mat-fil eller en.m-fil). Vidare SKALL (3) ett testprogram test_net bifogas, där användaren kan skriva in en godtycklig punkt (x, y) och få ut uppskattningen ˆf(x, y) från ditt bästa nätverk, enligt >> f_estimate = test_net(x,y) Detta program måste alltså läsa in det bästa nätverket från en fil (alternativt får det bästa nätverket gärna hårdkodas i testprogrammet). Det skall INTE vara nödvändigt att åter köra backpropagationalgoritmen för att kunna testa nätet.

3 Hopfieldnätverk Hopfieldnätverk kan användas för läsning av handstilar, t.ex. vid automatisk sortering av post. Det inlästa tecknet består då av en matris av n x n y pixlar, där varje pixel motsvaras av en neuron i Hopfieldnätverket. För enkelhets skull antar vi här att varje pixel antingen är av (vit pixel, insignal = -1) eller på (svart pixel, insignal = +1), d.v.s. vi definierar inga mellanlägen (gråskalor). Vi sätter n x = n y = 7. Hopfieldnätverket kommer alltså att ha 7 2 = 49 neuroner och 49 2 49 = 2352 vikter (diagonalelementen är alla lika med 0). Skriv ett Matlabprogram som kan lagra N mönster med 49 pixlar vardera i ett Hopfieldnätverk (de lagrade mönstren får hårdkodas i programmet). Lagra sedan de tre mönstren som finns definierade på websidan, d.v.s. Programmet skall kunna läsa ett godtyckligt startmönster som inparameter och därefter iterera med Hopfieldalgoritmen (s. 86 i kursboken). Programmet SKALL köras exakt på följande sätt (utan modifikation, editering etc.) >> hopfield(start_pattern) där start_pattern är startmönstret (en vektor med 49 komponenter, där komponenterna 1-7 motsvarar översta raden i matrisen (från vänster till höger, som vanligt), komponenterna 8-14 motsvarar näst översta raden etc.). Under körningen SKALL programmet visa (grafiskt) det aktuella mönstret, så att man på skärmen kan följa konvergensen mot en attraktor. Använd gärna det exempelprogram för det grafiska gränssnittet som finns på websidan! Definiera sedan en brusig variant av vart och ett av de tre lagrade mönstren, där åtminstone 5 pixlar har ändrats (jämfört med de lagrade mönstren). Kontrollera att programmet konvergerar mot de lagrade mönstren. De tre brusiga varianterna SKALL bifogas i form av tre stycken matlabvektorer (med 49 element vardera) i en fil noisy_vectors.mat, så att de kan läsas in och direkt testas i Hopfieldprogrammet enligt ovan. Slutligen, finn en godtycklig falsk attraktor för ditt nätverk, d.v.s. en attraktor som inte finns med bland de tre lagrade mönstren (inverterade versioner av de tre mönstren räknas ej!). TIPS: starta med en slumpmässig insignal. Bifoga en plot över den falska attraktorn i din rapport. Dessutom skall (1) Hopfieldprogrammet och (2) de tre brusiga vektorerna bifogas, enligt ovan.

4 Q-learning Q learning kan bl.a. användas vid problem som går ut på att finna den bästa vägen till ett givet mål. Implementera (i Matlab) Q learning enligt avsnitt 3.4 i boken, och applicera ditt program på den arena som finns att ladda ner på Från början sätts Q till noll för alla tillstånd och alla handlingar (handling 1 = höger, handling 2 = upp, handling 3 = vänster, handling 4 = ned). Notera att inte alla handlingar är tillgängliga i alla tillstånd: roboten får inte lämna rutnätet. Periodiska randvillkor skall inte användas. Notera att roboten i denna uppgift kan, i ett givet läge, röra sig i alla tillåtna riktningar, d.v.s. någon framåtriktning definieras ej. Vid varje träningsepisods början skall roboten placeras i en slumpmässig position (men inte i måltillståndet T, ej heller i någon av de blockerade rutorna). Under träningen skall roboten (i varje steg) med sannolikheten ɛ utföra den handling som är associerad med det högsta Q värdet (i det aktuella tillståndet), och med sannolikheten 1 ɛ skall roboten utföra en slumpmässig handling. Vid varje steg uppdateras (i princip) Q matrisen enligt avsnitt 3.4, med δ = 0.9. (I många fall sker dock ingen förändring av Q matrisen, d.v.s. uppdateringen genomförs men ger ingen förändring av Q). Belöningar skall utdelas enligt följande: Om roboten når måltillståndet ges belöningen +20, och träningsepisoden avslutas. Om roboten försöker gå in i någon av de blockerade rutorna ges istället belöningen -10 (d.v.s. ett straff) innan roboten tillåts fortsätta rörelsen. OBS! I dessa fall står dock roboten kvar i den tidigare rutan, d.v.s. den tillåts inte gå in i de blockerade rutorna (men får ett straff för att den försöker göra det). Kör ditt Q learningprogram, och plocka fram Q matrisen (d.v.s. den matris som Q konvergerar mot efter många träningsepisoder). För enkelhets skull, definierna Q matrisen som en 49 4-matris, motsvarande de 49 rutnätscellerna. (1-7 = rad 1 (räknat uppifrån, från vänster till höger), 8-14 = rad 2 etc.) Notera dock att några rader i Q matrisen (nämligen de rader som motsvarar de blockerade rutorna samt måltillståndet) kommer enbart att innehålla nollor. Dessutom kommer det att finnas ytterligare ett antal nollor i Q matrisen, motsvarande handlingar som ej är tillåtna (exempel: Q(1, upp) = 0, eftersom det inte är tillåtet att gå uppåt från det övre vänstra hörnet). Notera också att det går att ta fram Q matrisen för hand. Man kan alltså kontrollera om programmets resultat är korrekt (och körningen därför kan avbrytas). I din rapport skall Q-matrisen (en 49 4-matris) bifogas. Dessutom skall (1) det program som användes vid träningen bifogas (d.v.s. Q-learningprogrammet) SAMT (2) ett enkelt testprogram (ska kunna köras utan att man först måste köra träningsprogrammet) som skriver ut den väg som fås om roboten i varje steg utför den handling som är associerad med högst Q-värde, d.v.s path = show_path(initial_state) där initial_state är det aktuella starttillståndet. Vägen (som returneras av show_path) får antingen representeras grafiskt eller skrivas ut i form av en vektor, t.ex. >> 1 8 15... etc., för fallet initial_state = 1 (vilket starttillstånd som helst (utom de blockerade rutorna) ska dock kunna väljas).

5 Dataklassifikation med GA I många sammanhang, t.ex. inom medicin och molekylärbiologi, är det viktigt att kunna klassificera data i olika kategorier med utgångspunkt i kriterier som tas fram ur mätdata. Ett viktigt exempel är klassifikation av cancerdata. Sedan några år tillbaka är det möjligt att mäta aktiviteten (expressionsnivån) hos många (tusentals) gener samtidigt, och de uppmätta genaktiviteterna kan (eventuellt) användas för att identifiera gener som orsakar cancer, eller som åtminstone konsekvent uppvisar en viss typ av aktivitet efter att en cancertumör har bildats. De mätdata man har att arbeta med i dessa sammanhang brukar ordnas i en matris där varje rad representerar en gen, och varje kolumn en person, antingen med cancer (kategori I) eller utan (kategori II). Dessa s.k. genexpressionsmatriser innehåller alltså ofta tusentals rader men bara några tiotal kolumner eftersom varje mätning fortfarande är mycket kostsam. Det är därför viktigt att försöka finna klassifikatorer med så få parametrar som möjligt. I denna uppgift ska ni, med hjälp av en genetisk algoritm, ta fram en linjär klassifikator, d.v.s. av typen α 1 g i1 + α 1 g i2 +... + α N g in > β, (5) där α j, j = 1,..., N och β är konstanter och g ij, j = 1,...,N är mätvärdet för gen i j. Olikheten ska vara uppfylld, d.v.s. vänsterledet ska vara större än högerledet, för personer i kategori I. För personer i kategori II ska det omvända gälla. Ett exempel: betrakta en starkt förenklad genexpressionsmatris bestående av mätningar av 3 gener för 4 personer: I I II II gen 1 0.3 0.7 0.1 0.8 gen 2 0.8 0.9 0.1 0.2 gen 3 0.9 0.2 0.5 0.7 De två första mätningarna representerar alltså personer i kategori I, och de två sista personer i kategori II. I detta fall skulle t.ex. regeln g 2 > 0.5, d.v.s. N = 1, α = 1, i 1 = 2, β = 0.5, klassificera datamängden perfekt. Uppgift: Skriv nu en genetisk algoritm som kan generera linjära klassifikatorer (av varierande längd) och finn en så liten klassifikator som möjligt ( 5 gener), som hundraprocentigt (d.v.s. helt korrekt) kan klassificera den träningsdatamängd som finns att ladda ner på Låt fitnessvärdet vara lika med andelen korrekt klassificerade mätningar i träningsdatamängden. För full poäng krävs att den identifierade klassifikatorn når ett perfekt resultat (100%) på träningsdatamängden, och åtminstone 95 procents precision på valideringsdatamängden. OBS! valideringsdatamängden får INTE användas vid optimeringen, bara för testning. Det är dock givetvis tillåtet att mäta även valideringsfelet under pågående träning. I din rapport skall bifogas (1) den bästa klassifikatorn på den form som anges i ekvation (5) ovan, (2) en plot över träningsfelet och valideringsfelet som funktion av antalet evaluerade generationer. OBS! Uppgiften fortsätter på nästa sida!

Dessutom skall (1) träningsprogrammet (din GA) bifogas SAMT (2) ett enkelt testprogram med vars hjälp man kan testa den bästa klassifikator du funnit (får hårdkodas i testprogrammet) enligt fitness = test_classifier(data, correct_class) där data skall kunna representera antingen träningsdatamängden eller valideringsdatamängden och correct_class är klassindelningen för den aktuella datamängden (se websidan för mer information). Notera att det INTE skall vara nödvändigt att åter köra träningsprogrammet för att kunna testa din bästa klassifikator.