Example #1
0
u = []
for i in range(0, M):
    #     u=np.hstack([u,math.pow(-1.0,i)*np.sin(2.0*dt*np.linspace(1.0,n,num=n))*uscale])
    u = np.hstack([
        u, -math.pow(-1.0, i) *
        np.sin(0.01 * dt * np.power(np.linspace(1.0, n, num=n), 2)) * uscale
    ])
    u = np.hstack([
        u,
        math.pow(-1.0, i) *
        np.array([random.uniform(-uscale, uscale) for j in range(0, int(n))])
    ])
u = np.expand_dims(np.array(u), axis=0)

print 'running system...'
xtraj_sys = sys.runSystem(x0, u)
xtraj_sys[1, :] = -np.cos(xtraj_sys[0, :])
xtraj_sys[0, :] = np.sin(xtraj_sys[0, :])
xudata = np.vstack([xtraj_sys, u])
row_sums = systeminfo['row_sums']
row_std = systeminfo['row_std']
xudata = xudata - np.array([row_sums]).T
xudata = xudata / np.array([row_std]).T

print 'running model...'
xtraj_model = xudata[0:xdim, 0:xdelay]
for i in xrange(u.shape[1] - xdelay):
    xtraj_model = np.hstack([
        xtraj_model,
        modelsys.getNextState(xtraj_model[:, -xdelay:], xudata[-udim:,
                                                               i - udelay])
print 'running ddp...'
ddp.run(x0_model, uk0)

# pr.disable()
# s = StringIO.StringIO()
# ps = pstats.Stats(pr, stream=s)
# ps.sort_stats('time', 'cumulative').print_stats(.5, 'init')
# ps.print_stats()
# ps.print_callers(.5, 'init')
# print >> f, s.getvalue()

#apply control to real system
x0 = np.array([[0.0], [0.0]])
realsys = Pendulum(systeminfo['params'])
print 'running system...'
xtraj_sys = realsys.splitAngle(realsys.runSystem(x0, ddp.uk))
print 'running model...'
xtraj_model = sys.runSystem(x0_model, uk0)
print 'running system with feedback'
xtraj_sys_feedback = realsys.splitAngle(
    realsys.runSystemWithFeedback(x0,
                                  ddp.uk,
                                  ddp.K[:, :xdim, 0, :],
                                  xtraj_model[:xdim, :],
                                  feedback_split=True))

print 'plotting...'
fig, axes = plt.subplots(nrows=xdim + 1, ncols=1)
pd.DataFrame(ddp.uk.T).plot(ax=axes[0], legend=False, title='u')
for i in xrange(xdim):
    pd.DataFrame(np.vstack(
Example #3
0
print 'hello world'

# pendulum parameters
dt=0.02
L=1.0
params={'dt':dt, 'c':0.01, 'm':0.1, 'g':9.8, 'l':L}
x0=np.array([[0.0],[0.0]])
sys=Pendulum(params)

M=10000
N=50
uscale=100.0
print 'making data...'
#make input
freq=np.logspace(-0.01,1.8,num=M)
xtraj=sys.runSystem(x0,np.zeros((1,N)))
udata=np.zeros((1,N))
for i in range(0,M/4):
    u=np.random.uniform(-uscale,uscale,size=(1,N))
    xtraj=np.dstack([xtraj,sys.runSystem(x0,u)])
    udata=np.dstack([udata,u])
for i in range(0,M):
    u=np.sin(np.random.uniform(-math.pi,math.pi)+freq[i]*dt*np.linspace(1.0,N,num=N))*np.random.uniform(-uscale,uscale)
    u=np.expand_dims(np.array(u),axis=0)
    xtraj=np.dstack([xtraj,sys.runSystem(x0,u)])
    udata=np.dstack([udata,u])

xtraj=xtraj.T
udata=udata.T

WRITEDATA=True