zhuchangshuo 2 weeks ago
parent
commit
ad239b6be0

File diff suppressed because it is too large
+ 1374 - 0
Paper/A novel hybrid model based on Empirical Mode Decomposition and Echo.pdf


File diff suppressed because it is too large
+ 475 - 0
Paper/Echo state network and classical statistical techniques for time series.pdf


BIN
Paper/Investigation of proper orthogonal decomposition for echo state.pdf


+ 6 - 0
TrajTrans/StateOnly/DeepKoopMan/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
+  </component>
+</project>

+ 2 - 1
TrajTrans/StateOnly/DeepKoopMan/DeepKoopmanModel.py

@@ -60,7 +60,8 @@ class DeepKoopMan(nn.Module):
 
     def forward(self, state):
         latent = self.encoder(state)
-        latent_next_pre = torch.matmul(latent, self.A)
+        dlatent_plus_dt = torch.matmul(latent, self.A)
+        latent_next_pre = latent + dlatent_plus_dt
         state_next_pre = self.decoder(latent_next_pre)
         state_pre = self.decoder(latent)
         return state_pre, state_next_pre

+ 6 - 6
TrajTrans/StateOnly/DeepKoopMan/DeepKoopmanTest.py

@@ -36,10 +36,10 @@ _, OutputState_pre = model(InputState)
 
 OutputState_pre = OutputState_pre.detach().numpy()
 
-feature = 0
 
-plt.figure()
-time_step = np.arange(OutputState.shape[0])
-plt.plot(time_step, OutputState[:, feature], color='blue', linestyle='-')
-plt.plot(time_step, OutputState_pre[:, feature], color='red', linestyle='--')
-plt.show()
+for feature in np.arange(config.state_dim):
+    plt.figure(feature)
+    time_step = np.arange(OutputState.shape[0])
+    plt.plot(time_step, OutputState[:, feature], color='blue', linestyle='-')
+    plt.plot(time_step, OutputState_pre[:, feature], color='red', linestyle='--')
+    plt.show()

+ 1 - 1
TrajTrans/StateOnly/DeepKoopMan/DeepKoopmaxMain.py

@@ -8,7 +8,7 @@ torch.random.manual_seed(42)
 config = DeepKoopManConfig(
     state_dim=13,
     latent_dim=100,
-    hidden_dim=100
+    hidden_dim=100,
 )
 
 device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

BIN
TrajTrans/StateOnly/DeepKoopMan/ModelLib/DeepKoopmanModel.pt


BIN
TrajTrans/StateOnly/DeepKoopMan/__pycache__/DeepKoopmanModel.cpython-311.pyc


+ 6 - 0
TrajTrans/StateOnly/ESN/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
+  </component>
+</project>

+ 2 - 1
TrajTrans/StateOnly/ESN/BaseModel/ESNModel.py

@@ -19,7 +19,8 @@ class ESN:
             units=self.config.units,
             lr=self.config.lr,
             sr=self.config.sr,
-            rc_connectivity=self.config.sp
+            rc_connectivity=self.config.sp,
+            activation='identity'
         )
 
         readout = Ridge(ridge=self.config.ridge)

BIN
TrajTrans/StateOnly/ESN/BaseModel/__pycache__/ESNModel.cpython-311.pyc


+ 43 - 35
TrajTrans/StateOnly/ESN/KoopmanESNMain.py

@@ -5,7 +5,6 @@ from DataProcess import DataLoad
 import numpy as np
 import matplotlib.pyplot as plt
 
-
 KoopmanModel = torch.load('./ModelLib/DeepKoopmanModel.pt', map_location="cpu")
 encoder = KoopmanModel.encoder
 decoder = KoopmanModel.decoder
@@ -13,43 +12,52 @@ A = KoopmanModel.A.detach().numpy()
 state_dim = KoopmanModel.state_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,
-    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
 )
 
-# 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(
-    config=config,
+    config=Koopmanconfig,
     A=A
 )
 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)
 
 # KoopmanESN
@@ -75,22 +83,22 @@ StatePreESN = StatePreESN_Ten.detach().numpy()
 StateVal = StateVal_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(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):
     plt.figure(fea)
-    plt.plot(t[:config.predict_warmup], StateWarm[:, fea],
+    plt.plot(t[:Koopmanconfig.predict_warmup], StateWarm[:, fea],
              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')
-    plt.plot(t[-config.predict_len:], StatePreESN[:, fea],
+    plt.plot(t[-Koopmanconfig.predict_len:], StatePreESN[:, fea],
              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')
     plt.legend()
     plt.show()

+ 2 - 1
TrajTrans/StateOnly/ESN/KoopmanESNModel.py

@@ -79,7 +79,8 @@ class KoopmanESN:
             sr=self.config.sr,
             W=W,
             input_scaling=1.0,
-            Win=Win
+            Win=Win,
+            activation='identity'
         )
 
         readout = Ridge(ridge=self.config.ridge)

+ 44 - 13
TrajTrans/StateOnly/ESN/KoopmanESNTest.py

@@ -15,39 +15,70 @@ latent_dim = KoopmanModel.latent_dim
 
 MonteNum = 100
 MinStart = 0
-MaxStart = 25000
+MaxStart = 20000
 StartList = np.random.randint(MinStart, MaxStart, size=MonteNum)
 ESNMSEList = []
 KoopMSEList = []
 KoopTime = 0
 ESNTime = 0
 count = 0
+
+lr = 0.5
+sr = 0.9
+sp = 0.1
+ridge = 1e-7
+# 短时预测
+# train_len = 500
+# train_warmup = 10
+# predict_warmup = 100
+# predict_len = 20
+# 长期预测
+train_len = 5000
+train_warmup = 100
+predict_warmup = 100
+predict_len = 1000
+
 for train_start in StartList:
     count += 1
     print(count)
-    config = KoopmanESNConfig(
+
+    Koopmanconfig = KoopmanESNConfig(
         units=latent_dim,
-        lr=0.5,
-        sr=0.9,
-        sp=0.1,
-        ridge=1e-7,
+        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
+    )
+
+    ESNconfig = KoopmanESNConfig(
+        units=1000,
+        lr=lr,
+        sr=sr,
+        sp=sp,
+        ridge=ridge,
         train_start=train_start,
-        train_len=500,
-        train_warmup=10,
-        predict_warmup=100,
-        predict_len=20,
+        train_len=train_len,
+        train_warmup=train_warmup,
+        predict_warmup=predict_warmup,
+        predict_len=predict_len,
         state_dim=latent_dim
     )
 
     KoopESNModel = KoopmanESN(
-        config=config,
+        config=Koopmanconfig,
         A=A
     )
     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)
 
     # KoopmanESN

BIN
TrajTrans/StateOnly/ESN/ModelLib/DeepKoopmanModel.pt


BIN
TrajTrans/StateOnly/ESN/__pycache__/KoopmanESNModel.cpython-311.pyc


+ 123 - 0
TrajTrans/StateOnly/SingleStep/AutoEncoder/.idea/workspace.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="3f1b5fc4-fdd8-4cbf-8ead-f67db462e80c" name="更改" comment="" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Python Script" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 2
+}</component>
+  <component name="ProjectId" id="2ytGiOGJDs9TjDX7dLoo4YzsOmV" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "last_opened_file_path": "E:/Project/RCKoopman/TrajTrans/StateOnly/SingleStep/DeepKoopMan"
+  }
+}]]></component>
+  <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\Project\RCKoopman\TrajTrans\AutoEncoder\DataLib" />
+    </key>
+  </component>
+  <component name="RunManager" selected="Python.AutoEncoderTest">
+    <configuration name="AutoEncoderTest" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
+      <module name="AutoEncoder" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/AutoEncoderTest.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+      <option name="REDIRECT_INPUT" value="false" />
+      <option name="INPUT_FILE" value="" />
+      <method v="2" />
+    </configuration>
+    <configuration name="DataProcess" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
+      <module name="AutoEncoder" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/DataProcess.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+      <option name="REDIRECT_INPUT" value="false" />
+      <option name="INPUT_FILE" value="" />
+      <method v="2" />
+    </configuration>
+    <configuration name="HyperParamSearch" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
+      <module name="AutoEncoder" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/HyperParamSearch.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+      <option name="REDIRECT_INPUT" value="false" />
+      <option name="INPUT_FILE" value="" />
+      <method v="2" />
+    </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="Python.AutoEncoderTest" />
+        <item itemvalue="Python.HyperParamSearch" />
+        <item itemvalue="Python.DataProcess" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="默认任务">
+      <changelist id="3f1b5fc4-fdd8-4cbf-8ead-f67db462e80c" name="更改" comment="" />
+      <created>1750646582858</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1750646582858</updated>
+    </task>
+    <servers />
+  </component>
+</project>

BIN
~$毕设论文终稿.docx


Some files were not shown because too many files changed in this diff