new artificiell intelligens lektion 1729g10/resources/fo-oh/lektion1.pdf · 2012. 4. 17. ·...

Post on 18-Sep-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

A rtific ie ll Inte llig e nsL e ktio n 1

AdministrativtAllmänt om laborationer

Intelligenta agenter

Allmänt

Kursassistent: Jody Foo, jody.foo@liu.se

Labbassistenter:Robin Keskisärkkä, robin.keskisarkka@liu.se

Jonas Rybing, jonas.rybing@liu.se

Christian Smith, christian.smith@liu.se

(Sara Stymne, sara.stymne@liu.se)

Allmänt

Hemsida (www.ida.liu.se/~729G10) innehållerNyheter, t ex flyttade tillfällen och ändringar i

labbarDödlinjer för laborationer och

inlämningsuppgifter

Anmäl er till laborationerna via webreg (vanliga Liu-kontot)

Lektioner

Laborationsförberedande Eventuellt genomgångar

lektionsövningar

Frågor i allmänhet

Laborationer

Programmering, körbara program och diskussioner

Förbered er välLäs instruktionernaLäs den teori instruktionerna hänvisar till

Laborationer – redovisning

Redovisning sker genomProgramkod ska redovisas både skriftligt i

underskrivna labbomslag och via epostDiskussioner behöver enbart redovisas

skriftligt på papperLabbar lämnas till:

Labbass.AI@gmail.com Facket utanför Jody Foos rum (våning 2, E-huset)

Laborationer – redovisning

Deadline för laborationerna finns på hemsidan

Slutdeadline Om giltigt skäl kan alternativa tider

diskuteras med handledare Var noga med att spara godkända

laborationsrapporter och inlämningsuppgifter (och mejl)

Laborationer – betygssättning

Betygen godkänt och väl godkänt gesFör godkänt krävs att

laborationen är redovisad enligt de krav som finns angivna i varje laborationsinstruktion

För väl godkänt krävs att ni har kopplat ihop teorin med praktiken ni kan föra egna resonemang och dra egna

slutsatser efter era erfarenheter programkoden innehåller genomtänkta

funktionsnamn och en genomtänkt struktur

Laborationskursen – betyg

Laborationskursen utgör ett av två betygsmomentÖvrigt moment: tentamen

Varje laboration med betyget VG ger en poäng mot betyget VG på tentamen.Möjligt att komplettera till VG om gränsfallKrav: Inlämnad i tid och kompletterad inom en

vecka från registrerad komplettering

Vår roll

Labbar rättas inom 10 dagar efter deadline Kompletteringar rättas under

uppsamlingstillfällen Om ni inte får svar i tid så hör av er till oss Vad vi kan hjälpa till med

Laboration 1 – översikt

Vad?Utforma och implementera en agent som kan

dammsuga ett omöblerat rum, samt resonera kring vad ni gjort

Varför?För att känna få insikt i vad en agent är och

vad som egentligen menas med intelligens i kursboken och inom AI

För att lära er använda kursbokens begreppsapparat

Laboration 1 – översikt

Hur?Genom att utgå från en befintlig

omgivningssimulator och ett programskelettGenom att reflektera

Omgivningen – grafisk

Agent och omgivning

1. Agenten varseblir (omgivningssimulatorn förser agenten med ett percept).

2. Agenten beslutar sig för hur den vill handla (dvs. skickar ut en handling till omgivningssimulatorn).

3. Omgivningssimulatorn ser till att handlingen utförs och uppdaterar omgivningen.

4. Agenten uppdaterar sitt interna tillstånd.

5. Upprepa från steg 1.

Agent och omgivning

Dammsugaragent

Interntillstånd

(Clean, None)

’Forward’

Omgivningssimulator

Representation av världen

Percept

Perceptet är en tupel med två element (status, bumping)

status='Dirty' om rutan är smutsig, annars Clean bumping='Bump' om agenten gått in i en vägg, annars None

Handlingar

Agenten kan utföra fem handlingar 'Forward' 'TurnRight' 'TurnLeft' 'Suck' 'ShutDown'

Omgivning

Klasshieraki: Environment

XYEnvironment VacuumEnvironment

Funktioner: env = VacuumEnvironment(width=10, height=10)

env.add_random_hinders(prob=0.2)

env.add_random_dirt(prob=0.2)

Agenter

Klasshieraki: Object

Agent RandomAgent - RandomVacuumAgent SimpleReflexAgent - SimpleReflexVacuumAgent ReflexAgentWithState - VacuumAgentWithState

Funktioner: agent = VacuumAgentWithState() env.add_object(agent)

RandomAgentclass RandomAgent(Agent):

def __init__(self, actions): Agent.__init__(self) self.program = lambda percept: random.choice(actions)

def RandomVacuumAgent(): return Agent.RandomAgent(['TurnRight', 'TurnLeft, 'Suck', 'Forward'])

SimpleReflexAgentclass SimpleReflexAgent(Agent):

def __init__(self, interpret_input, choose_action): Agent.__init__(self) def program(percept): state = interpret_input(percept) action = choose_action(state) return action self.program = program

SimpleReflexVacuumAgent

def SimpleReflexVacuumAgent():

def interpret_input(percept): return percept

def choose_action(state): (dirt, bump) = state if dirt == 'Dirty': return 'Suck' elif bump == 'Bump': return random.choice(['TurnLeft', 'TurnRight']) else: return random.choice(['TurnLeft', 'TurnRight',

'Forward', 'Forward]) return SimpleReflexAgent(interpret_input, choose_action)

ReflexAgentWithState

class ReflexAgentWithState(Agent):

def __init__(self, update_state_with_percept, choose_action, update_state_with_action):

Agent.__init__(self) self.state = None self.action = None def program(percept): self.state = update_state_with_percept(self.state,

percept) self.action = choose_action(self.state) self.state = update_state_with_action(self.state,

self.action) return self.action self.program = program

VacuumAgentWithStatedef VacuumAgentWithState():

class State: def __init__(self): #Add your code here def update_state_with_percept(state, percept):

#Add your code here return state

def choose_action(state): #Add your code here def update_state_with_action(state, action):

#Add your code here return state

agent = ReflexAgentWithState(update_state_with_percept, choose_action,

update_state_with_action) agent.state = State() return agent

Köra och Jämföra agenter

run_random_vacuum_environment(AgentType,width=10, height=10, dirt=0.2, gui=False)

run_random_vacuum_environment(SimpleReflexVacuumAgent,10, 10, 0.3, True)

run_vacuum_environment(AgentType, gui=False)run_vacuum_environment(VacuumAgentWithState, True)

compare_vacuum_agents([RandomVacuumAgent, SimpleReflexVacuumAgent, VacuumAgentWithState])

Förberedelser

Gör klart för er själva hur er agent interagerar med sin omgivning (konkret i denna implementation)

Beskriv den strategi er agent har Beskriv de egenskaper och kunskap som er

agent ska ha Översätt agentens strategi i termer av

handlingsregler Fundera på vilken information som måste

finnas i interntillståndet och hur denna ska uppdateras

Laboration 1 – strategier

Spiral Zick-Zack L + Zick-Zack

Laboration1 – skiss spiral

Om det finns smuts ska agenten suga upp det Om nästa ruta är obesökt ska agenten gå framåt

annars svänga vänster Om agenten befinner sig i mitten ska den stänga

av sig Vad behöver agenten veta?

Laboration 1 – skiss zick-zack

Om det finns smuts ska agenten suga upp det Om nästa ruta är en vägg ska den svänga, gå

fram och sedan svänga igen Om agenten befinner sig i ett övre hörn ska den

stänga av sig Vad behöver agenten veta?

Vad behöver agenten veta? Om det finns smuts på en ruta? Om den har bumpat? Vart den är? Vilken riktning den har? Vart den har varit? Om den svängde förra gången? Om den svängde förrförra gången? Vilken riktning den svängde åt senast? Hur långt den har gått? Annat...?

Exempel

Få agenten att gå framåt Få agenten svänga när den bumpar Få agenten att stänga av sig efter fyra

bumpar

Extra

Få agenten att sicksacka diagonalt

top related