我正在使用自動駕駛儀進行飛行模擬,所以我需要制作一個 DQN(深度 Q 網絡)來控制自動駕駛儀,但我不知道最佳狀態數。模擬是統一完成的,所有的環境和物理也都完成了,DQN 只需要輸出 (W,A,S,D) 來控制飛機,我找到了一個控制 CARTPOLE 的代碼,理論上應該可以訓練和控制飛機就好了,唯一的問題是我不知道我選擇的狀態是否正確。這是代碼: import os import random import gym import numpy as np from collections import deque from keras.models import Sequential from keras.layers import Dense from keras.optimizers import Adam class DQNAGENT: def __init__(self,state_size,_action_size): self.state_size = state_sizes self.action_size = actions_sizes self.memory = deque(maxlen=2000) self.gamma = 0.95 self.epsilon = 1.00 self.epsilon_decay_rate = 0.995 self.epsilon_min = 0.01 self.learning_rate = 0.001 self.model = self.build_model() def buildmodel(self): model = Sequential() model.add(Dense(24, input_dim=self.state_size, activation='relu')) model.add(Dense(24, activation='relu')) model.add(Dense(self.action_size, activation='linear')) model.compile(loss='mse',optimizer=Adam(lr=self.learning_rate)) return model def remember(self, state, action, reward, next_state, done): self.memory.append((state, action, reward, next_state, done)) def act(self, state): if np.random.rand() self.epsilon_min: self.epsilon *= self.epsilon_decay_rate def load(self, name): self.model.load_weights(name) def save(self, name): self.model.save_weights(name)代理類是將要接受培訓的代理,這些功能沒問題,但在Main中,狀態大小設置為零,因為我還不知道這三行的數量我無法轉換為能夠運行我的項目因為它從 Gym 包中獲取這些變量,但我需要手動輸入這些變量,我的環境將包括空速、飛機位置、機場位置等,這就是我想寫的,所以如果有人能幫我弄清楚這是否正確甚至更好地告訴我什么是最佳狀態,我們將非常感激。
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
狀態只是您的代理在當前“框架/步驟”中擁有的信息。
這是代理選擇動作所需要的agent.act(state)
。
在CartPole示例中,狀態是一個包含 4 個值的框:
推車位置
推車速度
極角
尖端極速
在您的飛行自動駕駛儀中,狀態將是您的代理人做出決定所需的信息,例如:
當前緯度
現在的速度
...
- 1 回答
- 0 關注
- 89 瀏覽
添加回答
舉報
0/150
提交
取消