Domanda

Sto cercando di creare un semplice STRIPS pianificatore based. Ho completato le funzionalità di base per il calcolo dei piani probabilistiche separati che raggiungeranno un obiettivo, ma ora sto cercando di determinare come aggregare questi piani in base alla loro azione iniziale, per determinare quali l'azione migliore "generale" è al tempo t0 .

Si consideri il seguente esempio. Utility, delimitata tra 0 e 1, rappresenta quanto bene il piano compie l'obiettivo. CF, delimitata anche tra 0 e 1, rappresenta la certezza fattore, o la probabilità che l'esecuzione del programma comporterà l'utilità proposta.

Plan1: CF=0.01, Utility=0.7
Plan2: CF=0.002, Utility=0.9
Plan3: CF=0.03, Utility=0.03

Se tutti e tre i piani, che si escludono a vicenda, iniziano con l'azione A1, come devo aggregare loro di determinare il "fitness" generale per l'utilizzo di azioni A1? Il mio primo pensiero è quello di sommare la certezza-fattori, e più che per la media delle utilità. Ti sembra giusto?

Quindi il mio risultato corrente sarà simile:

fitness(A1) = (0.01 + 0.002 + 0.03) * (0.7 + 0.9 + 0.03)/3. = 0.02282

O devo calcolare i singoli probabili utilità, e la media quelli?

fitness(A1) = (0.01*0.7 + 0.002*0.9 + 0.03*0.03)/3. = 0.00323

C'è un modo più teoricamente suono?

È stato utile?

Soluzione

Se si prende l'azione A1, poi si deve decidere quale dei 3 piani da seguire, che si escludono a vicenda. A quel punto si può calcolare che l'utilità attesa del piano 1 è

E[plan1] = Prob[plan1 succeeds]*utility-for-success 
           + Prob[plan1 fails]*utility-of-failure
         = .01*.7 + .99*0 //I assume 0
         = .007

Allo stesso modo per gli altri 2 piani. Ma, dal momento che è possibile scegliere un solo piano, la vera utilità attesa (che credo sia quello che si intende per "fitness") di agire A1 è

max(E[plan1],E[plan2],E[plan3]) = fitness(A1)

Altri suggerimenti

Credo che la funzione di fitness si sta parlando avrebbe dovuto prendere in considerazione anche tutti i piani che non hanno A1 come la prima azione. Potrebbero essere tutti essere veramente buono, in questo caso facendo A1 è una cattiva idea, o potrebbero essere terribile in questo caso facendo sguardi A1 come una buona mossa.

Guardando le vostre idee, la seconda molto più senso per me. Calcola l'utilità attesa di scegliere un piano di uniformemente a caso da tutti i piani che iniziano con A1. Questo è sotto l'ipotesi che un piano raggiunge l'utilità data o non completamente. Ad esempio, il primo piano ottiene utilità = 0.01 con probabilità 0.7 e ottiene utilità = 0 con probabilità 0.3. Questo mi sembra un'ipotesi ragionevole; è tutto si può fare se non si ha più dati su cui lavorare.

Quindi, ecco il mio suggerimento: Let A1 essere tutti i piani iniziano con A1 e ~ A1 siano tutti i piani non-inizia con A1. Poi

F(A1) = fitness(A1) / fitness(~A1)

dove il fitness è come è stato definito nel secondo esempio.

Questo dovrebbe dare un rapporto di utilità attesa per i piani che iniziano con A1 contro quelli che non lo fanno. Se è maggiore di uno, sembra A1 come una buona azione.

Se siete interessati nella pianificazione probabilistica, si dovrebbe avere uno sguardo alla href="http://en.wikipedia.org/wiki/Markov_decision_process" rel="nofollow noreferrer"> modello e algoritmi come valore iterazione.

Modifica:

In realtà, avrei dovuto puntato Markov decisione Processo (senza il PO). Mi dispiace.

Ciò che probabilmente si dovrebbe fare per il vostro problema è quello di massimizzare l'utilità attesa. Chiamare l'idoneità questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top