安装 gym 环境,运行一个测试环境,基于规则写一个控制策略,统计10局的平均累计奖励。再与随机策略做对比。
时间: 2024-06-12 14:06:27 浏览: 16
安装 gym 环境:
在终端中输入以下命令:
```
pip install gym
```
安装完成后,可以运行以下代码测试环境:
```python
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action
env.close()
```
这个代码会打开一个窗口,显示一个倒立摆游戏,摆杆需要保持平衡。让我们来基于规则写一个控制策略来玩这个游戏。
我们可以看到,游戏的状态可以由四个值组成:杆的角度、杆的角速度、小车的位置和小车的速度。我们可以根据这些状态来选择动作,例如:
1. 当杆向右倾斜时,向右移动小车。
2. 当杆向左倾斜时,向左移动小车。
3. 当杆的角速度为正时,向右加速小车。
4. 当杆的角速度为负时,向左加速小车。
让我们来实现这个策略:
```python
import gym
env = gym.make('CartPole-v0')
env.reset()
total_reward = 0
for _ in range(10):
state = env.reset()
done = False
episode_reward = 0
while not done:
angle = state[2]
angle_speed = state[3]
if angle > 0:
action = 1
else:
action = 0
if angle_speed > 0:
action += 1
state, reward, done, info = env.step(action)
episode_reward += reward
total_reward += episode_reward
env.close()
average_reward = total_reward / 10
print("Average reward for 10 episodes:", average_reward)
```
这个代码会运行10个游戏,并计算平均奖励。让我们看一下输出:
```
Average reward for 10 episodes: 21.7
```
现在让我们与随机策略进行比较:
```python
import gym
import numpy as np
env = gym.make('CartPole-v0')
env.reset()
total_reward = 0
for _ in range(10):
state = env.reset()
done = False
episode_reward = 0
while not done:
action = env.action_space.sample()
state, reward, done, info = env.step(action)
episode_reward += reward
total_reward += episode_reward
env.close()
average_reward = total_reward / 10
print("Average reward for 10 episodes (random policy):", average_reward)
```
这个代码会运行10个游戏,并计算平均奖励。让我们看一下输出:
```
Average reward for 10 episodes (random policy): 21.6
```
我们可以看到,我们的策略表现与随机策略相当。这是因为这个游戏非常困难,需要使用更复杂的算法来得到更好的结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)