示例#1
0
def simulate(qm, nb=10000):
    print 'Simulation'

    for i in xrange(nb):

        if (i % 1000) == 0:
            print i

        xt=rd.uniform(XMIN,XMAX)
        dxt=rd.uniform(VMIN,VMAX)
        ut=rd.uniform(UMIN,UMAX)

        res=lip.simulate([xt,dxt],[ut])
        # xt1=res[0]+random.randn()*0.01 #+rd.gauss(0,0.01)
        # dxt1=res[1]+random.randn()*0.01#+rd.gauss(0,0.01)

        xt1=rd.gauss(res[0], 0.01)
        dxt1=rd.gauss(res[1], 0.01)



        xpos=Xpos.Discretize((xt))
        xvel=Xvel.Discretize((dxt))
        u=U.Discretize((ut))

        xposres=Xpos.Discretize((xt1))
        xvelres=Xvel.Discretize((dxt1))

        # print 'SIMU ',(xpos,xvel),(xposres,xvelres),(u)
        # print xt,dxt,ut,res[0],res[1],xt1,dxt1
        qm.OnlineUpdate((xpos,xvel),(xposres,xvelres),(u, ),1.0)
示例#2
0
def ComputeStep(rx):

    xi,vi,ui=XposXvel_XposXvelU.RDistrib.GetIdxFromFlat(rx)
    # ui,vi,xi=XposXvel_XposXvelU.RDistrib.GetIdxFromFlat(rx)
    # print rx, xi, vi, ui
    x=Xpos.Continuize(xi)
    v=Xvel.Continuize(vi)
    u=U.Continuize(ui)


    Xnext=lip.simulate([x,v],[u])

    #put some Gaussian value around

    pxpos=0.0
    pxvel=0.0


    #dirty hack to keep track of the relevent non zero elements indexes
    nzpos_idx={}
    nzvel_idx={}


    res={}

    for li in xrange(Xpos_XposXvelU.GetNumLElements()): #iterate on Xpos only as we assume independance

        lidx=Xpos_XposXvelU.LDistrib.GetIdxFromFlat(li)

        # pxpos=gaussian(Xpos.Continuize(lidx),Xnext[0],SIGMA_POS)
        # pxvel=gaussian(Xvel.Continuize(lidx),Xnext[1],SIGMA_VEL)

        # print Xpos.GetDist(Xpos.Continuize(lidx),Xnext[0])[0], Xvel.GetDist(Xvel.Continuize(lidx),Xnext[1])[0]
        pxpos=gaussian_dist(Xpos.GetDist(Xpos.Continuize(lidx),Xnext[0])[0],SIGMA_POS)
        pxvel=gaussian_dist(Xvel.GetDist(Xvel.Continuize(lidx),Xnext[1])[0],SIGMA_VEL)





        # condidx=[xi,vi,ui,]+lidx
        # condidx=lidx+(xi,vi,ui)

        if pxpos > _P_THRES:
            nzpos_idx[lidx[0]]=pxpos  #in a general case it should be a tuple

        if pxvel > _P_THRES:
            nzvel_idx[lidx[0]]=pxvel


    for posidx in nzpos_idx:
        for velidx in nzvel_idx:

            # print posidx,velidx
            # XposXvel_XposXvelU.SetProbLR((posidx,velidx),(xi,vi,ui),nzpos_idx[posidx]*nzvel_idx[velidx])
            # return (posidx,velidx),(xi,vi,ui),nzpos_idx[posidx]*nzvel_idx[velidx]
            res[(posidx,velidx)+(xi,vi,ui)]=nzpos_idx[posidx]*nzvel_idx[velidx]

    return res
def generate(XRANGE, DXRANGE, URANGE):
    xt = rd.uniform(XRANGE[0], XRANGE[1])
    dxt = rd.uniform(DXRANGE[0], DXRANGE[1])
    ut = rd.uniform(URANGE[0], URANGE[1])
    res = lip.simulate([xt, dxt], [ut])
    xt1 = res[0]
    dxt1 = res[1]
    return [xt, dxt, ut, xt1, dxt1]
示例#4
0
def generate(XRANGE, DXRANGE, URANGE):
    xt = rd.uniform(XRANGE[0], XRANGE[1])
    dxt = rd.uniform(DXRANGE[0], DXRANGE[1])
    ut = rd.uniform(URANGE[0], URANGE[1])
    res = lip.simulate([xt, dxt], [ut])
    xt1 = res[0]
    dxt1 = res[1]
    return [xt, dxt, ut, xt1, dxt1]
示例#5
0
def ComputeStepAll(rx):

    xi,vi,ui=XposXvel_XposXvelU.RDistrib.GetIdxFromFlat(rx)
    # ui,vi,xi=XposXvel_XposXvelU.RDistrib.GetIdxFromFlat(rx)

    x=Xpos.Continuize(xi)
    v=Xvel.Continuize(vi)
    u=U.Continuize(ui)


    Xnext=lip.simulate([x,v],[u])

    #put some Gaussian value around

    pxpos=0.0
    pxvel=0.0


    #dirty hack to keep track of the relevent non zero elements indexes
    nzpos_idx={}
    nzvel_idx={}


    res={}

    for li in xrange(Xpos_XposXvelU.GetNumLElements()):
        for ri in xrange(Xvel_XposXvelU.GetNumLElements()):
            lidx=Xpos_XposXvelU.LDistrib.GetIdxFromFlat(li)
            ridx=Xvel_XposXvelU.LDistrib.GetIdxFromFlat(li)

        # pxpos=gaussian(Xpos.Continuize(lidx),Xnext[0],SIGMA_POS)
        # pxvel=gaussian(Xvel.Continuize(lidx),Xnext[1],SIGMA_VEL)

        # print Xpos.GetDist(Xpos.Continuize(lidx),Xnext[0])[0], Xvel.GetDist(Xvel.Continuize(lidx),Xnext[1])[0]
            pxpos=gaussian_dist(Xpos.GetDist(Xpos.Continuize(lidx),Xnext[0])[0],SIGMA_POS)
            pxvel=gaussian_dist(Xvel.GetDist(Xvel.Continuize(ridx),Xnext[1])[0],SIGMA_VEL)


            res[(posidx,velidx)+(xi,vi,ui)]=pxpos * pxvel

    return res
 def apply_torque(self, u):
     self.x = simple_lip.simulate(self.x, [u], self.dt)
示例#7
0
 def apply_torque(self, u):
     self.x = simple_lip.simulate(self.x, [u], self.dt)
示例#8
0
def simulate_all(qm,nb=100):
    print 'Simulation'

    for i in xrange(nb):
        print i



        for xi in xrange(XCARD):

            for vi in xrange(VCARD):
                for ui in xrange(UCARD):


                    xt = Xpos.Continuize(xi)
                    dxt = Xvel.Continuize(vi)
                    ut = U.Continuize(ui)
                    res=lip.simulate([xt,dxt],[ut])
                    # xt1=res[0]+random.randn()*0.01 #+rd.gauss(0,0.01)
                    # dxt1=res[1]+random.randn()*0.01#+rd.gauss(0,0.01)

                    # xt1=res[0]+rd.gauss(0,0.01)
                    # dxt1=res[1]+rd.gauss(0,0.01)

                    # xt1=res[0]
                    # dxt1=res[1]


                    xt1=rd.gauss(res[0], SIGMA_POS)
                    dxt1=rd.gauss(res[1], SIGMA_VEL)

                    # n1 = rd.gauss(0, SIGMA_POS)
                    # n2 = rd.gauss(0, SIGMA_VEL)

                    # xt1=res[0] + n1
                    # dxt1=res[1] + n2


                    # xt1=rd.gauss(res[0], 0.01)
                    # dxt1=rd.gauss(res[1], 0.01)

                    # xt1 = res[0]
                    # dxt1 = res[1]


                    # print xi, vi, xt, dxt,res, xt1, dxt1

                    # xpos=Xpos.Discretize((xt))
                    # xvel=Xvel.Discretize((dxt))
                    # u=U.Discretize((ut))

                    xpos = xi
                    xvel = vi
                    u = ui

                    xposres=Xpos.Discretize((xt1))
                    xvelres=Xvel.Discretize((dxt1))

                    # xposres=Xpos.Discretize((res[0] + n1))
                    # xvelres=Xvel.Discretize((res[1] + n2))


                    # print 'SIMU ',(xpos,xvel),(xposres,xvelres),(u)
                    # print xt,dxt,ut,res[0],res[1],xt1,dxt1
                    qm.OnlineUpdate((xpos,xvel),(xposres,xvelres),(u, ),1.0)