Utente:Enrico Ceccolini/Pianificatore automatico

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

La pianificazione automatica è una branca dell'intelligenza artificiale e, in particolare, rappresenta un'attività di problem solving[1]. L'attività di pianificazione automatica consiste nel concepire in maniera dinamica una certa sequenza di azioni che fan si che un certo obiettivo, non inizialmente verificato, venga raggiunto. Le più comuni applicazioni della pianificazione automatica sono lo scheduling, la robotica e il pilotaggio di veicoli senza equipaggio[2].

Un agente intelligente con capacità di pianificazione automatica è detto pianificatore automatico.

La pianificazione[modifica | modifica wikitesto]

Gli elementi necessari alla pianificazione sono:

  • la descrizione dell'obiettivo,
  • la descrizione dello stato iniziale del mondo,
  • la descrizione di tutte le operazioni possibili che possono essere attuate per modificare lo stato del mondo.

Dati questi elementi, un pianificatore automatico effettua una ricerca nello spazio degli stati al fine di ricavare una sequenza di azioni che, se eseguite, provocano il raggiungimento dell'obiettivo.

Esempio informale di pianificazione:

Obiettivo:

  • avere della frutta e della verdura in frigo

Stato iniziale:

  • [frigo vuoto, a casa, in pantofole]

Azioni disponibili (lista non ordinata):

  • uscire di casa,
  • indossare scarpe,
  • prendere chiavi auto,
  • raggiungere il negozio in auto,
  • raggiungere il negozio a piedi,
  • tornare a casa,
  • posizionare acquisti nel frigo,
  • entrare in negozio,
  • prendere frutta,
  • prendere verdura,
  • pagare.

Possibile soluzione (lista ordinata):

  • [1- indossare scarpe, 2- prendere chiavi auto, 3- uscire di casa, 4- raggiungere il negozio in auto, 5- entrare in negozio, 6- prendere frutta, 7- prendere verdura, 8- pagare, 9- tornare a casa, 10- posizionare acquisti nel frigo]

Altra possibile soluzione (lista ordinata):

  • [1- indossare scarpe, 2- uscire di casa, 3- raggiungere il negozio a piedi, 4- entrare in negozio, 5- prendere verdura, 6- prendere frutta, 7- pagare, 8- tornare a casa, 9- posizionare acquisti nel frigo]

Dall'esempio si può notare come:

  • le soluzioni possono essere molteplici,
  • possono essere presenti azioni che devono essere eseguite, per forza di cose, dopo altre (non posso raggiungere il negozio in auto se prima non ho preso le chiavi),
  • possono esistere delle azioni che sono invertibili (prendere la frutta e la verdura),
  • non è necessario che il piano finale contenga tutte le azioni in caso di più azioni o sequenze di azioni interscambiabili (raggiungere il negozio a piedi o in auto).
  • La teoria dietro alla pianificazione [3][modifica | modifica wikitesto]

    Pianificare consiste nell'effettuare una ricerca nello spazio delle teorie del primo ordine. Ogni stato del mondo rappresenta una teoria ottenuta tramite un insieme di assiomi del primo ordine. Le azioni corrispondono ad operatori in grado di modificare una teoria T1 in una teoria T2.

    Un operatore corrisponde ad una terna di componenti:

    • precondizioni: assiomi che devono essere in T1 perché l'azione possa essere compiuta,
    • aggiunte: assiomi che devono essere aggiunti a T1 per produrre T2,
    • cancellazioni: assiomi che devono essere rimossi da T1 per produrre T2.

    Problemi classici[modifica | modifica wikitesto]

    Il mondo dei blocchi[1]

    Si tratta di uno dei più famosi problemi di pianificazione. Il dominio del problema prevede la presenza di un tavolo con sopra dei blocchi di eguale dimensione, ognuno identificato da una lettera dell'alfabeto maiuscola. I blocchi possono essere impilati. Un braccio robotico può prendere un blocco scoperto (che non ha nessun blocco sopra) e spostarlo in un'altra posizione, o sul tavolo (azione: "MuoviSulTavolo") o su un secondo blocco (azione: "Muovi").

    L'obiettivo è quello di ottenere una particolare configurazione tra quelle possibili.

    Obiettivo( Sopra( A, B ) Λ Sopra( B, C ) )

    Stato_iniziale( Sopra( A, Tavolo ) Λ Sopra( B, Tavolo ) Λ Sopra( C, A ) Λ Blocco( A ) Λ Blocco( B ) Λ Blocco( C ) Λ Scoperto( B ) Λ Scoperto( C ) )

    Azione(

    Muovi( b, x, y ),

    PRECONDIZIONI: Sopra( b, x ) Λ Scoperto( b ) Λ Scoperto( y ) Λ Blocco( b ) Λ Blocco( y ) Λ ( b ≠ x ) Λ ( b ≠ y ) Λ ( x ≠ y ) ,

    AGGIUNTE: Sopra( b, y ) Λ Scoperto( x ),

    CANCELLAZIONI: Sopra( b, x ) Λ Scoperto( y )

    )

    Azione (

    Muovi_sul_tavolo( b, x ),

    PRECONDIZIONI: Sopra( b, x ) Λ Scoperto( b ) Λ Scoperto( y ) Λ Blocco( b ) Λ ( b ≠ x ),

    AGGIUNTE: Sopra( b, Tavolo ) Λ Scoperto( x b, x ),

    CANCELLAZIONI: Sopra( b, x )

    )

    Voci correlate[modifica | modifica wikitesto]

    Note bibliografiche[modifica | modifica wikitesto]

    Categoria:Intelligenza artificiale

    1. ^ a b Stuart J., Artificial Intelligence, Pearson, 2017.
    2. ^ Susan Reichley, 2001 News Releases - Artificial Intelligence: It's More Than a Movie, su www.jpl.nasa.gov. URL consultato il 12 settembre 2017.
    3. ^ Aldo Franco Dragoni, IA22.1. Pianificazione: ricerca in uno spazio di teorie logiche, 6 dicembre 2016. URL consultato il 18 settembre 2017.