@第{JMLR:v21:18-402条, author={Eugenio Bargiacchi和Diederik M.Roijers以及Ann Now, title={AI Toolbox:用于强化学习和规划的C++库(带有Python绑定)}, journal={机器学习研究杂志}, 年份={2020年}, 体积={21}, 数字={102}, 页数={1-12}, url={ http://jmlr.org/papers/v21/18-402.html } }
// 模型可以是任何遵循10方法接口的自定义类。
汽车 模型=makeTigerProblem(); 未签名的 地平线= 10 ; // 解决方案的范围。
// 0.0是收敛参数。 它提供了一种阻止
// 如果策略在范围之前收敛,则进行计算。 AI工具箱::POMDP::增量修剪 解算器 (地平线, 0 ); // 对模型进行求解,得到最优值函数。
汽车 [bound,valueFunction]=解算器(模型); // 我们从解决方案中创建一个策略来计算代理的操作。
// 参数是模型的大小(SxAxO)和值函数。 AI工具箱::POMDP::策略 政策 ( 2 , 三 , 2 ,valueFunction); // 我们以统一的信念开始模拟。 我们从信仰中取样
// 为了获得世界的“真实”状态,因为此代码必须
// 模拟环境并控制代理。 AIToolbox::POMDP::信念 b ( 2 ); b条<< 0.5 , 0.5 ; 汽车 s=AI工具箱::样本概率(b.size(),b,rand); // 我们对第一个动作进行了采样。 id稍后将遵循策略树。
汽车 [a,id]=policy.sampleAction(b,horizon); 双重的 totalReward(总奖励)= 0 ; // 例如,我们存储总奖励。
对于 ( 整数 t=地平线- 1 ; t>时间>= 0 ; -- t){ // 我们向世界迈进了一步。
汽车 [s1,o,r]=模型。 样本SOR (s,a); totalReward+=r; // 我们根据观察结果选择下一步行动。
标准::领带 (a,id)=策略。 示例操作 (id,o,t); s=s1; // 最后,我们为下一个时间步更新世界。 }
克马克 >= 3.12 这个 boost库 >= 1.67 这个 Eigen 3.4库 . 这个 lp_solve库 (共享库 必须可用于编译Python包装器)。
sudo apt安装g++-10 cmake libboost1.71-all-dev liblpsolve55-dev lp-solve libeigen3-dev
mkdir构建 光盘 建造/ cmake。。 制作
CMAKE_BUILD_TYPE(建筑类型) # 定义生成类型 MAKE_ALL(全部制作) # 构建项目中要构建的所有内容,但Python除外。 制造_LIB # 构建整个核心C++库(MDP、POMDP等) 制造_MDP # 仅构建核心C++MDP库 制造_FMDP # 仅构建核心C++Factored/Multi-Agent和MDP库 MAKE_POMDP公司 # 仅构建核心C++POMDP和MDP库 制造_测试 # 为编译的核心库构建库的测试 制作_示例 # 使用编译的核心库构建库的示例 制造_巨蟒 # 为编译的核心库构建Python绑定 AI_PYTHON_版本 # 选择所需的Python版本(2或3)。 如果没有
# 指定时,我们尝试根据您的默认解释器进行猜测。 AI_登录_禁用 # 库日志记录代码是否在运行时启用。
# 将构建MDP和MDP Python 3绑定 cmake-DCMAKE_BUILD_TYPE=调试-DMAKE_MDP=1-DMAKE_PYTHON=1-DAI_PYTHON_VERSION=3。。
ctest测试
多西根
帮助(AIToolbox.MDP) 帮助(AIToolbox.POMDP)