POMDP文件格式

如何为POMDP解决POMDP问题编码

关于此格式

本页描述了将POMDP问题编码为“POMDP-solve”程序的输入文件的文件格式。其他人的代码也采用了相同的格式,因此该文件规范的适用范围更广。此格式的示例可以在POMDP示例域页面.

POMDP文件语法

有关此语法的更详细和正式的规范文件格式请参阅POMDP文件语法第页.

一般要求

  • 所有浮点数必须至少指定一个数字小数点前一位,小数点后一位。
  • 处理从“#”符号到线末端的所有内容作为评论。它们可以出现在文件中的任何位置。

序言

以下5行必须出现在文件的开头。只要符合所有规范,它们可以以任何顺序出现转移概率、观测概率和回报。

折扣:%f价值:[奖励,成本]状态:[%d,<状态列表>]操作:[%d,<操作列表>]观察:[%d,<观察列表>]

状态、动作和/或观察的定义可以是一个数字,指示有多少个,或者可以是字符串列表,每个条目一个。这些助记符不能以数字开头。例如,两者都:

动作:4动作:东北-东南-西

将导致定义4个操作。唯一的区别是在后者中,可以在该文件中引用操作用助记的名字。即使使用助记符名称,稍后引用也可以使用数字,尽管它必须与字符串列表中以0开头的位置编号。这个在列表中,数字是从左到右连续分配的从零开始。

列出状态、操作或观察时,请使用一个或多个空格字符是分隔符(空格、制表符或换行符)。当一个数字将引用单个元素,而不是枚举由从0开始的连续整数到。

起始信念状态(可选)

在序言之后,有可选的规范启动状态。(注意,对于某些精确的解决方案,此项被忽略算法。)开始时有许多不同的格式状态。您可以:

  • 枚举每个状态的概率,
  • 指定单个启动状态,
  • 给出各状态的均匀分布,或
  • 给出状态子集的均匀分布。
对于最后一个,您也可以指定一个状态列表包括,或要排除的状态列表。例如:

开始:0.3 0.1 0.0 0.2 0.5开始:统一启动:第一状态开始时间:5开始包括:第一状态第三状态开始包括:1 3开始排除:第五州第七州

状态转移概率

在最初的五行和可选的启动状态之后转移概率、观测概率的具体说明奖励就会出现。这些规范可以以任何顺序出现可以混合使用。未在假定文件为零。

您还可以多次指定特定的概率或奖励。最后出现在文件中的定义将影响。这便于指定更通用的异常规范。

要指定单个转移概率:

T: <操作>:<开始状态>:<结束状态>%f

动作、状态或观察可以以这种格式出现的任何地方,你也可以把通配符'*“这意味着这是千真万确的可能出现在此处的条目。例如:

T: 5:*:0 1.0

被解释为动作5始终将系统状态移动到状态0,无论启动状态如何(即,对于所有可能的启动状态。)

要指定特定动作的转换矩阵的单行,请执行以下操作:

T: <操作>:<启动状态>%f%f…%(f)

每个可能的下一个状态只有一个概率入口。这允许定义特定的特定转移概率仅启动状态。助记符代替了概率列表可能会出现单词“uniform”。在这种情况下,每个转换对应于下一个状态将被分配为概率1/状态。再一次,一个asterick在action或start-state位置将指示所有可能出现在该位置的条目。

要为特定操作指定整个转换矩阵,请执行以下操作:

T: <操作>%f%f…%(f)%f%f…%(f)...%f%f…%(f)

其中每行对应于一个开始状态列指定一个结束状态。每个条目必须用一个或多个空白字符与下一个字符隔开。这个状态编号从左到右表示结束状态,从上到起始状态的底部。新行仅用于格式化方便且不影响最终矩阵结果。唯一的限制是必须指定NxN值,其中“N”是州数。

此外,还有一些记忆约定可以用于完整显式矩阵的位置:

  • 身份
  • 制服

请注意制服意味着转换矩阵的每一行设置为均匀分布。这个身份会产生助记作用在一个转移矩阵中,使底层状态保持不变可能的启动状态(即单位矩阵)。

观察概率

观测概率的指定方式与转移概率。要指定单个观测概率:

O:<动作>:<结束状态>:<观察>%f

在任何位置都允许使用星号通配符。

要指定特定动作的观察概率矩阵的行,请执行以下操作:

O:<操作>:<结束状态>%f%f…%(f)

这指定了观察每个可能观察的概率用于特定操作和结束状态。记忆捷径制服也可能出现在这个地方,并将其编码为观察没有得到关于潜在状态的信息。

要为动作指定整个观测概率矩阵,请执行以下操作:

O: <操作>%f%f…%(f)%f%f…%(f)...%f%f…%(f)

除了数字外,格式与转换矩阵类似条目数必须为“N x O”,其中“N”是状态数,“O”是观察次数。这里也是制服助记符可以替换对于enire矩阵。在这种情况下,它将分配每行的每个条目概率1/#观测值。

即时奖励

指定个人奖励:

R: <操作>:<开始状态>:<结束状态>:>观察>%f

对于任何一个条目,状态、动作、,或观察值表示将扩展到所有现有实体。

有两种其他形式可以指定奖励:

R: <操作>:<开始状态>:<结束状态>%f%f…%(f)

这将为特定的奖励矩阵指定特定的行行动、开始状态和结束状态,其中奖励独立于观察结果。

最后一份奖励说明表是

R: <操作>:<启动状态>%f%f…%(f)%f%f…%(f)...%f%f…%(f)

它允许您为特定动作指定整个奖励矩阵和启动状态组合。当奖励仅取决于在开始状态上,与结束状态和观察无关。