|
@@ -5,7 +5,6 @@ from DataProcess import DataLoad
|
|
import numpy as np
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
-
|
|
|
|
KoopmanModel = torch.load('./ModelLib/DeepKoopmanModel.pt', map_location="cpu")
|
|
KoopmanModel = torch.load('./ModelLib/DeepKoopmanModel.pt', map_location="cpu")
|
|
encoder = KoopmanModel.encoder
|
|
encoder = KoopmanModel.encoder
|
|
decoder = KoopmanModel.decoder
|
|
decoder = KoopmanModel.decoder
|
|
@@ -13,43 +12,52 @@ A = KoopmanModel.A.detach().numpy()
|
|
state_dim = KoopmanModel.state_dim
|
|
state_dim = KoopmanModel.state_dim
|
|
latent_dim = KoopmanModel.latent_dim
|
|
latent_dim = KoopmanModel.latent_dim
|
|
|
|
|
|
-config = KoopmanESNConfig(
|
|
|
|
|
|
+lr = 0.5
|
|
|
|
+sr = 0.9
|
|
|
|
+sp = 0.1
|
|
|
|
+ridge = 1e-7
|
|
|
|
+train_start = 15000
|
|
|
|
+train_len = 5000
|
|
|
|
+train_warmup = 100
|
|
|
|
+predict_warmup = 100
|
|
|
|
+predict_len = 500
|
|
|
|
+
|
|
|
|
+Koopmanconfig = KoopmanESNConfig(
|
|
units=latent_dim,
|
|
units=latent_dim,
|
|
- lr=0.5,
|
|
|
|
- sr=0.9,
|
|
|
|
- sp=0.1,
|
|
|
|
- ridge=1e-7,
|
|
|
|
- train_start=19500,
|
|
|
|
- train_len=500,
|
|
|
|
- train_warmup=10,
|
|
|
|
- predict_warmup=100,
|
|
|
|
- predict_len=20,
|
|
|
|
|
|
+ lr=lr,
|
|
|
|
+ sr=sr,
|
|
|
|
+ sp=sp,
|
|
|
|
+ ridge=ridge,
|
|
|
|
+ train_start=train_start,
|
|
|
|
+ train_len=train_len,
|
|
|
|
+ train_warmup=train_warmup,
|
|
|
|
+ predict_warmup=predict_warmup,
|
|
|
|
+ predict_len=predict_len,
|
|
state_dim=latent_dim
|
|
state_dim=latent_dim
|
|
)
|
|
)
|
|
|
|
|
|
-# config = KoopmanESNConfig(
|
|
|
|
-# units=latent_dim,
|
|
|
|
-# lr=0.5,
|
|
|
|
-# sr=0.9,
|
|
|
|
-# sp=0.1,
|
|
|
|
-# ridge=1e-7,
|
|
|
|
-# train_start=10000,
|
|
|
|
-# train_len=500,
|
|
|
|
-# train_warmup=10,
|
|
|
|
-# predict_warmup=100,
|
|
|
|
-# predict_len=20,
|
|
|
|
-# state_dim=latent_dim
|
|
|
|
-# )
|
|
|
|
|
|
+ESNconfig = KoopmanESNConfig(
|
|
|
|
+ units=1000,
|
|
|
|
+ lr=lr,
|
|
|
|
+ sr=sr,
|
|
|
|
+ sp=sp,
|
|
|
|
+ ridge=ridge,
|
|
|
|
+ train_start=train_start,
|
|
|
|
+ train_len=train_len,
|
|
|
|
+ train_warmup=train_warmup,
|
|
|
|
+ predict_warmup=predict_warmup,
|
|
|
|
+ predict_len=predict_len,
|
|
|
|
+ state_dim=latent_dim
|
|
|
|
+)
|
|
|
|
|
|
KoopESNModel = KoopmanESN(
|
|
KoopESNModel = KoopmanESN(
|
|
- config=config,
|
|
|
|
|
|
+ config=Koopmanconfig,
|
|
A=A
|
|
A=A
|
|
)
|
|
)
|
|
ESNModel = ESN(
|
|
ESNModel = ESN(
|
|
- config=config
|
|
|
|
|
|
+ config=ESNconfig
|
|
)
|
|
)
|
|
-
|
|
|
|
-_, DataTrain, DataWarm, DataVal = DataLoad('./DataLib/LatentNor.csv', config)
|
|
|
|
|
|
+_, DataTrain, DataWarm, DataVal = DataLoad('./DataLib/LatentNor.csv', Koopmanconfig)
|
|
# _, DataTrain, DataWarm = DataLoad('./DataLib/DataNor.csv', config)
|
|
# _, DataTrain, DataWarm = DataLoad('./DataLib/DataNor.csv', config)
|
|
|
|
|
|
# KoopmanESN
|
|
# KoopmanESN
|
|
@@ -75,22 +83,22 @@ StatePreESN = StatePreESN_Ten.detach().numpy()
|
|
StateVal = StateVal_Ten.detach().numpy()
|
|
StateVal = StateVal_Ten.detach().numpy()
|
|
StateWarm = StateWarm_Ten.detach().numpy()
|
|
StateWarm = StateWarm_Ten.detach().numpy()
|
|
|
|
|
|
-KoopMSE = np.linalg.norm(StatePreKoop-StateVal, ord='fro')**2/np.prod(StateVal.shape)
|
|
|
|
-ESNMSE = np.linalg.norm(StatePreESN-StateVal, ord='fro')**2/np.prod(StateVal.shape)
|
|
|
|
|
|
+KoopMSE = np.linalg.norm(StatePreKoop - StateVal, ord='fro') ** 2 / np.prod(StateVal.shape)
|
|
|
|
+ESNMSE = np.linalg.norm(StatePreESN - StateVal, ord='fro') ** 2 / np.prod(StateVal.shape)
|
|
print(KoopMSE)
|
|
print(KoopMSE)
|
|
print(ESNMSE)
|
|
print(ESNMSE)
|
|
|
|
|
|
-t = np.arange(config.predict_warmup + config.predict_len)
|
|
|
|
|
|
+t = np.arange(Koopmanconfig.predict_warmup + Koopmanconfig.predict_len)
|
|
|
|
|
|
for fea in np.arange(state_dim):
|
|
for fea in np.arange(state_dim):
|
|
plt.figure(fea)
|
|
plt.figure(fea)
|
|
- plt.plot(t[:config.predict_warmup], StateWarm[:, fea],
|
|
|
|
|
|
+ plt.plot(t[:Koopmanconfig.predict_warmup], StateWarm[:, fea],
|
|
linestyle="-", color='black', label='StateWarm')
|
|
linestyle="-", color='black', label='StateWarm')
|
|
- plt.plot(t[-config.predict_len:], StatePreKoop[:, fea],
|
|
|
|
|
|
+ plt.plot(t[-Koopmanconfig.predict_len:], StatePreKoop[:, fea],
|
|
linestyle="--", color='red', label='KoopmanESNPre')
|
|
linestyle="--", color='red', label='KoopmanESNPre')
|
|
- plt.plot(t[-config.predict_len:], StatePreESN[:, fea],
|
|
|
|
|
|
+ plt.plot(t[-Koopmanconfig.predict_len:], StatePreESN[:, fea],
|
|
linestyle="--", color='green', label='ESNPre')
|
|
linestyle="--", color='green', label='ESNPre')
|
|
- plt.plot(t[-config.predict_len:], StateVal[:, fea],
|
|
|
|
|
|
+ plt.plot(t[-Koopmanconfig.predict_len:], StateVal[:, fea],
|
|
linestyle="-", color='blue', label='StateReal')
|
|
linestyle="-", color='blue', label='StateReal')
|
|
plt.legend()
|
|
plt.legend()
|
|
plt.show()
|
|
plt.show()
|