New Artificiell Intelligens Lektion 1729G10/resources/fo-oh/lektion1.pdf · 2012. 4. 17. ·...
Transcript of New Artificiell Intelligens Lektion 1729G10/resources/fo-oh/lektion1.pdf · 2012. 4. 17. ·...
A rtific ie ll Inte llig e nsL e ktio n 1
AdministrativtAllmänt om laborationer
Intelligenta agenter
Allmänt
Kursassistent: Jody Foo, [email protected]
Labbassistenter:Robin Keskisärkkä, [email protected]
Jonas Rybing, [email protected]
Christian Smith, [email protected]
(Sara Stymne, [email protected])
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:
[email protected] 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