sistemi multi-agente. agente entità reale o virtuale che vive in un ambiente, lo percepisce, agisce...
TRANSCRIPT
Sistemi Multi-agente
Agente
Entità reale o virtuale che “vive” in un ambiente, lo percepisce, agisce in esso e che ha un comportamento autonomo conseguente alla sua conoscenza, alle sue interazioni, alle sue finalità.
Il controllo dell’agente sui processi suddetti è locale.
Un po’ di storia
Il più antico agente virtuale? La tartaruga LOGO che mette in
azione un comportamento localeNon ha percezione alcuna del mondo
complessivo in cui viveÈ “responsabile” delle sue conoscenzeSi muove su una “griglia”È in sintonia con il movimento del corpo.Nasce come “strumento di pensiero” per
giovani.
Il LOGO
la programmazione è un gioco!nessuna pretesa da ingegneria del swLinguaggio interpretatoScritto su linee. Ogni linea è una chiamata di funzione di tipo Comando (con effetti ma senza valore) print,.. Operazione (con valore come output) sum, list,.. Un sottoinsieme di operazioni è costituito dai
predicati che assumono il valore true false
MSWLOGO CiaoMondo!!
label “ciaomondo!!
Scegliere la grandezza, il colore del font e scrivere
repeat 36 [label "ciaomondo!! rt 10 setpencolor repcount]
Introduzione concetti: procedura
TO BOXREPEAT 4 [FD 100 RT 90]END E se vogliamo 2 quadrati?TO BOXESREPEAT 4 [FD 100 RT 90]RT 90 PU FD 120 PD LT 90REPEAT 4 [FD 100 RT 90]END
Introduzione variabili
E se devono essere tanti? E di grandezza qualunque?
Studio delle figure poligonali e “geometria della tartaruga”.
Vediamo qualche cammino.
Qualche cammino
repeat 4 [fd 50 rt 90]repeat 5 [fd 50 rt 72]repeat 6 [fd 50 rt 60]repeat 5 [fd 50 rt 144] repeat 3 [fd 50 rt 120]Può la tartaruga decidere a priori che il cammino si chiude? Cammina su un cerchio C’è una sola corda di lunghezza fissata in una
direzione
I dati
Possono essereParoleListeVettori I numeri sono casi particolari di parole.Non c’è il sistema forte dei tipi: l’interprete
lo decide dal contesto.
I dati
due simboli particolari : per indicare “il contenuto di ..”
Si tratta di un uso molto utile per ricordare allo studente il concetto di variabile.
Quotazione o “ Si tratta di un simbolo che indica nessuna
valutazione. Il numero è un caso speciale di autovalutazione
“2 2
Assegnamento
make “ x sum :y 3ha due parametri. L’effetto sta nel porre nel
primo parametro la valutazione del secondo
Sum :y 3dove si indica di effettuare la somma tra il
contenuto di y e il numero 3
Il secondo parametro è passato per valore, il primo per indirizzo
Assegnamento
Indirizzamento indiretto make "x 45 make :x 3 print :45
Scoping Le variabili non devono essere dichiarate e sono
globali. Possono essere dichiarate locali a una procedura e vale lo scoping dinamico.
I parametri delle procedure creano variabili locali
Liste
Rispetto ai vettori sono espandibili first, last, butfirst, butlast, member, item. sentence fput, lput
Coda con le operazioni queue, dequeue, Stack con le operazioni push and popLa ricorsione è il modo naturale di trattare con le liste.
Strutture di controllo
ifelse test [ do if true list ] [do if false list]
repeat number [instruction list]
Altre istruzioni iterative ma si raccomanda l’uso ricorsivo
Esempi
make "stati [italia francia spagna]label :statiOppurelabel thing “statilabel first :statipr first [italia francia spagna]pr last [italia francia spagna]pr butfirst [italia francia spagna]show butfirst [italia francia spagna]ct
Esempi
make first [gatto cane] first [Meo Lilli]pr :gatto??make "Meo "gattopr :meo??make :meo "graffiapr :gatto ( o pr thing :meo)??
località
La tartaruga può alterare il colore sotto di sé
pu
for [red 0 255] [for [green 0 255] [setpixel (list :red :green 0) fd 1] bk 256 rt 90 fd 1 lt 90]pd al variare della grandezza della “penna”
località
Se la tartaruga non è su un piano?
Cosa vuol dire “andar diritto”?
Come si accorge di non essere su un piano?
Teorema del cammino semplice e del cammino semplice chiuso.
Strutture di controllo
OPERAZIONE [una lista di comandi] [vari dati]
show map [? * ? ] [ 5 6 7 ]
[25 36 49]
Brian Harvey
to choices :menu [ :sofar []]if emptyp :menu [print :sofar stop]foreach first :menu [(choices butfirst :menu sentence :sofar ?)]endchoices [[small medium large] [vanilla [ultra chocolate] lychee [rum raisin] ginger] [cone cup]]
commento
The program doesn't have anything about the size of the menu built in. You can use any number of categories, and any number of possibilities in each category.
Let's see you do that in four lines of Java!
Esempio
to vai ;sceglie un punto sullo schermo
pu setxy -250 + random 500 -150 + random 300 pd
rt random 360 ;sceglie l'inclinazione
end
Esempio
to galassia :num ;traccia ‘:num’ stelle
repeat :num [ vai star random 50 ] ;di ampiezza arbitraria
endto star :size repeat 5 [fd :size rt 144 ] end