コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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)+")"