[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-JuliaPOMDP--POMDPs.jl":3,"tool-JuliaPOMDP--POMDPs.jl":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":86,"forks":87,"last_commit_at":88,"license":89,"difficulty_score":23,"env_os":90,"env_gpu":91,"env_ram":91,"env_deps":92,"category_tags":99,"github_topics":100,"view_count":23,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":110,"updated_at":111,"faqs":112,"releases":143},2772,"JuliaPOMDP\u002FPOMDPs.jl","POMDPs.jl","MDPs and POMDPs in Julia - An interface for defining, solving, and simulating fully and partially observable Markov decision processes on discrete and continuous spaces.","POMDPs.jl 是专为 Julia 语言打造的核心接口库，旨在帮助用户定义、求解和模拟马尔可夫决策过程（MDP）及部分可观测马尔可夫决策过程（POMDP）。它主要解决了在离散或连续空间中进行不确定性决策建模时，缺乏统一编程标准的问题，让研究人员和开发者能够用一套通用的“语言”来描述复杂问题、编写求解算法并高效运行仿真。\n\n这款工具特别适合从事强化学习、机器人规划及人工智能领域的研究者与工程师使用。其独特亮点在于强大的生态兼容性：不仅提供了包含策略、信念更新器和模拟器在内的“标准库”组件（POMDPTools），还能无缝对接 Python 生态（通过 quickpomdps 或 pyjulia），并与 Julia 社区的 CommonRLInterface 及符号规划工具（SymbolicMDPs）深度集成。无论是想快速复现经典的“老虎问题”实验，还是构建复杂的现实世界决策模型，POMDPs.jl 都能提供灵活且高效的解决方案，同时欢迎社区贡献者共同参与完善。","# POMDPs\n\n| **`Linux`** | **`Mac OS X`** | **`Windows`** |\n|-----------------|---------------------|-------------------------|\n| [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml)| [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml)|\n\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-stable-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Fstable)\n[![Dev-Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-latest-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest)\n[![Gitter](https:\u002F\u002Fbadges.gitter.im\u002FJuliaPOMDP\u002FLobby.svg)](https:\u002F\u002Fgitter.im\u002FJuliaPOMDP\u002FLobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)\n[![Slack](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FChat%20on%20Slack-with%20%23pomdp--bridged-ff69b4)](https:\u002F\u002Fjulialang.org\u002Fslack\u002F)\n\nThis package provides a core interface for working with [Markov decision processes (MDPs)](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMarkov_decision_process) and [partially observable Markov decision processes (POMDPs)](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPartially_observable_Markov_decision_process).\nThe [POMDPTools](https:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Fstable\u002FPOMDPTools\u002F#pomdptools_section) package acts as a \"standard library\" for the POMDPs.jl interface, providing implementations of commonly-used components such as policies, belief updaters, distributions, and simulators.\n\nOur goal is to provide a common programming vocabulary for:\n\n1. [Expressing problems as MDPs and POMDPs](http:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Fstable\u002Fdef_pomdp). \n2. Writing solver software.\n3. Running simulations efficiently.\n\nPOMDPs.jl integrates with other ecosystems:\n\n- Python can be used to define and solve MDPs and POMDPs via the [quickpomdps](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002Fquickpomdps) package or through tables directly via [pyjulia](https:\u002F\u002Fgithub.com\u002FJuliaPy\u002Fpyjulia).\n- POMDPTools provides [two-way integration](https:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPModelTools.jl\u002Fstable\u002Fcommon_rl\u002F#CommonRLInterface-Integration) with [CommonRLInterface](https:\u002F\u002Fgithub.com\u002FJuliaReinforcementLearning\u002FCommonRLInterface.jl) and therefore with the [JuliaReinforcementLearning packages](https:\u002F\u002Fgithub.com\u002FJuliaReinforcementLearning\u002FReinforcementLearning.jl).\n- The [SymbolicMDPs package](https:\u002F\u002Fgithub.com\u002FJuliaPlanners\u002FSymbolicMDPs.jl) provides an interface to work with PDDL models.\n\nFor a detailed introduction, check out our [Julia Academy course](https:\u002F\u002Fjuliaacademy.com\u002Fp\u002Fdecision-making-under-uncertainty-with-pomdps-jl)! For help, please post in [GitHub Discussions tab](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fdiscussions). We welcome contributions from anyone! See [CONTRIBUTING.md](\u002FCONTRIBUTING.md) for information about contributing.\n\n## Installation\n\nPOMDPs.jl and associated solver packages can be installed using [Julia's package manager](https:\u002F\u002Fdocs.julialang.org\u002Fen\u002Fv1\u002Fstdlib\u002FPkg\u002F). For example, to install POMDPs.jl and the QMDP solver package, type the following in the Julia REPL:\n```julia\nusing Pkg; Pkg.add(\"POMDPs\"); Pkg.add(\"QMDP\")\n```\n\n## Quick Start\n\nTo run a simple simulation of the classic [Tiger POMDP](https:\u002F\u002Fpeople.csail.mit.edu\u002Flpk\u002Fpapers\u002Faij98-pomdp.pdf) using a policy created by the QMDP solver, you can use the following code (note that POMDPs.jl is not limited to discrete problems with explicitly-defined distributions like this):\n\n```julia\nusing POMDPs, QuickPOMDPs, POMDPTools, QMDP\n\nm = QuickPOMDP(\n    states = [\"left\", \"right\"],\n    actions = [\"left\", \"right\", \"listen\"],\n    observations = [\"left\", \"right\"],\n    initialstate = Uniform([\"left\", \"right\"]),\n    discount = 0.95,\n\n    transition = function (s, a)\n        if a == \"listen\"\n            return Deterministic(s) # tiger stays behind the same door\n        else # a door is opened\n            return Uniform([\"left\", \"right\"]) # reset\n        end\n    end,\n\n    observation = function (s, a, sp)\n        if a == \"listen\"\n            if sp == \"left\"\n                return SparseCat([\"left\", \"right\"], [0.85, 0.15]) # sparse categorical distribution\n            else\n                return SparseCat([\"right\", \"left\"], [0.85, 0.15])\n            end\n        else\n            return Uniform([\"left\", \"right\"])\n        end\n    end,\n\n    reward = function (s, a)\n        if a == \"listen\"\n            return -1.0\n        elseif s == a # the tiger was found\n            return -100.0\n        else # the tiger was escaped\n            return 10.0\n        end\n    end\n)\n\nsolver = QMDPSolver()\npolicy = solve(solver, m)\n\nrsum = 0.0\nfor (s,b,a,o,r) in stepthrough(m, policy, \"s,b,a,o,r\", max_steps=10)\n    println(\"s: $s, b: $([s=>pdf(b,s) for s in states(m)]), a: $a, o: $o\")\n    global rsum += r\nend\nprintln(\"Undiscounted reward was $rsum.\")\n```\n\nFor more examples and examples with visualizations, reference the [Examples](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest\u002Fexamples) and [Gallery of POMDPs.jl Problems](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest\u002Fgallery) sections of the documentaiton.\n\n## Documentation and Tutorials\n\nIn addition to the above-mentioned [Julia Academy course](https:\u002F\u002Fjuliaacademy.com\u002Fp\u002Fdecision-making-under-uncertainty-with-pomdps-jl), detailed documentation and examples can be found [here](http:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Fstable\u002F).\n\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-stable-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Fstable)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-latest-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest)\n\n\n## Supported Packages\n\nMany packages use the POMDPs.jl interface, including MDP and POMDP solvers, support tools, and extensions to the POMDPs.jl interface. POMDPs.jl and all packages in the JuliaPOMDP project are fully supported on Linux. OSX and Windows are supported for all native solvers\\*, and most non-native solvers should work, but may require additional configuration.\n\n#### Tools:\n\nPOMDPs.jl itself contains only the core interface for communicating about problem definitions; these packages contain implementations of commonly-used components:\n\n|  **`Package`**   |  **`Build`** | **`Coverage`** |\n|-------------------|----------------------|------------------|\n| [POMDPTools](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Ftree\u002Fmaster\u002Flib\u002FPOMDPTools) (hosted in this repository) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml) | |\n| [ParticleFilters](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FParticleFilters.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FParticleFilters.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FParticleFilters.jl) | [![codecov.io](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FParticleFilters.jl\u002Fcoverage.svg?)](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FParticleFilters.jl?) |\n\n#### Implemented Models:\n\nMany models have been implemented using the POMDPs.jl interface for various projects. This list contains a few commonly used models:\n\n|  **`Package`**   |  **`Build`** | **`Coverage`** |\n|-------------------|----------------------|------------------|\n| [POMDPModels](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPModels.jl) |[![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPModels.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPModels.jl\u002Factions\u002Fworkflows\u002FCI.yml)| [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMDPModels.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=xPLiTP3IVt)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMDPModels.jl) |\n| [LaserTag](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLaserTag.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLaserTag.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLaserTag.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLaserTag.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=Jo3cSe9K15)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLaserTag.jl) |\n| [RockSample](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FRockSample.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FRockSample.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FRockSample.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FRockSample.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=EfDZPMisVB)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FRockSample.jl) |\n| [TagPOMDPProblem](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=UNYWMYUBDL)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl) |\n| [DroneSurveillance](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDroneSurveillance.jl) | [![Build status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDroneSurveillance.jl\u002Fworkflows\u002FCI\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDroneSurveillance.jl\u002Factions) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjuliapomdp\u002FDroneSurveillance.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjuliapomdp\u002FDroneSurveillance.jl) |\n| [ContinuumWorld](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FContinuumWorld.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FContinuumWorld.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FContinuumWorld.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![Coverage Status](https:\u002F\u002Fcoveralls.io\u002Frepos\u002FJuliaPOMDP\u002FContinuumWorld.jl\u002Fbadge.svg?branch=master&service=github)](https:\u002F\u002Fcoveralls.io\u002Fgithub\u002FJuliaPOMDP\u002FContinuumWorld.jl?branch=master) |\n| [VDPTag2](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FVDPTag2.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FVDPTag2.jl\u002Factions\u002Fworkflows\u002FCi.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FVDPTag2.jl\u002Factions\u002Fworkflows\u002FCi.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FVDPTag2.jl\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FVDPTag2.jl)\n| [RoombaPOMDPs](https:\u002F\u002Fgithub.com\u002Fsisl\u002FRoombaPOMDPs.jl) | [![CI](https:\u002F\u002Fgithub.com\u002Fsisl\u002FRoombaPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsisl\u002FRoombaPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FRoombaPOMDPs.jl\u002Fgraph\u002Fbadge.svg?token=jriMhZLz9I)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FRoombaPOMDPs.jl)\n\n\n\n#### MDP solvers:\n\n|  **`Package`**   |  **`Build\u002FCoverage`** | Online\u002F\u003Cbr>Offline | Continuous\u003Cbr>States - Actions |  Rating\u003Csup>3\u003C\u002Fsup> |\n|-------------------|----------------------|----------------------|-------------------------|--|\n| [DiscreteValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl?branch=master) | Offline | N-N | ★★★★★ |\n| [LocalApproximationValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl?branch=master) | Offline | Y-N | ★★ |\n| [GlobalApproximationValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl?branch=master) | Offline | Y-N | ★★ |\n| [MCTS](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCTS.jl) (Monte Carlo Tree Search) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCTS.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCTS.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCTS.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCTS.jl?branch=master) | Online | Y (DPW)-Y (DPW) | ★★★★ |\n\n#### POMDP solvers:\n\n|  **`Package`**   |  **`Build\u002FCoverage`** | Online\u002F\u003Cbr>Offline | Continuous\u003Cbr>States-Actions-Observations |  Rating\u003Csup>3\u003C\u002Fsup> |\n|-------------------|----------------------|--------------------|---------------------------|--|\n| [QMDP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FQMDP.jl) (suboptimal) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FQMDP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FQMDP.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FQMDP.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FQMDP.jl)  | Offline | N-N-N | ★★★★★ |\n| [AdaOPS](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAdaOPS.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAdaOPS.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAdaOPS.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![codecov.io](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FAdaOPS.jl\u002Fcoverage.svg?branch=main)](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FAdaOPS.jl?branch=main) | Online | Y-N-Y | ★★★★ |\n| [ARDESPOT](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FARDESPOT.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FARDESPOT.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FARDESPOT.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FARDESPOT.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FARDESPOT.jl?branch=master) | Online | Y-N-N\u003Csup>1\u003C\u002Fsup> | ★★★★ |\n| [BasicPOMCP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBasicPOMCP.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBasicPOMCP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBasicPOMCP.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBasicPOMCP.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBasicPOMCP.jl?branch=master) | Online | Y-N-N\u003Csup>1\u003C\u002Fsup> | ★★★★ |\n| [CompressedBeliefMDPs](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml?query=branch%3Amain) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl\u002Fgraph\u002Fbadge.svg?token=FXmEi9Fscd)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl) \u003Cbr> [![paper](https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F967acf3a5b70351313a995c12e03849b\u002Fstatus.svg)](https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F967acf3a5b70351313a995c12e03849b) | Offline | Y-Y-Y | ★★★★ |\n| [NativeSARSOP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FNativeSARSOP.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FNativeSARSOP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FNativeSARSOP.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FNativeSARSOP.jl\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FNativeSARSOP.jl) | Offline | N-N-N | ★★★★ |\n| [POMCGraphSearch](https:\u002F\u002Fgithub.com\u002Fori-goals\u002FPOMCGraphSearch.jl) | | Offline | Y-Y-Y | ★★★★ |\n| [SARSOP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FSARSOP.jl)* | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FSARSOP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FSARSOP.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FSARSOP.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FSARSOP.jl?branch=master) | Offline | N-N-N | ★★★★ |\n| [GapHeuristicSearch](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl) | Online | ?-?-? | ★★★ |\n| [IncrementalPruning](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FIncrementalPruning.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FIncrementalPruning.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FIncrementalPruning.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FIncrementalPruning.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FIncrementalPruning.jl?branch=master)  | Offline | N-N-N | ★★★ |\n| [ParticleFilterTrees](https:\u002F\u002Fgithub.com\u002FWhiffleFish\u002FParticleFilterTrees.jl) (SparsePFT, PFT-DPW) | [![Build Status](https:\u002F\u002Fgithub.com\u002FWhiffleFish\u002FParticleFilterTrees.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FWhiffleFish\u002FParticleFilterTrees.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FWhiffleFish\u002FParticleFilterTrees.jl\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FWhiffleFish\u002FParticleFilterTrees.jl) | Online | Y-Y\u003Csup>2\u003C\u002Fsup>-Y | ★★★ |\n| [POMCPOW](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMCPOW.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMCPOW.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMCPOW.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMCPOW.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMCPOW.jl?branch=master) | Online | Y-Y\u003Csup>2\u003C\u002Fsup>-Y | ★★★ |\n| [POMDPSolve](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPSolve.jl)* | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPSolve.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPSolve.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMDPSolve.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FPOMDPSolve.jl) | Offline | N-N-N | ★★★ |\n| [AEMS](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAEMS.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAEMS.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAEMS.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FAEMS.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FAEMS.jl) | Online | N-N-N | ★★ |\n| [BeliefGridValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl) | Offline | N-N-N | ★★ |\n| [FIB](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FFIB.jl) (suboptimal) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FFIB.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FFIB.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FFIB.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FFIB.jl)  | Offline | N-N-N | ★★ |\n| [MCVI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCVI.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCVI.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCVI.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCVI.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCVI.jl?branch=master) | Offline | Y-N-Y | ★★ |\n| [PointBasedValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl) | [![Build status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl?branch=master) | Offline | N-N-N | ★★ |\n\n\u003Csup>1\u003C\u002Fsup>: Will run, but will not converge to optimal solution\n\n\u003Csup>2\u003C\u002Fsup>: Will run, but convergence to optimal solution is not proven, and it will likely not work well on multidimensional action spaces. See also https:\u002F\u002Fgithub.com\u002Fmichaelhlim\u002FVOOTreeSearch.jl.\n\n\n#### Reinforcement Learning:\n\n|  **`Package`**   |  **`Build\u002FCoverage`**  | Continuous\u003Cbr>States | Continuous\u003Cbr>Actions | Rating\u003Csup>3\u003C\u002Fsup> |\n|-------------------|----------------------|------------------|------------------|--|\n| [TabularTDLearning](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTabularTDLearning.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTabularTDLearning.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTabularTDLearning.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTabularTDLearning.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTabularTDLearning.jl?branch=master) | N | N | ★★ |\n| [DeepQLearning](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDeepQLearning.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDeepQLearning.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDeepQLearning.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDeepQLearning.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDeepQLearning.jl?branch=master) | Y\u003Csup>1\u003C\u002Fsup> | N | ★★★ |\n| [Crux](https:\u002F\u002Fgithub.com\u002Fsisl\u002FCrux.jl) | [![Build Status](https:\u002F\u002Fgithub.com\u002Fsisl\u002FCrux.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsisl\u002FCrux.jl) \u003Cbr> [![Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FCrux.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FCrux.jl?branch=master) | Y | Y | ★★★★ |\n\n\u003Csup>1\u003C\u002Fsup>: For POMDPs, it will use the observation instead of the state as input to the policy.\n\n\u003Csup>3\u003C\u002Fsup> Subjective rating; File an issue if you believe one should be changed\n- ★★★★★: Reliably Computes solution for every problem.\n- ★★★★: Works well for most problems. May require some configuration, or not support every edge of interface.\n- ★★★: May work well, but could require difficult or significant configuration.\n- ★★: Not recently used (unknown condition). May not conform to interface exactly, or may have package compatibility issues\n- ★: Not known to run\n\n\n### Performance Benchmarks:\n\n|  **`Package`**   | \n|-------------------|\n| [DESPOT](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDESPOT.jl\u002Fblob\u002Fmaster\u002Ftest\u002Fperflog.md) | \n\n*_These packages require non-Julia dependencies_\n\n## Citing POMDPs\n\nIf POMDPs is useful in your research and you would like to acknowledge it, please cite this [paper](http:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fv18\u002F16-300.html):\n\n```\n@article{egorov2017pomdps,\n  author  = {Maxim Egorov and Zachary N. Sunberg and Edward Balaban and Tim A. Wheeler and Jayesh K. Gupta and Mykel J. Kochenderfer},\n  title   = {{POMDP}s.jl: A Framework for Sequential Decision Making under Uncertainty},\n  journal = {Journal of Machine Learning Research},\n  year    = {2017},\n  volume  = {18},\n  number  = {26},\n  pages   = {1-5},\n  url     = {http:\u002F\u002Fjmlr.org\u002Fpapers\u002Fv18\u002F16-300.html}\n}\n```\n","# POMDPs\n\n| **`Linux`** | **`Mac OS X`** | **`Windows`** |\n|-----------------|---------------------|-------------------------|\n| [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml)| [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml)|\n\n[![文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-stable-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Fstable)\n[![开发文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-latest-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest)\n[![Gitter](https:\u002F\u002Fbadges.gitter.im\u002FJuliaPOMDP\u002FLobby.svg)](https:\u002F\u002Fgitter.im\u002FJuliaPOMDP\u002FLobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)\n[![Slack](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FChat%20on%20Slack-with%20%23pomdp--bridged-ff69b4)](https:\u002F\u002Fjulialang.org\u002Fslack\u002F)\n\n本包提供用于处理[马尔可夫决策过程（MDPs）](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMarkov_decision_process)和[部分可观测马尔可夫决策过程（POMDPs）](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPartially_observable_Markov_decision_process)的核心接口。[POMDPTools](https:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Fstable\u002FPOMDPTools\u002F#pomdptools_section)包充当POMDPs.jl接口的“标准库”，提供了策略、信念更新器、分布以及模拟器等常用组件的实现。\n\n我们的目标是为以下方面提供通用的编程词汇：\n\n1. [将问题表述为MDP和POMDP](http:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Fstable\u002Fdef_pomdp)。\n2. 编写求解软件。\n3. 高效地运行仿真。\n\nPOMDPs.jl与其他生态系统集成：\n\n- Python可以通过[quickpomdps](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002Fquickpomdps)包或通过[pyjulia](https:\u002F\u002Fgithub.com\u002FJuliaPy\u002Fpyjulia)直接以表格形式定义和求解MDP和POMDP。\n- POMDPTools提供与[CommonRLInterface](https:\u002F\u002Fgithub.com\u002FJuliaReinforcementLearning\u002FCommonRLInterface.jl)的[双向集成](https:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPModelTools.jl\u002Fstable\u002Fcommon_rl\u002F#CommonRLInterface-Integration)，从而与[JuliaReinforcementLearning包](https:\u002F\u002Fgithub.com\u002FJuliaReinforcementLearning\u002FReinforcementLearning.jl)集成。\n- [SymbolicMDPs包](https:\u002F\u002Fgithub.com\u002FJuliaPlanners\u002FSymbolicMDPs.jl)提供一个用于处理PDDL模型的接口。\n\n如需详细入门，请查看我们的[Julia Academy课程](https:\u002F\u002Fjuliaacademy.com\u002Fp\u002Fdecision-making-under-uncertainty-with-pomdps-jl)! 如有疑问，请在[GitHub讨论区](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fdiscussions)发帖。我们欢迎任何人的贡献！有关贡献的信息，请参阅[CONTRIBUTING.md](\u002FCONTRIBUTING.md)。\n\n## 安装\n\n可以使用[Julia的包管理器](https:\u002F\u002Fdocs.julialang.org\u002Fen\u002Fv1\u002Fstdlib\u002FPkg\u002F)安装POMDPs.jl及相关的求解器包。例如，要安装POMDPs.jl和QMDP求解器包，可在Julia REPL中输入以下命令：\n```julia\nusing Pkg; Pkg.add(\"POMDPs\"); Pkg.add(\"QMDP\")\n```\n\n## 快速入门\n\n要使用QMDP求解器创建的策略运行经典[Tiger POMDP](https:\u002F\u002Fpeople.csail.mit.edu\u002Flpk\u002Fpapers\u002Faij98-pomdp.pdf)的简单模拟，可以使用以下代码（请注意，POMDPs.jl并不局限于像这样具有显式定义分布的离散问题）：\n\n```julia\nusing POMDPs, QuickPOMDPs, POMDPTools, QMDP\n\nm = QuickPOMDP(\n    states = [\"left\", \"right\"],\n    actions = [\"left\", \"right\", \"listen\"],\n    observations = [\"left\", \"right\"],\n    initialstate = Uniform([\"left\", \"right\"]),\n    discount = 0.95,\n\n    transition = function (s, a)\n        if a == \"listen\"\n            return Deterministic(s) # 老虎仍待在原门后\n        else # 门被打开\n            return Uniform([\"left\", \"right\"]) # 重置\n        end\n    end,\n\n    observation = function (s, a, sp)\n        if a == \"listen\"\n            if sp == \"left\"\n                return SparseCat([\"left\", \"right\"], [0.85, 0.15]) # 稀疏分类分布\n            else\n                return SparseCat([\"right\", \"left\"], [0.85, 0.15])\n            end\n        else\n            return Uniform([\"left\", \"right\"])\n        end\n    end,\n\n    reward = function (s, a)\n        if a == \"listen\"\n            return -1.0\n        elseif s == a # 找到老虎\n            return -100.0\n        else # 老虎逃脱\n            return 10.0\n        end\n    end\n)\n\nsolver = QMDPSolver()\npolicy = solve(solver, m)\n\nrsum = 0.0\nfor (s,b,a,o,r) in stepthrough(m, policy, \"s,b,a,o,r\", max_steps=10)\n    println(\"s: $s, b: $([s=>pdf(b,s) for s in states(m)]), a: $a, o: $o\")\n    global rsum += r\nend\nprintln(\"未折现的奖励为 $rsum.\")\n```\n\n更多示例及带有可视化效果的示例，请参考文档中的[示例](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest\u002Fexamples)和[POMDPs.jl问题图库](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest\u002Fgallery)部分。\n\n## 文档和教程\n\n除了上述提到的[Julia Academy课程](https:\u002F\u002Fjuliaacademy.com\u002Fp\u002Fdecision-making-under-uncertainty-with-pomdps-jl)之外，详细的文档和示例可以在[这里](http:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Fstable\u002F)找到。\n\n[![文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-stable-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Fstable)\n[![文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-latest-blue.svg)](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest)\n\n\n## 支持的包\n\n许多包都使用POMDPs.jl接口，包括MDP和POMDP求解器、辅助工具以及对POMDPs.jl接口的扩展。POMDPs.jl及JuliaPOMDP项目中的所有包均完全支持Linux。OSX和Windows支持所有原生求解器\\*，大多数非原生求解器也应该可以工作，但可能需要额外的配置。\n\n#### 工具：\n\nPOMDPs.jl本身仅包含用于交流问题定义的核心接口；这些包包含了常用组件的实现：\n\n|  **`软件包`**   |  **`构建状态`** | **`覆盖率`** |\n|-------------------|----------------------|------------------|\n| [POMDPTools](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Ftree\u002Fmaster\u002Flib\u002FPOMDPTools)（托管于此仓库） | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml) | |\n| [ParticleFilters](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FParticleFilters.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FParticleFilters.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FParticleFilters.jl) | [![codecov.io](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FParticleFilters.jl\u002Fcoverage.svg?)](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FParticleFilters.jl?) |\n\n#### 已实现的模型：\n\n许多模型已使用 POMDPs.jl 接口为各种项目实现。此列表包含几个常用模型：\n\n|  **`软件包`**   |  **`构建状态`** | **`覆盖率`** |\n|-------------------|----------------------|------------------|\n| [POMDPModels](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPModels.jl) |[![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPModels.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPModels.jl\u002Factions\u002Fworkflows\u002FCI.yml)| [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMDPModels.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=xPLiTP3IVt)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMDPModels.jl) |\n| [LaserTag](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLaserTag.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLaserTag.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLaserTag.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLaserTag.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=Jo3cSe9K15)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLaserTag.jl) |\n| [RockSample](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FRockSample.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FRockSample.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FRockSample.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FRockSample.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=EfDZPMisVB)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FRockSample.jl) |\n| [TagPOMDPProblem](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![覆盖率](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=UNYWMYUBDL)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTagPOMDPProblem.jl) |\n| [DroneSurveillance](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDroneSurveillance.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDroneSurveillance.jl\u002Fworkflows\u002FCI\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDroneSurveillance.jl\u002Factions) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjuliapomdp\u002FDroneSurveillance.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjuliapomdp\u002FDroneSurveillance.jl) |\n| [ContinuumWorld](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FContinuumWorld.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FContinuumWorld.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FContinuumWorld.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![覆盖率](https:\u002F\u002Fcoveralls.io\u002Frepos\u002FJuliaPOMDP\u002FContinuumWorld.jl\u002Fbadge.svg?branch=master&service=github)](https:\u002F\u002Fcoveralls.io\u002Fgithub\u002FJuliaPOMDP\u002FContinuumWorld.jl?branch=master) |\n| [VDPTag2](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FVDPTag2.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FVDPTag2.jl\u002Factions\u002Fworkflows\u002FCi.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FVDPTag2.jl\u002Factions\u002Fworkflows\u002FCi.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FVDPTag2.jl\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FVDPTag2.jl)\n| [RoombaPOMDPs](https:\u002F\u002Fgithub.com\u002Fsisl\u002FRoombaPOMDPs.jl) | [![CI](https:\u002F\u002Fgithub.com\u002Fsisl\u002FRoombaPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsisl\u002FRoombaPOMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml) | [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FRoombaPOMDPs.jl\u002Fgraph\u002Fbadge.svg?token=jriMhZLz9I)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FRoombaPOMDPs.jl)\n\n\n\n#### MDP 求解器：\n\n|  **`软件包`**   |  **`构建\u002F覆盖率`** | 在线\u002F\u003Cbr>离线 | 连续\u003Cbr>状态 - 动作 | 评分\u003Csup>3\u003C\u002Fsup> |\n|-------------------|----------------------|----------------------|-------------------------|--|\n| [DiscreteValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl) \u003Cbr> [![覆盖率](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDiscreteValueIteration.jl?branch=master) | 离线 | N-N | ★★★★★ |\n| [LocalApproximationValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl) \u003Cbr> [![覆盖率](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FLocalApproximationValueIteration.jl?branch=master) | 离线 | Y-N | ★★ |\n| [GlobalApproximationValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl) \u003Cbr> [![覆盖率](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FGlobalApproximationValueIteration.jl?branch=master) | 离线 | Y-N | ★★ |\n| [MCTS](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCTS.jl)（蒙特卡洛树搜索） | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCTS.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCTS.jl) \u003Cbr> [![覆盖率](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCTS.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCTS.jl?branch=master) | 在线 | Y (DPW)-Y (DPW) | ★★★★ |\n\n#### POMDP 求解器：\n\n|  **`软件包`**   |  **`构建\u002F覆盖率`** | 在线\u002F\u003Cbr>离线 | 连续\u003Cbr>状态-动作-观测 | 评分\u003Csup>3\u003C\u002Fsup> |\n|-------------------|----------------------|--------------------|---------------------------|--|\n| [QMDP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FQMDP.jl)（次优） | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FQMDP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FQMDP.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FQMDP.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FQMDP.jl)  | 离线 | N-N-N | ★★★★★ |\n| [AdaOPS](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAdaOPS.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAdaOPS.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAdaOPS.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![codecov.io](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FAdaOPS.jl\u002Fcoverage.svg?branch=main)](http:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FAdaOPS.jl?branch=main) | 在线 | Y-N-Y | ★★★★ |\n| [ARDESPOT](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FARDESPOT.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FARDESPOT.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FARDESPOT.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FARDESPOT.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FARDESPOT.jl?branch=master) | 在线 | Y-N-N\u003Csup>1\u003C\u002Fsup> | ★★★★ |\n| [BasicPOMCP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBasicPOMCP.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBasicPOMCP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBasicPOMCP.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBasicPOMCP.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBasicPOMCP.jl?branch=master) | 在线 | Y-N-N\u003Csup>1\u003C\u002Fsup> | ★★★★ |\n| [CompressedBeliefMDPs](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl\u002Factions\u002Fworkflows\u002FCI.yml?query=branch%3Amain) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl\u002Fgraph\u002Fbadge.svg?token=FXmEi9Fscd)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FCompressedBeliefMDPs.jl) \u003Cbr> [![论文](https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F967acf3a5b70351313a995c12e03849b\u002Fstatus.svg)](https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F967acf3a5b70351313a995c12e03849b) | 离线 | Y-Y-Y | ★★★★ |\n| [NativeSARSOP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FNativeSARSOP.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FNativeSARSOP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FNativeSARSOP.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FNativeSARSOP.jl\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FNativeSARSOP.jl) | 离线 | N-N-N | ★★★★ |\n| [POMCGraphSearch](https:\u002F\u002Fgithub.com\u002Fori-goals\u002FPOMCGraphSearch.jl) | | 离线 | Y-Y-Y | ★★★★ |\n| [SARSOP](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FSARSOP.jl)* | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FSARSOP.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FSARSOP.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FSARSOP.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FSARSOP.jl?branch=master) | 离线 | N-N-N | ★★★★ |\n| [GapHeuristicSearch](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl) | [![CI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002FJuliaPOMDP\u002FGapHeuristicSearch.jl) | 在线 | ?-?-? | ★★★ |\n| [IncrementalPruning](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FIncrementalPruning.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FIncrementalPruning.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FIncrementalPruning.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FIncrementalPruning.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FIncrementalPruning.jl?branch=master)  | 离线 | N-N-N | ★★★ |\n| [ParticleFilterTrees](https:\u002F\u002Fgithub.com\u002FWhiffleFish\u002FParticleFilterTrees.jl)（SparsePFT、PFT-DPW） | [![构建状态](https:\u002F\u002Fgithub.com\u002FWhiffleFish\u002FParticleFilterTrees.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FWhiffleFish\u002FParticleFilterTrees.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FWhiffleFish\u002FParticleFilterTrees.jl\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FWhiffleFish\u002FParticleFilterTrees.jl) | 在线 | Y-Y\u003Csup>2\u003C\u002Fsup>-Y | ★★★ |\n| [POMCPOW](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMCPOW.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMCPOW.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMCPOW.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMCPOW.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMCPOW.jl?branch=master) | 在线 | Y-Y\u003Csup>2\u003C\u002Fsup>-Y | ★★★ |\n| [POMDPSolve](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPSolve.jl)* | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPSolve.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPSolve.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPOMDPSolve.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FPOMDPSolve.jl) | 离线 | N-N-N | ★★★ |\n| [AEMS](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAEMS.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAEMS.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FAEMS.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FAEMS.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FAEMS.jl) | 在线 | N-N-N | ★★ |\n| [BeliefGridValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl) \u003Cbr> [![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FBeliefGridValueIteration.jl) | 离线 | N-N-N | ★★ |\n| [FIB](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FFIB.jl)（次优） | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FFIB.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FFIB.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FFIB.jl\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002FJuliaPOMDP\u002FFIB.jl)  | 离线 | N-N-N | ★★ |\n| [MCVI](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCVI.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCVI.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FMCVI.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCVI.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FMCVI.jl?branch=master) | 离线 | Y-N-Y | ★★ |\n| [PointBasedValueIteration](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl\u002Factions\u002Fworkflows\u002FCI.yml) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FPointBasedValueIteration.jl?branch=master) | 离线 | N-N-N | ★★ |\n\n\u003Csup>1\u003C\u002Fsup>：可以运行，但不会收敛到最优解\n\n\u003Csup>2\u003C\u002Fsup>：可以运行，但无法证明会收敛到最优解，并且在多维动作空间中可能表现不佳。更多信息请参见 https:\u002F\u002Fgithub.com\u002Fmichaelhlim\u002FVOOTreeSearch.jl。\n\n\n#### 强化学习：\n\n|  **`软件包`**   |  **`构建\u002F覆盖率`**  | 连续\u003Cbr>状态 | 连续\u003Cbr>动作 | 评分\u003Csup>3\u003C\u002Fsup> |\n|-------------------|----------------------|------------------|------------------|--|\n| [TabularTDLearning](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTabularTDLearning.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTabularTDLearning.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FTabularTDLearning.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTabularTDLearning.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FTabularTDLearning.jl?branch=master) | 否 | 否 | ★★ |\n| [DeepQLearning](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDeepQLearning.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDeepQLearning.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDeepQLearning.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDeepQLearning.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FJuliaPOMDP\u002FDeepQLearning.jl?branch=master) | 是\u003Csup>1\u003C\u002Fsup> | 否 | ★★★ |\n| [Crux](https:\u002F\u002Fgithub.com\u002Fsisl\u002FCrux.jl) | [![构建状态](https:\u002F\u002Fgithub.com\u002Fsisl\u002FCrux.jl\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsisl\u002FCrux.jl) \u003Cbr> [![覆盖率状态](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FCrux.jl\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fsisl\u002FCrux.jl?branch=master) | 是 | 是 | ★★★★ |\n\n\u003Csup>1\u003C\u002Fsup>：对于部分可观察马尔可夫决策过程（POMDP），它将使用观测值而非状态作为策略的输入。\n\n\u003Csup>3\u003C\u002Fsup> 主观评分；如果您认为某个评分需要调整，请提交问题\n- ★★★★★：可靠地为每个问题计算出解。\n- ★★★★：对大多数问题效果良好。可能需要一些配置，或者不支持接口的所有功能。\n- ★★★：可能效果不错，但可能需要复杂或大量的配置。\n- ★★：近期未使用（状况未知）。可能不完全符合接口规范，或存在软件包兼容性问题。\n- ★：尚不清楚是否能够运行\n\n\n\n\n### 性能基准测试：\n\n|  **`软件包`**   | \n|-------------------|\n| [DESPOT](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FDESPOT.jl\u002Fblob\u002Fmaster\u002Ftest\u002Fperflog.md) | \n\n*_这些软件包需要非 Julia 的依赖项_\n\n## 引用 POMDPs\n\n如果 POMDPs 对您的研究有所帮助，并希望予以感谢，请引用以下论文：\n\n```\n@article{egorov2017pomdps,\n  author  = {Maxim Egorov 和 Zachary N. Sunberg 和 Edward Balaban 和 Tim A. Wheeler 和 Jayesh K. Gupta 和 Mykel J. Kochenderfer},\n  title   = {{POMDP}s.jl：不确定性下的序列决策框架},\n  journal = {机器学习研究期刊},\n  year    = {2017},\n  volume  = {18},\n  number  = {26},\n  pages   = {1-5},\n  url     = {http:\u002F\u002Fjmlr.org\u002Fpapers\u002Fv18\u002F16-300.html}\n}\n```","# POMDPs.jl 快速上手指南\n\nPOMDPs.jl 是 Julia 生态中用于处理马尔可夫决策过程（MDP）和部分可观测马尔可夫决策过程（POMDP）的核心接口包。它提供了定义问题、编写求解器以及运行高效模拟的统一编程框架。\n\n## 环境准备\n\n*   **操作系统**：Linux（完全支持）、macOS、Windows（原生求解器完全支持，部分非原生求解器可能需要额外配置）。\n*   **前置依赖**：\n    *   已安装 **Julia** (推荐最新稳定版)。\n    *   具备基础的 Julia 包管理知识。\n*   **网络建议**：由于 Julia 包服务器位于海外，国内开发者建议在首次安装包时配置国内镜像源以加速下载。\n\n> **配置国内镜像源（可选但推荐）**\n> 在 Julia REPL 中执行以下命令设置清华或中科大镜像：\n> ```julia\n> using Pkg\n> Pkg.Registry.add(RegistrySpec(url=\"https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fgit\u002Fjulia\u002FGeneral.git\"))\n> # 或者\n> ENV[\"JULIA_PKG_SERVER\"] = \"https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fjulia\"\n> ```\n\n## 安装步骤\n\n使用 Julia 自带的包管理器 `Pkg` 进行安装。你需要安装核心接口包 `POMDPs`，通常还需要安装辅助工具包 `POMDPTools` 和具体的求解器（例如 `QMDP`）。\n\n在 Julia REPL（命令行界面）中依次执行以下命令：\n\n```julia\nusing Pkg\nPkg.add(\"POMDPs\")\nPkg.add(\"POMDPTools\")\nPkg.add(\"QMDP\")\nPkg.add(\"QuickPOMDPs\")\n```\n\n*注：`QuickPOMDPs` 用于快速定义模型，`POMDPTools` 提供常用的策略、信念更新器和模拟器实现。*\n\n## 基本使用\n\n以下示例演示如何定义经典的 **Tiger POMDP** 问题（老虎门问题），使用 `QMDP` 求解器生成策略，并运行一次简单的模拟。\n\n将以下代码保存为 `.jl` 文件或直接在 REPL 中运行：\n\n```julia\nusing POMDPs, QuickPOMDPs, POMDPTools, QMDP\n\n# 1. 定义 POMDP 模型\nm = QuickPOMDP(\n    states = [\"left\", \"right\"],\n    actions = [\"left\", \"right\", \"listen\"],\n    observations = [\"left\", \"right\"],\n    initialstate = Uniform([\"left\", \"right\"]),\n    discount = 0.95,\n\n    # 状态转移函数\n    transition = function (s, a)\n        if a == \"listen\"\n            return Deterministic(s) # 听动作不会改变老虎位置\n        else # 开门动作会重置环境\n            return Uniform([\"left\", \"right\"])\n        end\n    end,\n\n    # 观测函数\n    observation = function (s, a, sp)\n        if a == \"listen\"\n            if sp == \"left\"\n                return SparseCat([\"left\", \"right\"], [0.85, 0.15])\n            else\n                return SparseCat([\"right\", \"left\"], [0.85, 0.15])\n            end\n        else\n            return Uniform([\"left\", \"right\"])\n        end\n    end,\n\n    # 奖励函数\n    reward = function (s, a)\n        if a == \"listen\"\n            return -1.0\n        elseif s == a # 找到了老虎\n            return -100.0\n        else # 老虎逃走了（选对了门）\n            return 10.0\n        end\n    end\n)\n\n# 2. 初始化求解器并计算策略\nsolver = QMDPSolver()\npolicy = solve(solver, m)\n\n# 3. 运行模拟\nrsum = 0.0\n# stepthrough 会自动处理信念状态更新和步骤迭代\nfor (s,b,a,o,r) in stepthrough(m, policy, \"s,b,a,o,r\", max_steps=10)\n    println(\"状态：$s, 信念：$([s=>pdf(b,s) for s in states(m)]), 动作：$a, 观测：$o\")\n    global rsum += r\nend\n\nprintln(\"未折扣总奖励为：$rsum\")\n```\n\n### 代码说明\n1.  **模型定义**：使用 `QuickPOMDP` 宏快速定义状态、动作、观测空间及转移\u002F观测\u002F奖励逻辑。\n2.  **求解**：实例化 `QMDPSolver` 并调用 `solve` 生成最优策略。\n3.  **仿真**：利用 `stepthrough` 迭代器自动执行“感知 - 决策 - 行动”循环，并输出每一步的状态、信念分布、动作及奖励。\n\n更多高级用法、可视化示例及自定义求解器开发，请参考官方文档中的 [Examples](https:\u002F\u002FJuliaPOMDP.github.io\u002FPOMDPs.jl\u002Flatest\u002Fexamples) 章节。","某自动驾驶初创团队正在开发城市复杂路况下的决策系统，需让车辆在传感器存在盲区（部分可观测）时，依然能安全高效地规划路径。\n\n### 没有 POMDPs.jl 时\n- **建模门槛极高**：工程师需从零编写数学公式来处理状态转移和观测概率，代码与业务逻辑耦合严重，难以应对连续空间场景。\n- **算法复用困难**：每更换一种求解器（如从 QMDP 切换到 SARSOP），都需要重写大量底层接口代码，导致迭代周期长达数周。\n- **仿真验证缺失**：缺乏统一的模拟器接口，难以在真实数据分布下快速验证策略鲁棒性，只能依赖昂贵的实车路测来发现逻辑漏洞。\n- **生态孤立**：无法直接利用现有的强化学习库或符号规划工具，团队被迫重复造轮子，研发资源被严重分散。\n\n### 使用 POMDPs.jl 后\n- **声明式建模**：利用 `QuickPOMDP` 即可用简洁的 Julia 函数定义状态、动作及不确定的观测模型，轻松支持连续空间，将建模时间从数天缩短至几小时。\n- **解耦求解器**：通过标准接口一键切换不同的后端求解器，无需修改核心业务代码，算法对比与调优效率提升十倍以上。\n- **内置仿真闭环**：直接调用 `POMDPTools` 中的模拟器进行大规模蒙特卡洛测试，在虚拟环境中提前暴露极端工况下的决策缺陷，大幅降低实车风险。\n- **生态无缝集成**：顺畅对接 CommonRLInterface 及 Python 生态，团队可灵活组合符号规划与深度学习模块，最大化复用开源社区成果。\n\nPOMDPs.jl 通过统一的不确定性决策编程范式，将研发团队从繁琐的数学实现中解放出来，使其能专注于解决真实的自动驾驶长尾难题。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FJuliaPOMDP_POMDPs.jl_7d4155d0.png","JuliaPOMDP","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FJuliaPOMDP_827de3ad.png","POMDP packages for Julia",null,"http:\u002F\u002Fjuliapomdp.github.io\u002FPOMDPs.jl\u002Flatest\u002F","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP",[82],{"name":83,"color":84,"percentage":85},"Julia","#a270ba",100,752,107,"2026-03-28T02:37:12","NOASSERTION","Linux, macOS, Windows","未说明",{"notes":93,"python":94,"dependencies":95},"该工具是基于 Julia 语言的库，主要通过 Julia 包管理器安装。完全支持 Linux 系统；macOS 和 Windows 支持所有原生求解器，非原生求解器可能需要额外配置。可通过 pyjulia 或 quickpomdps 与 Python 交互，但非强制依赖。","可选（通过 pyjulia 或 quickpomdps 集成时使用）",[96,67,97,98],"Julia (通过 Pkg 管理器安装)","POMDPTools","QMDP (示例求解器)",[13,54],[101,102,103,104,105,106,107,108,109],"pomdps","markov-decision-processes","julia","artificial-intelligence","control-systems","reinforcement-learning","reinforcement-learning-algorithms","mdps","python","2026-03-27T02:49:30.150509","2026-04-06T07:13:44.126957",[113,118,123,128,133,138],{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},12823,"POMDP 策略中的内部状态（PolicyState）应如何表示？信念（Belief）类型应如何定义？","POMDP 策略通常将观测历史映射为动作，但为了适应有限内存，需要使用内部状态来压缩历史。常见的内部状态形式包括：实际状态、过去观测的有限窗口、信念（Belief）、RNN 或有限状态机。关于类型定义，虽然曾讨论是否让 `Belief` 继承自 `PolicyState` 还是 `AbstractDistribution`，但由于 Julia 不支持抽象类型的多重继承，最终社区倾向于扩展“信念”的定义。在文献中，信念指代“足以选择动作的信息”，这不仅限于状态上的概率分布（如离散问题的概率向量），也可以是不精确的表示（如粒子滤波、高斯混合模型或基于记忆的表示）。因此，信念可以涵盖各种用于代表智能体对世界认知的数据结构。","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fissues\u002F72",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},12824,"为什么接口中需要 `domain()` 函数？为什么不直接在 `AbstractSpace` 的子类型上定义 `start()`, `next()`, `done()`？","经过社区讨论和投票，维护者决定暂时从接口中移除 `domain()` 函数。之前的考量是它可能在某些情况下方便返回数组，但最终认为直接为 `AbstractSpace` 的子类型定义迭代器接口（`start`, `next`, `done`）更为简洁。该变更已通过提交 a58e35a 和 15ee577 实施。","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fissues\u002F47",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},12825,"观测函数应该支持 P(o|s, a, s') 还是仅支持 P(o|a, s')？","目前接口主要支持 P(o|a, s') 格式。虽然 POMDP 文件格式允许更灵活的 P(o|s, a, s')，且某些算法（如 SARSOP）可以使用后者，但为了减少接口碎片化和避免混淆，社区倾向于统一使用 (a, s') 作为参数格式。不过，如果未来有特定的 Julia 实现需要 P(o|s, a, s')，可以在那时再进行调整。目前建议遵循 P(o|a, s') 以保持一致性。","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fissues\u002F25",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},12826,"是否支持使用不可变类型（immutable types）来表示状态、动作和观测以提升性能？","是的，支持不可变类型被认为能带来显著的性能提升。为此，API 进行了一些调整：原有的 `create_state()`, `create_observation()`, `create_action()` 等函数在某些场景下变得不再必要，因为不可变对象无法就地修改。同时，随机采样函数（如 `rand!`）被修改为分配并返回新的不可变对象，而不是修改传入的样本对象。此外，参数命名也进行了标准化，例如将某些地方的 'state' 统一改为更通用的 'sample'。这些变更已通过相关提交实施。","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fissues\u002F53",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},12827,"信念（Belief）应该如何初始化？是否有标准的创建函数？","信念的初始化已纳入问题定义的一部分。社区达成共识，可以通过定义一个创建函数来生成初始信念。具体实现上，可以将信念的创建逻辑放在 `belief.jl` 中。虽然有两种提议（`create_belief(pomdp)` 返回信念实例，或 `create_state_distribution(pomdp)` 返回用于转移和更新的状态分布），但最终认为信念作为问题定义的一部分是合理的，因为信念和转移分布在本质上都是状态上的分布。如果没有其他异议，该方案已被采纳并实施。","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fissues\u002F18",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},12828,"如何进行重大的接口变更？是应该在分支上开发还是直接推送到 master？","对于重大的接口变更（如修复多个相关 issue 的综合性修改），建议先在独立的分支上进行开发和讨论。例如，在一次关于接口变更的讨论中，维护者创建了一个专门分支（commit b43ecf8...）来实施更改并修改 README 格式。在确认变更方案无误且社区达成一致后，再将该分支合并到 master。这种做法有助于隔离风险并进行充分的代码审查。","https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fissues\u002F35",[144,149,153,158,163,167,172,177,182,187,192,197,202,207,212,217,222,227,232,236],{"id":145,"version":146,"summary_zh":147,"released_at":148},71479,"v1.0.0","## POMDPs v1.0.0\n\n[自 v0.9.6 以来的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.6...v1.0.0)\n\n\n**已合并的拉取请求：**\n- CompatHelper：为 Statistics 包添加版本 1 的兼容性条目（保留现有兼容性）(#525) (@github-actions[bot])\n- CompatHelper：为 POMDPTools 包添加 Statistics 版本 1 的兼容性条目（保留现有兼容性）(#526) (@github-actions[bot])\n- 向 DiscreteBelief 添加显示选项，并扩展 SparseCat (#529) (@dylan-asmar)\n- 在 README 中添加了传统的 Tag 问题 (#530) (@dylan-asmar)\n- Julia 的兼容性要求更改为 LTS 1.6 (#535) (@dylan-asmar)\n- ProgressMeter 已弃用警告及与 nothing 的比较 (#536) (@dylan-asmar)\n- 更新 README 中的徽章 (#537) (@dylan-asmar)\n- 更新 README.md (#538) (@dylan-asmar)\n- 更新文档以纳入 POMDPExamples 和 POMDPGallery (#539) (@dylan-asmar)\n- Gallery：TagPOMDP 的工作示例 (#540) (@dylan-asmar)\n- 更新 README.md 中的 Slack 链接 (#543) (@dylan-asmar)\n\n**已关闭的问题：**\n- 在 README 中列出模型包 (#241)\n- 文档分散 (#324)\n- 文档链接指向缺失页面 (#360)\n- 移除 Travis 的残留 (#363)\n- 将 GlobalApproximationValueIteration 升级为使用 POMDPTools (#400)\n- 将 BeliefGridValueIteration 升级为使用 POMDPTools (#404)\n- 将 AdaOPS 升级为使用 POMDPTools (#408)\n- 将 MCVI 升级为使用 POMDPTools (#409)\n- 将 POMDPSolve 升级为使用 POMDPTools (#410)\n- 将 IncrementalPruning 升级为使用 POMDPTools (#411)\n- 将 AEMS 升级为使用 POMDPTools (#413)\n- 将仿真示例从 POMDPExamples 移至主文档 (#417)\n- 注册 v1.0 🎉 🥳 (#421)\n- 支持 Hooks 吗？(#505)\n- POMDPs 中的 convert_o 与 POMDPModels 测试中的 POMDPTools.CommonRLIntegration 之间存在歧义 (#521)\n- Project.toml 中列出的 Julia 版本（如 1.3）导致 CI 失败 (#532)\n- 使用 HistoryRecorder 时出现 ProgressMeter 已弃用警告 (#533)\n- ExplorationPolicies 无法与 stepthrough 配合使用 (#541)\n- README 中的 Slack 链接失效 (#542)\n- TMaze + DiscreteUpdater 出现错误 (#545)\n- 需要在 stepthrough 中检查信念是否为终止状态 (#549)","2024-06-12T23:10:34",{"id":150,"version":151,"summary_zh":78,"released_at":152},71480,"v1.0.0+docs","2024-06-13T19:57:56",{"id":154,"version":155,"summary_zh":156,"released_at":157},71481,"v0.9.6","## POMDPs v0.9.6\n\n[自 v0.9.5 以来的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.5...v0.9.6)\n\n\n**已合并的拉取请求：**\n- CompatHelper：为 POMDPTools 包将 NamedTupleTools 的兼容版本提升至 0.14（保留现有兼容性）(#427) (@github-actions[bot])\n- CompatHelper：为 POMDPTools 包将 UnicodePlots 的兼容版本提升至 3（保留现有兼容性）(#428) (@github-actions[bot])\n- 修复底层 MDP 未保留状态依赖动作空间的问题 (#430) (@AlexBork)\n- 在警告中强调状态的不可变性。(#431) (@BoZenKhaa)\n- 修复文档字符串中的一个小拼写错误。(#438) (@aidmandorky)\n- 从回放模拟器中移除抽象类型 (#441) (@BoZenKhaa)\n- 为 SparseTabular(PO)MDP 添加初始状态 (#445) (@fredcallaway)\n- 为 EpsGreedyPolicy 添加状态依赖动作支持 (#450) (@NeroBlackstone)\n- 改进状态依赖动作的相关文档 (#451) (@NeroBlackstone)\n- 在 README 中添加 ParticleFilterTrees 和 NativeSARSOP (#457) (@WhiffleFish)\n- 更新 EpsGreedyPolicy 的文档 (#458) (@NeroBlackstone)\n- 从 Travis 切换到 CI (#461) (@felixmg312)\n- 更新 Readme.md 中除 VDPTag 外所有库的 CI 配置 (#462) (@felixmg312)\n- 移除弃用内容 (#466) (@WhiffleFish)\n- 更新 CI.yml 文件 (#479) (@zsunberg)\n- CompatHelper：为 POMDPTools 包将 StatsBase 的兼容版本提升至 0.34（保留现有兼容性）(#483) (@github-actions[bot])\n- `FullyObservablePOMDP` 的 `obsindex` 错误修复 (#485) (@WhiffleFish)\n- 将 MacOS\u002FWindows 重新纳入 CI (#486) (@WhiffleFish)\n- 更新 README.md 文件 (#487) (@zsunberg)\n- 字典策略 (#491) (@NeroBlackstone)\n- 播放默认设置 (#493) (@zsunberg)\n- 更新 def_updater.md 文件 (#494) (@dykim07)\n- 为所有分布检查添加了容差参数 atol (#498) (@zsunberg)\n- 移除已弃用的 CommonRLInterface.@provide 宏 (#499) (@zsunberg)\n- 添加老虎问题论文的链接 (#500) (@zsunberg)\n- 清理测试用例 (#501) (@zsunberg)\n- 尽可能使用 CommonRLInterface.AutomaticDefault (#502) (@zsunberg)\n- 使用 Random.default_rng() (#503) (@NeroBlackstone)\n- 更新 README.md 示例中的导入语句 (#506) (@BoZenKhaa)\n- 更新 README.md 文件 (#508) (@zsunberg)\n- 修正 Z 与 O 的拼写错误 (#512) (@lassepe)\n- 从 CommonRLEnv POMDP 状态中移除最新观测值 (#516) (@johannes-fischer)\n- 为 FullyObservablePOMDP 添加生成式接口 (#517) (@johannes-fischer)\n- 将 @kwdef 替换为 Base.@kwdef，以使该包兼容较旧版本的 Julia (#518) (@himanshugupta1009)\n- 更新 README.md 文件 (#520) (@BoZenKhaa)\n- 修复 pomdpmodels 97 问题 (#522) (@zsunberg)\n- 提升版本号 (#523) (@zsunberg)\n\n**已关闭的问题：**\n- 将各包整合到 POMDPTools.jl 中 (#290)\n- 添加 SparsePFT (#384)\n- 升级 ParticleFilters 以使用 POMDPTools (#398)\n- 升级 LocalApproximationValueIteration 以使用 POMDPTools (#399)\n- 升级 QMDP 以使用 POMDPTools (#402)\n- 升级 FIB 以使用 POMDPTools (#403)\n- 升级 ARDESPOT 以使用 POMDPTools (#407)\n- 升级 POMCPOW 以使用 POMDPTools (#412)\n- CompatHelper 在 POMDPTools 上无法正常工作 (#426)\n- POMDP 中的状态依赖动作空间未传递到底层 MDP","2023-10-22T18:48:18",{"id":159,"version":160,"summary_zh":161,"released_at":162},71482,"v0.9.5","## POMDPs v0.9.5\n\n[与 v0.9.4 的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.4...v0.9.5)\n\n\n**已关闭的问题：**\n- 模型更新检查清单 (#313)\n- 添加 AdaOPS (#383)\n- 有什么修复建议吗？(#388)\n- 转移和观测返回分布，而非状态或观测值 (#390)\n- 用于指向 POMDPTools 的工具的 PR (#392)\n- 接受用于指向 POMDPTools 的工具的 PR (#393)\n- 将 X 升级为使用 POMDPTools (#395)\n- 将 X 升级为使用 POMDPTools (#396)\n- 将 DiscreteValueIteration 升级为使用 POMDPTools (#397)\n- 将 MCTS 升级为使用 POMDPTools (#401)\n- 将 SARSOP 升级为使用 POMDPTools (#405)\n- 将 BasicPOMCP 升级为使用 POMDPTools (#406)\n- 将 PointBasedValueIteration 升级为使用 POMDPTools (#414)\n- 将 TabularTDLearning 升级为使用 POMDPTools (#415)\n- 将 DeepQLearning 升级为使用 POMDPTools (#416)\n- 更新 POMDPs.jl 的 README，介绍 POMDPTools (#418)\n- 更新 POMDPs.jl 文档的前言部分，介绍 POMDPTools (#419)\n- 修复 POMDPs.jl 的 CI (#420)\n- 从 `LightGraphs.jl` 迁移到 `Graphs.jl` (#424)\n\n**已合并的拉取请求：**\n- 在 README 中将 AdaOPS 添加到 POMDP 求解器列表中 (#386) (@WhiffleFish)\n- Pomdptools (#391) (@zsunberg)\n- 修复 #424 (#425) (@zsunberg)","2022-08-24T21:17:02",{"id":164,"version":165,"summary_zh":78,"released_at":166},71483,"v0.9.4+docs","2022-07-27T01:13:39",{"id":168,"version":169,"summary_zh":170,"released_at":171},71484,"v0.9.4","## POMDPs v0.9.4\n\n[与 v0.9.3 的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.3...v0.9.4)\n\n\n**已关闭的问题：**\n- 文档检查清单 (#208)\n- 在 JuliaPro 中添加求解器 (#249)\n- 将 JuliaPro 和注册表相关说明移至文档 (#320)\n- 使用 POMDPs 求解一个简单的常规经济学问题 (#326)\n- 链接至 Tiger 示例 Down (#347)\n- 切换到 GitHub Actions CI (#348)\n- POMDPs.generate_s、POMDPs.generate_sr… 以及 POMPDs.gen、PIMPDs.sampletype。(#349)\n- 在文档中优先介绍分布 (#355)\n- 包维护的 GitHub Actions (#356)\n- 将 DOCUMENTER_KEY SSH 密钥添加到所有使用 CompatHelper 的仓库 (#364)\n- LoadError: LoadError: UndefVarError: n_actions 未定义 (#365)\n- 常见问题：如果不使用随机数生成器会怎样 (#374)\n- 多维观测中只返回一个维度吗？(#377)\n- 指向 `SymbolicMDPs.jl` 以获得 PDDL 支持 (#379)\n\n**已合并的拉取请求：**\n- MassInstallAction：在此仓库安装 TagBot 工作流 (#358) (@zsunberg)\n- 移除 Travis (#359) (@zsunberg)\n- MassInstallAction：在此仓库安装 CompatHelper 工作流 (#361) (@zsunberg)\n- MassInstallAction：在此仓库安装 CompatHelper 工作流 (#362) (@zsunberg)\n- 更新 README 中的构建\u002F覆盖率状态 (#371) (@mossr)\n- 修复失效链接 (#372) (@potatoboiler)\n- 文档两阶段流程 (#375) (@zsunberg)\n- 关于不使用随机数生成器会发生什么的常见问题 (#376) (@zsunberg)\n- 新增关于 gen 和 transition 之间区别的常见问题 (#380) (@zsunberg)\n- CompatHelper：将 NamedTupleTools 的兼容版本提升至 0.14（保留现有兼容性）(#381) (@github-actions[bot])","2022-02-26T02:12:25",{"id":173,"version":174,"summary_zh":175,"released_at":176},71485,"v0.9.3+docs3","新增了关于 `transition`、`gen` 和 `@gen` 的文档。","2022-02-11T22:44:19",{"id":178,"version":179,"summary_zh":180,"released_at":181},71486,"v0.9.3+docs","更新了文档，新增以 QuickPOMDPs 和分布为中心的指南。","2021-11-19T19:55:55",{"id":183,"version":184,"summary_zh":185,"released_at":186},71487,"v0.9.3","## POMDPs v0.9.3\n\n[与 v0.9.2 的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.2...v0.9.3)\n\n\n**已关闭的问题：**\n- 为分布包添加 0.24 兼容标签 (#327)\n- GitHub 讨论区 (#329)\n- 对于没有 CartesianIndices 的 MDP，添加 stateindex 功能 (#332)\n- 使用 POMDPS.jl\u002FBasicPOMCP 求解“战舰游戏”（合法动作空间随时间变化）(#335)\n- 错误：BoundsError: 尝试访问 3 元素 Float64 数组的第 [4] 个元素 (#340)\n\n**已合并的拉取请求：**\n- CompatHelper：将“Distributions”包的兼容版本提升至“0.25” (#346) (@github-actions[bot])","2021-05-03T23:03:27",{"id":188,"version":189,"summary_zh":190,"released_at":191},71488,"v0.9.2","## POMDPs v0.9.2\n\n[与 v0.9.1 的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.1...v0.9.2)\n\n\n**已关闭的问题：**\n- JuliaPOMDP 注册流程 (#271)\n- QuickPOMDPs 主要接口运行良好 (#299)\n- 将求解器添加到 Julia 通用注册表 (#303)\n- 求解器软件包更新检查清单 (#312)\n- 求解器通用注册检查清单 (#318)\n- 为什么 POMDPs v0.9 对 Julia 的版本下限是 v1.1？(#321)\n\n**已合并的拉取请求：**\n- 添加 PointBasedValueIteration 求解器 (#317) (@dominikstrb)\n- 无需注册表说明 (#322) (@zsunberg)\n- CompatHelper：将 \"Distributions\" 的兼容性版本提升至 \"0.24\" (#323) (@github-actions[bot])","2020-12-10T03:03:12",{"id":193,"version":194,"summary_zh":195,"released_at":196},71489,"v0.9.1","## POMDPs 0.9.1\n\n[与 0.9.0 版本的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.9.0...v0.9.1)\n\n\n**已关闭的问题：**\n- 让我夜不能寐的 `gen` 替代方案 (#269)\n- 如何修复初始状态？(#316)\n\n**已合并的拉取请求：**\n- 行为准则 (#314) (@zsunberg)\n- 贡献指南 (#315) (@zsunberg)","2020-08-29T16:02:12",{"id":198,"version":199,"summary_zh":200,"released_at":201},71490,"v0.9.0","## POMDPs 0.9.0 版\n\n[与 v0.8.4 的差异](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.8.4...v0.9.0)\n\n\n**已关闭的问题：**\n- 专注于 POMDP 使得新手更难入门并实现 MDP (#150)\n- `updater=nothing` 表示传递 `o` 或初始信念\u002F`missing` (#189)\n- 信念向量表示法 (#233)\n- 文档中仅显示 `reward(m, s, a)` (#235)\n- 考虑将 `initialstate_distribution` 移至文档的通用部分 (#237)\n- 是否移除对 LiBGit2 的依赖？(#250)\n- DBN 构建语法 (#261)\n- 经典\u002F传统 MDP 和 POMDP 的 DBN (#262)\n- 关于需求和 `implemented` 的未来 (#263)\n- DDN 输入节点 (#266)\n- Julia 1.0 中的类型稳定性问题 (#279)\n- 更新定义求解器的文档 (#280)\n- 转移函数错误 (#285)\n- 修复 DDN 结构错误并迁移到 SequentialDecisionBase.jl (#292)\n- 0.9 版元问题 (#297)\n- 0.8 版经验教训 (#298)\n- 离散显式 (PO)MDP 并不十分实用 (#300)\n- 为 `gen(DDNOut(...), ...)` 提供语法糖 (#302)\n- 在 POMDPs.jl 0.9 版中移除可自定义的 DDN (#306)\n- 一致的概率分布语义（是更改初始状态还是更改动作？）(#308)\n- `gen` 和 `@gen` 的作用 (#309)\n- 推出 0.9 版本时遇到的问题 (#310)\n- 一些问题 (#311)\n\n**已合并的拉取请求：**\n- 0.9 版本 (#307) (@zsunberg)","2020-07-28T00:05:11",{"id":203,"version":204,"summary_zh":205,"released_at":206},71491,"v0.8.4","## POMDPs v0.8.4\n\n[Diff since v0.8.3](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.8.3...v0.8.4)\n\n\n**Closed issues:**\n- Checklist for All Code Working on 1.0 (#207)\n- Helpful error messages for v0.8 (#260)\n- Getting LoadError when using POMDPSolve for the Tiger Problem (#296)\n\n**Merged pull requests:**\n- Changed Quick Start example to QuickPOMDP from DiscreteExplicitPOMDP (#304) (@zsunberg)\n- WIP: @gen macro (#302) (#305) (@zsunberg)","2020-06-05T21:01:39",{"id":208,"version":209,"summary_zh":210,"released_at":211},71492,"v0.8.3","## POMDPs v0.8.3\n\n[Diff since v0.8.2](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.8.2...v0.8.3)\n\n\n**Closed issues:**\n- ubuntu  POMDPs.add_registry error (#295)","2020-04-08T11:01:27",{"id":213,"version":214,"summary_zh":215,"released_at":216},71493,"v0.8.2","## POMDPs v0.8.2\n\n[Diff since v0.8.1](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.8.1...v0.8.2)\n\n\n**Closed issues:**\n- Checklist for upgrading packages to work with v0.8 (#259)\n- Use :s′ instead of :sp for DDN Node names? (#278)\n- Error installing packages (#283)\n- better way to handle terminal states\u002Freward (#291)\n\n**Merged pull requests:**\n- add BeliefGridValueIteration (#281) (@MaximeBouton)\n- Update .travis.yml (#284) (@logankilpatrick)\n- CompatHelper: add new compat entry for \"Distributions\" at version \"0.22\" (#286) (@github-actions[bot])\n- CompatHelper: add new compat entry for \"LightGraphs\" at version \"1.3\" (#287) (@github-actions[bot])\n- CompatHelper: add new compat entry for \"NamedTupleTools\" at version \"0.12\" (#288) (@github-actions[bot])\n- Install TagBot as a GitHub Action (#289) (@JuliaTagBot)\n- CompatHelper: bump compat for \"NamedTupleTools\" to \"0.13\" (#293) (@github-actions[bot])\n- CompatHelper: bump compat for \"Distributions\" to \"0.23\" (#294) (@github-actions[bot])","2020-03-21T01:01:42",{"id":218,"version":219,"summary_zh":220,"released_at":221},71494,"v0.8.1","## [v0.8.1](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Ftree\u002Fv0.8.1) (2019-10-09)\n\n[Diff since v0.8.0](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.8.0...v0.8.1)\n\n**Closed issues:**\n\n- Strange behavior `gen\\(DDNOut\\(:o\\), ...\\)` (#272)\n- Release v0.8 before AA228 starts on 9\u002F23? (#255)\n- Error in error (#277)\n- Candidate methods should be $\\(ex.func\\) not \"transition\"? (#275)\n- Initial observations in POMDPs v0.8 (#274)\n\n**Merged pull requests:**\n\n- Update README.md (#273) ([logankilpatrick](https:\u002F\u002Fgithub.com\u002Flogankilpatrick))\n- Version 0.8.1 (#276) ([lassepe](https:\u002F\u002Fgithub.com\u002Flassepe))","2019-10-10T19:22:18",{"id":223,"version":224,"summary_zh":225,"released_at":226},71495,"v0.8.0","## [v0.8.0](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Ftree\u002Fv0.8.0) (2019-09-24)\r\n\r\nMajor changes:\r\n- Added support for arbitrary Dynamic Decision Networks (#256 )\r\n- Replaced `generate_*` with `gen` (#240)\r\n- Removed `n_states` etc (#200 )\r\n- Added history interface for beliefs (#226)\r\n- Allowed for observation-dependent rewards (#236 )\r\n\r\n[Diff since v0.7.3](https:\u002F\u002Fgithub.com\u002FJuliaPOMDP\u002FPOMDPs.jl\u002Fcompare\u002Fv0.7.3...v0.8.0)\r\n\r\n**Closed issues:**\r\n\r\n- Should n\\_actions and n\\_observations be functions of the state? (#154)\r\n\r\n**Merged pull requests:**\r\n\r\n- Version 0.8 (#270) ([zsunberg](https:\u002F\u002Fgithub.com\u002Fzsunberg))","2019-09-25T15:49:03",{"id":228,"version":229,"summary_zh":230,"released_at":231},71496,"v0.7.3","Adds some future functions and types from POMDPs v0.8 to facilitate upgrading.","2019-09-16T08:39:58",{"id":233,"version":234,"summary_zh":78,"released_at":235},71497,"v0.7.2","2018-09-14T23:12:54",{"id":237,"version":238,"summary_zh":78,"released_at":239},71498,"v0.6.10","2018-09-13T19:48:43"]