Skip to content

Learning linear controller by using NN which input is zonotope.

Notifications You must be signed in to change notification settings

astarforbae/ZonotopeForRL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZonotopeForRL

目录

项目概述

本项目旨在使用抽象强化学习来实现可验证的强化学习。下图是我们的核心流程图:

Core progress

  1. 环境状态state所在空间被称为环境状态空间state_space, 初始化时,核心模块ZonotopeUtils会将state_space划分为多个zonotope子空间,state输入ZonotopeUtils后查询zonotope集合,找到所属的zonotope,将(state,center_vecgenerator matrix)组成abs_state
    • 注:zonotope是高维平行四边形,由关于zonotope的形式化定义请见下图: [Niklas Kochdumper, 2022]
  2. abs_state输入DDPG算法训练的ActorCritic中,最终输出动作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

TODO

核心

  • actor-critic

  • ddpg算法

  • zonotope求解 (updating)

  • Kdtree需要能够判断zonotope

工具

  • logger工具类 -> tensorboard
  • yaml 读取文件(updating)
  • tensorboard包装类(updating)
  • config / json类配置(updating)

misc

  • 统一requirement.txt
  • 工具类注释补全
  • zonotope分出来

测试

  • pytest组件(updating)
  • 设计实验
  • 随机划分

实验

  • 倒立摆Pendulum(updating)

About

Learning linear controller by using NN which input is zonotope.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published