本项目旨在使用抽象强化学习来实现可验证的强化学习。下图是我们的核心流程图:
- 环境状态
state
所在空间被称为环境状态空间state_space
, 初始化时,核心模块ZonotopeUtils
会将state_space
划分为多个zonotope
子空间,state
输入ZonotopeUtils
后查询zonotope
集合,找到所属的zonotope
,将(state
,center_vec
和generator matrix
)组成abs_state
- 将
abs_state
输入DDPG算法训练的Actor
和Critic
中,最终输出动作action
Actor
类似一个超网络,Actor
类主体是一个神经网络,输入一组抽象状态abs_state
,输出一组线性控制器LinearControl
的参数,输出的线性控制器,再与抽象状态进行点乘运算,输出动作Critic
与普通的DDPG算法的Critic没有太大区别,主要功能判断action
是否良好
C:.
| .gitignore # 丢弃无关文件
| main.py # 启动类
| ReadMe.md # 主要文档
| requirements.txt # 依赖包
| tensorboard.bat # 用于启动tensorboard的
|
+---core # 核心包
| | agent.py # 与环境直接交互的agent
| | models.py # DDPG的Actor和Critic
| | reply_buffer.py # Reply_Buffer 用于经验再现
| | train.py # 训练脚本
| | zonotope.py # Zonotope_utils类
| | __init__.py
| |
| +---config
| | zonotope.yaml # zonotope参数配置(TODO)
+---env
| cartpole_continuous.py #连续状态空间的cartpole环境
| __init__.py
|
\---utils
| config.py # 全局参数类
| logger.py # 日志类
| misc.py # 杂项
| read_yaml.py # 读取yaml文件(TODO)
| torch_utils.py # torch工具
| __init__.py
|
如果你想使用本项目,先:
git clone https://github.com/yy6768/ZonotopeForRL.git
使用pip:
pip install -r requirements.txt
使用conda:
conda install --file requirements.txt
-
actor-critic
-
ddpg算法
-
zonotope求解 (updating)
-
Kdtree需要能够判断zonotope
- logger工具类 -> tensorboard
- yaml 读取文件(updating)
- tensorboard包装类(updating)
- config / json类配置(updating)
- 统一requirement.txt
- 工具类注释补全
- zonotope分出来
- pytest组件(updating)
- 设计实验
- 随机划分
- 倒立摆Pendulum(updating)