def minMinVal(b, pmin, P): """ MAX MAX MIN probability scheduler: b: belief state pmin: minimum probability for every state P: pomdp """ ret = 0 inv_obs = func.inverseObservation(b.M.O) for st,pr in b.d.iteritems(): ctrl = b.M.L.names[st[0]] # controller state env = b.M.M.names[st[1]] # environment state inner = 0 for obs in P.O: obspr = P.Z[st][obs] if obs in P.Z[st] else 0 if obspr == 0: continue env = tuple(item for t in env for item in t) key = tuple(item for t in (ctrl,env) for item in t) key = key + (inv_obs[obs],) if key in pmin: inner += obspr * pmin[key] if pr * inner < ret: ret = pr * inner return ret
def avgMinVal(b, pmin, P): """ MAX AVG MIN probability value: b: belief state pmin: minimum probability for every state P: pomdp """ ret = 0 inv_obs = func.inverseObservation(b.M.O) for st,pr in b.d.iteritems(): ctrl = st[0] # controller state env = st[1] # environment state inner = 0 for obs in P.O: obspr = P.Z[st][obs] if obs in P.Z[st] else 0 if obspr == 0: continue key = (ctrl,env,inv_obs[obs]) if key in pmin: inner += obspr * pmin[key] ret += pr * inner return ret
def export2sta(P,L,M,O,head,filename): start = time.time() f = open(filename,'w') # first line #head = "(" #for i in range(N): # head += "x"+str(i)+",y"+str(i)+"," #head+="obs)\n" f.write(head+'\n') inv_obs = func.inverseObservation(O) for i,((c,e),o) in enumerate(P.S): #print 'i',i,'c',L.names[c],'e',M.names[e],'o',o line = str(i)+':('+ \ str(c)+','+ \ str(e) + ',' + \ str(inv_obs[o]) + ')\n' f.write(line) end = time.time() print "-> EXPORT TO STATES (time: "+str(end - start)+")"