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 locale
Non ha percezione alcuna del mondo
complessivo in cui vive
 È “responsabile” delle sue conoscenze
 Si 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 sw
Linguaggio interpretato
Scritto 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 BOX
REPEAT 4 [FD 100 RT 90]
END
E se vogliamo 2 quadrati?
TO BOXES
REPEAT 4 [FD 100 RT 90]
RT 90 PU FD 120 PD LT 90
REPEAT 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 essere
Parole
 Liste
 Vettori
 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 3
ha due parametri. L’effetto sta nel porre nel
primo parametro la valutazione del
secondo
 Sum :y 3
 dove 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 pop
La 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 :stati
Oppure
label thing “stati
label first :stati
pr 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 "gatto
pr :meo
??
make :meo "graffia
pr :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 ?)]
end
choices [[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
end
to star :size
repeat 5 [fd :size rt 144 ]
end
Scarica

Sistemi Multi