状态图执行装置的制作方法

文档序号:17932041发布日期:2019-06-15 00:58阅读:194来源:国知局
状态图执行装置的制作方法

本发明涉及生成并执行状态图的数据的状态图执行装置。



背景技术:

近年来,触摸面板、语音识别或者空间手势识别等的用户接口设备已经实用化。另外,已开发出以车载导航系统为代表的、将这些用户接口设备组合多个而成的多模式应用。以往,作为高效地结合多个用户接口设备的多模式接口的设计方案之一,已广泛应用状态图(或者状态机)。

例如,在非专利文献1中记载有状态图的xml(extensiblemarkuplanguage)记述方式即statechartxml(scxml)。另外,在非专利文献2中记载有unifiedmodeliglanguage(uml)中的状态图的绘制规则。

另外,以往提出了将设计出的状态图作为程序而高效地执行的各种方式。例如,在专利文献1中记载有执行用表表现的状态图的方式、以及根据执行状态图的结果决定状态推移的优先顺序。另外,在专利文献2中记载有利用联想排列动态地执行状态图的方式。

【现有技术文献】

【专利文献】

【专利文献1】日本特开平11-24907号公报

【专利文献2】美国专利申请公开第20130138593号说明书

【非专利文献】

【非专利文献1】“statechartxml(scxml):statemachinenotationforcontrolabstraction”,[online],worldwidewebconsortium,インターネット<url:https://www.w3.org/tr/scxml/>

【非专利文献2】“unifiedmodelinglanguage(uml)version2.5”,[online],objectmanagementgroup,インターネット<url:http://www.omg.org/spec/uml/2.5/>



技术实现要素:

发明要解决的问题

在以往的方式中,当在计算机上执行具有层级结构且具有庞大状态数的状态图时,状态图的数据结构未被优化,因而存在执行速度下降的问题。

例如,在专利文献1中记载有如下方式:根据在执行用表表现的状态图时的每个状态的状态推移历史和每个事件的事件成立历史,按照状态图的每个状态决定向另一状态的推移顺序和事件的成立顺序。但是,没有记载如何利用推移顺序和成立顺序在计算机的存储器中最佳地配置数据。并且,仅对表型的状态图具有记载,没有记载在具有平行状态和层级状态的状态图中决定推移目的地的优先度并最佳地执行的方法。

另外,在专利文献2中记载有为了根据状态名的字符串确定状态数据在存储器中的位置,将状态图的数据作为动态树(tree)结构保持。但是,在动态地构成树的情况下,在状态数庞大时,具有关联性的状态数据被配置在存储器中较远的位置,由此,有可能使高速缓存命中率下降,使状态图的执行处理速度降低。并且,在状态推移的处理中,至少需要基于二叉树的状态数据的搜索处理,因而在状态数增加时,处理时间变长。

本发明正是为了解决如上所述的问题而完成的,其目的在于,快速执行状态图。

用于解决问题的手段

本发明的状态图执行装置具有:二进制数据生成部,其使与表现状态推移的状态图相关的状态图信息成为二进制数据;以及状态图执行部,其根据二进制数据执行状态图的处理,二进制数据生成部具有:状态图信息读取部,其读取状态图信息,生成构成状态图的数据;关联度计算部,其计算构成状态图的数据间的关联度;单个数据二进制化部,其将构成状态图的数据二进制化;最佳排列计算部,其根据由关联度计算部计算出的关联度,计算构成状态图的数据的排列;偏移设定部,其设定偏移,偏移表示将由单个数据二进制化部二进制化后的数据按照由最佳排列计算部计算出的排列进行排列时的位置;以及二进制数据统合部,其对由单个数据二进制化部二进制化并由偏移设定部设定了偏移的数据,按照由最佳排列计算部计算出的排列进行统合而成为二进制数据。

发明效果

根据本发明,根据构成状态图的数据间的关联度计算数据的排列,生成设定了偏移的二进制数据,由此,能够根据该二进制数据快速执行状态图。

附图说明

图1是示出本发明的实施方式1的状态图执行装置的结构例的框图。

图2是示出本发明的实施方式1的状态图执行装置的动作例的流程图。

图3a是示出本发明的实施方式1的状态图的一例的图,图3b是示出记述有图3a的状态图的状态图信息的图。

图4是由图3a所示的状态图得到的关联度的表。

图5是示出本发明的实施方式1的状态图的另一例的图。

图6是由图5所示的状态图得到的关联度的表。

图7是示出本发明的实施方式1的状态图的另一例的图。

图8是由图7所示的状态图得到的关联度的表。

图9是示出本发明的实施方式1的状态图的另一例的图。

图10是由图9所示的状态图得到的关联度的表。

图11是示出本发明的实施方式1的状态图的修正频度的曲线图。

图12是说明本发明的实施方式1的状态图执行装置的单个数据二进制化部进行的动作的图。

图13a、图13b和图13c是示出图3b的状态图信息中包含的各个信息的图。

图14是说明本发明的实施方式1的状态图执行装置的最佳排列计算部进行的动作的图。

图15是说明本发明的实施方式1的状态图执行装置的偏移设定部进行的动作的一例的图。

图16是说明本发明的实施方式1的状态图执行装置的偏移设定部进行的动作的另一例的图。

图17是示出本发明的实施方式1的状态图的另一例的图。

图18是示出与图17的状态图相当的二进制数据的图。

图19a和图19b是示出本发明的实施方式1的状态图执行装置的硬件结构的例子的图。

具体实施方式

下面,为了更详细地说明本发明,参照附图对用于实施本发明的方式进行说明。

实施方式1

图1是示出本发明的实施方式1的状态图执行装置101的结构例的框图。状态图执行装置101具有二进制数据生成部10和状态图执行部20。二进制数据生成部10具有状态图信息读取部11、关联度计算部12、单个数据二进制化部13、最佳排列计算部14、偏移设定部15和二进制数据统合部16。状态图执行部20具有二进制数据读取部21、通信部22和状态推移处理部23。

状态图执行装置101与外部设备102连接。外部设备102例如是车载导航系统等车载设备,具有触摸面板、语音识别或者空间手势识别等的用户接口设备。该外部设备102使用用户接口设备受理用户的指示,作为事件信息发送给状态图执行装置101。并且,外部设备102从状态图执行装置101接收命令,按照命令进行动作。

图2是示出本发明的实施方式1的状态图执行装置101的动作例的流程图。步骤st1~st6的处理是在设计状态图时进行的事前处理。步骤st7~st9的处理是执行设计出的状态图的处理。

在步骤st1中,状态图信息读取部11读取状态图信息103,生成构成状态图的数据。

其中,状态图信息103包含构成状态图的状态和状态推移等的信息。并且,状态图信息103还可以包含构成状态图的各数据的利用频度、设计者有意识地设定的状态推移的优先度和设计历史等设计时的附加信息。该状态图信息103是由设计者生成的使外部设备102执行的状态图的数据文件。

另外,在实施方式1中,状态与state同义。状态图与状态推移图、状态机图和状态机械图同义。

图3a是示出本发明的实施方式1的状态图的一例的图,图3b是示出与图3a的状态图对应的状态图信息103的图。图3b示例的状态图信息103是以scxml形式记述的文本文件。

下面,使用以scxml形式记述的状态图信息103的例子说明实施方式1,但记述形式不限于此。

将构成状态图的数据定义成对状态图信息103记述的、构成状态图的初始状态、状态、状态推移、平行状态和历史等各要素的信息。

例如,在scxml中,将推移数据定义成指示对<transition>标签记述的属性(attribute)和子要素的信息。在图3b所示的scxml的例子中,存在以下的2种推移数据。各推移数据包含作为子要素的事件名(event)和推移目的地的状态名(target)。

推移数据1

·event=“ev1”

·target=“st2”

推移数据2

·event=“ev2”

·target=“st1”

并且,例如,在scxml中,将状态数据定义成指示对<state>标签记述的属性(attribute)和子要素的信息。在图3b所示的scxml的例子中,存在以下的2种状态数据。各状态数据包含作为子要素的推移数据。

状态数据1

·id=“st1”

·推移数据1

状态数据2

·id=“st2”

·推移数据2

在步骤st2中,关联度计算部12根据由状态图信息读取部11读取的状态图信息103,计算构成状态图的数据间的关联度。

在此,对关联度进行定义。当在执行状态图时2个数据按照从近到远的顺序被访问的可能性较大的情况下,视为相应的数据间的关联度较高。相反,在按照从远到近的顺序被访问的可能性较大的情况下,视为相应的数据间的关联度较小。

在实施方式1中示例关联度计算方法(1)~(5)。

关联度计算方法(1):基于规则的关联度计算

关联度计算部12根据下面的规则(1)~(6)计算构成状态图的数据间的关联度。

规则(1):设推移数据与作为推移目的地的状态数据的关联度为1

规则(2):设处于亲子关系的数据的关联度为3

规则(3):设处于平行状态(parallelstate)的状态数据间的关联度为2

规则(4):设自行推移的状态数据与推移数据的关联度为4

规则(5):设不属于规则(1)~(4)的数据间的关联度为0

规则(6):设初始状态与作为初始状态的推移目的地的数据的关联度为1

上述规则中的关联度是0~4的整数值,但不限于此,也可以是用户适当设定的实数值。

通过基于上述规则的关联度计算,由图3a所示的状态图得到图4所示的关联度的表。在此,使用图3a和图4说明基于规则的关联度计算的具体例。

·状态数据1(st1)在子要素中具有推移数据1(ev1),因而适用规则(2),关联度为3。

·状态数据1(st1)和状态数据2(st2)没有直接关联,因而适用规则(5),关联度为0。

·初始状态数据(initial)推移到状态数据1(st1),因而适用规则(6),关联度为1。

示出状态图的另一例。图5是示出本发明的实施方式1的状态图的另一例的图。图6是由图5所示的状态图得到的关联度的表。

通过基于上述规则的关联度计算,由图5所示的状态图得到图6所示的关联度的表。在此,使用图5和图6说明基于规则的关联度计算的具体例。

下面为了便于说明,将具有状态名st的状态数据称作“状态数据st”,将具有事件名ev的推移数据称作“推移数据ev”等。

·对推移数据ev2和推移数据ev3的推移目的地设定有状态数据st21。因此适用规则(1),推移数据ev2与状态数据st21的关联度为1,推移数据ev3与状态数据st21的关联度也为1。

·状态数据st1在子要素中具有推移数据ev1,因而适用规则(2),关联度为3。

·平行状态数据pa1在子要素中具有状态数据st3和状态数据st4。因此适用规则(2),平行状态数据pa1与状态数据st3的关联度为3,平行状态数据pa1与状态数据st4的关联度也为3。

·在平行状态数据pa1中,状态数据st3和状态数据st4被平行地执行。因此适用规则(3),状态数据st3与状态数据st4的关联度为2。

·状态数据st2在子要素中具有状态数据st21和状态数据st22。因此适用规则(2),状态数据st2与状态数据st21的关联度为3,状态数据st2与状态数据st22的关联度也为3。

·推移数据ev5自行推移成状态数据st1,因此适用规则(4),关联度为4。

关联度计算方法(2):基于利用频度的关联度计算

也可以是,关联度计算部12利用与各推移状态相关的利用频度的信息计算数据间的关联度。

图7是示出本发明的实施方式1的状态图的另一例的图。图8是由图7所示的状态图得到的关联度的表。使用图7和图8说明基于利用频度的关联度计算的具体例。

例如,以状态图方式设计车载导航系统等车载设备的语音对话,将用户的询问分类设计成以下的3种类型。

分类(1):简明扼要的用户命令或者车载导航系统能够用“是(yes)”或“否(no)”回答的问题

问题例:“车载导航起动”、“导航结束”、“此处右拐?”、“附近有道路的车站?”

分类(2):假定车载导航系统回复复杂且长的回答的问题

问题例:“推荐的餐馆?现在好想吃拉面或咖喱呀”

分类(3):故障处理

例:语音识别设备不起动等偶然发生的故障时的处理

以上述分类(1)~(3)为基础,例如按照以下所述表现图7的状态图中的语音对话的处理流程。

·状态数据st1表示车载导航系统受理用户的询问,将问题分类的状态

·推移数据ev1表示发生了分类(1)时的推移

·推移数据ev2表示发生了分类(2)时的推移

·推移数据ev3表示发生了分类(3)时的推移

·状态数据st2表示车载导航系统进行分类(1)的回答处理的状态

·状态数据st3表示车载导航系统进行分类(2)的回答处理的状态

·状态数据st4表示车载导航系统进行分类(3)的回答处理的状态

在此,设事前已得到如下的信息:分类(1)被频繁利用,分类(2)被中等程度利用,分类(3)轻易不发生。该与利用频度相关的信息可以由用户手工设定,也可以由关联度计算部12根据大量的对话数据的倾向求出。

关联度计算部12根据与利用频度相关的信息,按照以下所述决定数据间的关联度。

·从状态数据st1经由推移数据ev1的概率最高,因而设状态数据st1与推移数据ev1的关联度为15。

·从状态数据st1经由推移数据ev2的概率第二高,因而设状态数据st1与推移数据ev2的关联度为10。

·从状态数据st1经由推移数据ev3的概率最低,因而设状态数据st1与推移数据ev3的关联度为1。

关联度计算部12对于上述以外的数据的关联度,根据所述规则进行计算,得到图8所示的关联度的表。另外,基于利用频度的关联度15、10、1的值不限于此,例如可以由用户手工设定,也可以由关联度计算部12通过使用大量的对话数据的模拟等求出状态推移概率,以与该状态推移概率成比例的方式决定关联度的值。

关联度计算方法(3):基于引导程度的关联度计算

有时车载导航系统等车载设备在对用户示教设备的使用方法或者道路顺序等时想要引导用户的动作。在这种情况下,也可以相对地提高与想要引导的程度(下面称作“引导程度”)较高的状态推移相关的数据间的关联度。

例如,考虑如下的情况:车载导航系统通过与用户的语音对话检索附近的餐馆,根据油耗成本得到以下3种检索结果,将3种检索结果作为选择项提示给用户。

选择项(1)餐馆a:伴随自当前地点起的移动的油耗成本1

选择项(2)餐馆b:伴随自当前地点起的移动的油耗成本5

选择项(3)餐馆c:伴随自当前地点起的移动的油耗成本10

以上述选择项(1)~(3)为基础,例如按照以下所述设计适用于在所述关联度计算方法(2)中使用的图7的状态图时的语音对话的处理流程。

·状态数据st1表示对用户提示选择项(1)~(3)的状态。其中,车载导航系统优先向用户推荐油耗成本最低的选择项(1)。即,选择项(1)的引导程度最高。车载导航系统例如使选择项(1)的显示文字大于其它选择项的显示文字,或将选择项(1)显示在列表的第一位,或通过语音引导来推荐选择项(1)。

·推移数据ev1表示用户选择了选择项(1)时的推移

·推移数据ev2表示用户选择了选择项(2)时的推移

·推移数据ev3表示用户选择了选择项(3)时的推移

·状态数据st2表示选择了选择项(1)后的车载导航系统的处理

·状态数据st3表示选择了选择项(2)后的车载导航系统的处理

·状态数据st4表示选择了选择项(3)后的车载导航系统的处理

关联度计算部12根据引导程度,按照以下所述决定数据间的关联度。

·选择项(1)的引导程度较高,因而判断为从状态数据st1经由推移数据ev1的概率最高。因此,设状态数据st1与推移数据ev1的关联度为15。

·从状态数据st1经由推移数据ev2的概率和从状态数据st1经由推移数据ev3的概率低至相同程度。因此,设状态数据st1与推移数据ev2的关联度为1,设状态数据st1与推移数据ev3的关联度也为1。

关联度计算方法(4):基于状态图的修正日期时间的关联度计算

也可以是,关联度计算部12根据设计时的状态图的修正日期时间计算数据间的关联度。例如,在设计的采取阶段,最新修正后的数据可认为是重要的处理流程,因而与其它数据相比,提高关联度。

图9是示出本发明的实施方式1的状态图的另一例的图。图10是由图9所示的状态图得到的关联度的表。使用图9和图10对基于修正日期时间的关联度计算的具体例进行说明。

图9所示的状态图相对于图3a所示的状态图追加有推移数据ev3。关联度计算部12将追加的推移数据ev3视为重要的处理,将状态数据st1与推移数据ev3的关联度设定成与其他数据间的关联度相比相对较高的值即10,得到图10的关联度表。另外,在图10中省略初始状态数据(initial)的关联度的图示。

关联度计算方法(5):基于状态图的修正频度的关联度计算

也可以是,关联度计算部12根据设计时的状态图的修正频度计算数据间的关联度。

图11是示出本发明的实施方式1的状态图的修正频度的曲线图。关联度计算部12在设计状态图时求出构成该状态图的数据a~f各自的修正频度,分类成被低频度地修正后的数据组、被高频度地修正后的数据组和剩余的数据组。被高频度地修正后的数据组是设计上重要的处理流程的可能性较大,因而关联度计算部12使被高频度地修正后的数据组的关联度高于剩余的数据组的关联度。并且,被低频度地修正后的数据组是不需要修正的基础处理流程的可能性较大,因而关联度计算部12使被低频度地修正后的数据组的关联度高于剩余的数据组的关联度。

在图11的例子中,对被低频度地修正后的数据a与数据b的关联度加“1”。同样地,对被高频度地修正后的数据e与数据f的关联度加“1”。数据a与数据c的关联度以及数据a与数据e的关联度等其它数据间的关联度保持原状。在该例中,设与关联度相加的值为“1”,但数值不限于此。并且,与被低频度地修正后的数据组的关联度相加的值和与被高频度地修正后的数据组的关联度相加的值可以是相同的值,也可以是不同的值。

关联度计算部12可以使用关联度计算方法(1)~(5)中的任意一种方法计算关联度,也可以组合2种以上的方法计算关联度。

在步骤st3中,单个数据二进制化部13将由状态图信息读取部11生成的各个数据二进制化。并且,单个数据二进制化部13求出二进制化的各数据的大小。

在此,考虑以图3b所示的scxml形式记述状态图信息103的情况。

图12是说明本发明的实施方式1的状态图执行装置101的单个数据二进制化部13进行的动作的图。图13a、图13b和图13c是示出图3b的状态图信息103中包含的各个信息的图。

在状态图信息103中的图13a所示的部分记述有初始状态数据st1的信息。单个数据二进制化部13以该初始状态数据st1的信息为基础,生成下述(1)的二进制化的头数据。

(1)向具有id=“st1”的状态数据的偏移

偏移是指在后面的步骤st6中生成的二进制数据104中的相应数据的开始位置。在此,偏移是整数值,假设其数据大小为4字节。因此,二进制化的头数据的数据大小是4字节。

在后面的步骤st5中对上述(1)的偏移代入数值,因而在步骤st3中单个数据二进制化部13虚拟地代入整数值0。

在状态图信息103中的图13b所示的部分记述有推移数据1的信息。单个数据二进制化部13将该推移数据1的信息二进制化,生成下述(1)和(2)的数据。

(1)表示event的“ev1”的字符串

(2)作为target字符串的替代而向具有id=“st2”的状态数据的偏移

在此,假设1个字符的数据大小为2字节,因而表示上述(1)的“ev1”的字符串的数据大小是6字节。上述(2)的偏移是4字节的整数值。因此,二进制化的推移数据1的数据大小的合计是10字节。

并且,在后面的步骤st5中对上述(2)的偏移代入数值,因而在步骤st3中单个数据二进制化部13虚拟地代入整数值0。

在状态图信息103中的图13c所示的部分记述有状态数据1的信息。单个数据二进制化部13将该状态数据1的信息二进制化,生成下述(1)和(2)的数据。

(1)表示id的“st1”的字符串

(2)向推移数据1的偏移

状态数据1也与推移数据1同样地,假设1个字符的数据大小为2字节,因而表示上述(1)的“st1”的字符串的数据大小是6字节。上述(2)的偏移是4字节的整数值。因此,二进制化的状态数据1的数据大小的合计是10字节。

并且,在后面的步骤st5中对上述(2)的偏移代入数值,因而在步骤st3中单个数据二进制化部13虚拟地代入整数值0。

单个数据二进制化部13将状态图信息103中包含的推移数据2和状态数据2的信息也与上述同样地二进制化。

在此,对状态信息(<state>)的子要素包含推移信息(<transition>)的情况进行了说明,但不限于此,作为状态信息,也可以包含其它信息。例如,在scxml的情况下,定义了<state>标签的子要素即<onentry>和<onexit>,单个数据二进制化部13也可以适当地将它们二进制化。同样地,在scxml中也可以适当地将<transition>标签的子要素即<script>标签等二进制化。

在步骤st4中,最佳排列计算部14根据由关联度计算部12计算出的数据间的关联度,计算使得关联度较高的数据彼此尽可能接近地配置的各数据的一维排列即最佳的排列。

在实施方式1中示例最佳排列计算方法(1)~(3)。

最佳排列计算方法(1):利用相邻数据的关联度

最佳排列计算部14计算将构成状态图的各数据排列成一维排列时统计相邻数据间的关联度而得到的总体关联度,求出总体关联度最大的数据的序列。

图14是说明本发明的实施方式1的状态图执行装置101的最佳排列计算部14进行的动作的图。最佳排列计算部14利用图4的关联度表,计算图14所示的序列a、b的总体关联度。

在按照序列a将各数据排列成一维排列的情况下,总体关联度为1。

总体关联度

=(头数据与推移数据1的关联度)

+(推移数据1与推移数据2的关联度)

+(推移数据2与状态数据1的关联度)

+(状态数据1与状态数据2的关联度)

=0+0+1+0

=1

在按照序列b将各数据排列成一维排列的情况下,总体关联度为8。

总体关联度

=(头数据与状态数据1的关联度)

+(状态数据1与推移数据1的关联度)

+(推移数据1与状态数据2的关联度)

+(状态数据2与推移数据2的关联度)

=1+3+1+3

=8

最佳排列计算部14选择总体关联度较高的序列b。最佳排列计算部14列举全部可同样考虑的可能的序列或者以概率采样方式列举序列候选,计算它们的总体关联度,选择总体关联度最大的序列,但省略说明。

总体关联度的计算式是用于求出最佳数据的序列的评价函数。

另外,在图14的例子中,将与对象数据相邻的1个数据的关联度相加而求出总体关联度,但也可以将与对象数据相邻的n个(n≥1)数据的关联度相加而求出总体关联度。例如,在考虑相邻的2个数据的关联度的情况下,最佳排列计算部14在图14的序列b中,对作为对象的头数据加上状态数据1与推移数据1的关联度。其结果是,n=2时的序列b的总体关联度为8。

n=2时的序列b的总体关联度

=(头数据与状态数据1的关联度)

+(头数据与推移数据1的关联度)

+(状态数据1与推移数据1的关联度)

+(状态数据1与状态数据2的关联度)

+(推移数据1与状态数据2的关联度)

+(推移数据1与推移数据2的关联度)

+(状态数据2与推移数据2的关联度)

=1+0+3+0+1+0+3

=8

由此,在将一维排列的各数据展开到存储器中时,关联的数据较近地排列,因而执行状态图时的高速缓存命中率提高,能够使状态推移处理快速化。并且,由于只考虑相邻的n个关联度,因而能够在总体关联度的计算中抑制计算量。

最佳排列计算方法(2):利用数据间的距离和关联度

也可以是,最佳排列计算部14设定使得数据间的距离越远则关联度越小的评价函数,求出使得该评价函数最大的数据的序列。

以下示出评价函数的例子。

变量的定义

m:数据数

e:构成状态图的数据的序列的集合。要素数是m!

s(i):构成状态图的第i个数据

s(j):构成状态图的第j个数据

r(i,j):s(j)与s(i)的关联度

d(e,i,j):按照序列e∈e将数据一维排列时s(j)与s(i)的距离。即,s(j)与s(i)的偏移(数据开始位置)的差分的绝对值。

此时,最佳排列计算部14按照下式(1)所示设定评价函数。并且,最佳排列计算部14使用下式(2)求出使得评价函数最大的数据的序列即最佳的数据排列

由此,在将一维排列的各数据展开到存储器中时,关联的数据尽可能接近地排列,因而执行状态图时的高速缓存命中率提高,能够使状态推移处理快速化。并且,由于考虑全部数据间的关联度,因而与最佳排列计算方法(1)相比,有望能够求出更加优化的数据的序列。

最佳排列计算方法(3):利用数据间的距离、关联度以及阈值

也可以是,最佳排列计算部14统计离开预先设定的距离以上的数据间的关联度作为成本函数,求出使得成本函数最小的数据的序列。在此,将上述预先设定的距离定义为阈值b1。例如,对阈值b1设定cpu(centralprocessingunit:中央处理单元)具有的高速缓冲存储器的块尺寸或者行尺寸。由此,能够求出使得高速缓存命中失误降低的数据的序列。

以下示出成本函数的例子。

变量的定义

e:构成状态图的数据的序列的集合

b1:上述的阈值

s(i):构成状态图的第i个数据

s(j):构成状态图的第j个数据

r(i,j):s(j)与s(i)的关联度

d(e,i,j):按照序列e∈e将数据一维排列时s(j)与s(i)的距离

x1(e):满足d(e,i,j)>b1的i,j的组

此时,最佳排列计算部14按照下式(3)所示定义成本函数。

c(e)=∑i,j∈x1(e)r(i,j)*d(e,i,j)(3)

或者,也可以是,在利用具有大小不同的块尺寸的高速缓冲存储器的cpu的情况下,最佳排列计算部14设定偏大的块尺寸或者行尺寸作为阈值b2,按照下式(4)所示定义成本函数。

c(e)=α∑i,j∈x1(e)r(i,j)*d(e,i,j)+p∑i,j∈x2(e)r(i,j)*d(e,i,j)(4)

b2:满足b1<b2的阈值(高速缓冲存储器的块尺寸等)

x2(e):满足d(e,i,j)>b2的i,j的组

α、β:适当的权重系数

最佳排列计算部14使用下式(5)求出使得上式(3)或者(4)的成本函数最小的数据的序列即最佳的数据排列

由此,在将一维排列的各数据展开到存储器中时,能够尽可能地减少未收敛成高速缓冲存储器的块尺寸或者行尺寸的数据的对。由此,执行状态图时的高速缓存命中失误降低,能够使状态推移处理快速化。

另外,在使评价函数最大化或者使成本函数最小化的情况下,在数据数量增加时计算量增大,很难在现实的时间内求出序列的最优解。因此,也可以求出使评价函数最大化或者使成本函数最小化的准最优解。

最佳排列计算部14能够利用遗传算法等概率优化方法作为求出准最优解的方法。例如,最佳排列计算部14用在下述文献的第34页记述的顺序表现(ordinalrepresentation)方式表现构成状态图的数据的序列,通过遗传算法求出用最佳排列计算方法(1)或者(2)表示的使评价函数最大化的序列或者用最佳排列计算方法(3)表示的使成本函数最小化的序列。

伊庭斉志「遺伝的アルゴリズムの基礎―gaの謎を解く―」、第1版、オーム社、1994、p.34

在步骤st5中,偏移设定部15求出一维排列按照由最佳排列计算部14计算出的序列而二进制化的各数据时各数据的偏移,对各数据设定偏移。偏移是指二进制数据104中的数据的开始位置。

图15是说明本发明的实施方式1的状态图执行装置101的偏移设定部15进行的动作的一例的图。在此,最佳排列计算部14选择图14的序列b并输出给偏移设定部15。

偏移设定部15按照序列b的顺序排列构成状态图的数据。其结果是,如图15所示,按照头数据、状态数据1、推移数据1、状态数据2、推移数据2的顺序配置数据。

头数据的数据大小是4字节,状态数据1的数据大小是10字节,推移数据1的数据大小是10字节,状态数据2的数据大小是10字节,推移数据2的数据大小是10字节。据此,偏移设定部15计算出头数据的偏移为第0字节、状态数据1的偏移为第5字节、推移数据1的偏移为第15字节、状态数据2的偏移为第25字节、推移数据2的偏移为第35字节。

然后,偏移设定部15将在步骤st3中被临时设定为0的各偏移重新设定成计算出的正确的值。偏移设定部15例如对初始状态数据的偏移设定状态数据1的偏移即5。并且,偏移设定部15对状态数据1具有的“推移数据1的偏移”设定15。并且,偏移设定部15对推移数据1具有的“状态数据2的偏移”设定25。偏移设定部15同样地还对状态数据2及推移数据2具有的各偏移设定值。

在图15中,对偏移设定部15利用偏移将状态图信息103二进制化的方法进行了说明,但是,例如在状态数据被变更使其数据大小增大的情况下,存在需要重新计算对全部数据设定的偏移这样的问题。

因此,下面对偏移设定部15使用偏移阵列数据和偏移阵列数据的索引高效地将数据二进制化的方法进行说明。

图16是说明本发明的实施方式1的状态图执行装置101的偏移设定部15进行的动作的另一例的图。在此,最佳排列计算部14选择图14的序列b并输出给偏移设定部15。

偏移设定部15以追加方式准备偏移阵列数据,按照头数据、偏移阵列数据、状态数据1、推移数据1、状态数据2、推移数据2的顺序进行配置。

在偏移阵列数据中,定义与状态数据1的偏移相当的索引0、与推移数据1的偏移相当的索引1、与状态数据2的偏移相当的索引2和与推移数据2的偏移相当的索引3。1个偏移是4字节的整数值,因而偏移阵列数据的数据大小是4字节×4=16字节。并且,偏移设定部15按照以下所述对索引1~3设定偏移值。

索引0:21(状态数据1的偏移)

索引1:31(推移数据1的偏移)

索引2:41(状态数据2的偏移)

索引3:51(推移数据2的偏移)

然后,偏移设定部15在状态数据1、推移数据1、状态数据2和推移数据2中指定偏移阵列数据的索引来替代偏移值。

例如,在图15中,对状态数据1设定了“推移数据1的偏移”(偏移值15),但在图16中设定偏移阵列数据的索引1来进行替代。因为在偏移阵列数据中,索引1被设定了推移数据1的偏移即31。

如上所述,如果利用偏移阵列数据,即使在数据大小变更的情况下,也是仅变更偏移阵列数据即可。例如,在状态数据1的字符串由“st1”变更成“st1_new”而使字符数增加的情况下,在设1字符为2字节时,状态数据1的数据大小增加8字节。因此,偏移设定部15在偏移阵列数据中对推移数据1、状态数据1和推移数据2的偏移分别增加8字节,按照以下所述变更偏移阵列数据。

索引0:21(状态数据1的偏移)

索引1:39(推移数据1的偏移)

索引2:49(状态数据2的偏移)

索引3:59(推移数据2的偏移)

由此,偏移指示正确的数据位置。此时,数据的序列没有变更,因而对各数据设定的索引不需要变更。因此,不需要改写各数据的内容。

在步骤st6中,二进制数据统合部16对由单个数据二进制化部13二进制化并由偏移设定部15设定了偏移或者偏移阵列数据的数据,按照由最佳排列计算部14计算出的排列进行统合而成为二进制数据104,保存二进制数据104。二进制数据统合部16既可以将二进制数据104保存在ram(randomaccessmemory:随机存取存储器)等存储器中,也可以用文件等的形式保存在盘中。

下面,对状态图执行部20的动作进行说明。

在步骤st7中,状态图执行部20读取保存着的二进制数据104。例如,在二进制数据104被保存成二进制文件的情况下,二进制数据读取部21首先确保二进制数据大小量的存储器,在所确保的存储器中存储构成状态图的全部数据。

在步骤st8中,通信部22与外部设备102进行通信,从外部设备102接收事件信息。事件信息是指表示事件名称的字符串和事件附带的任意数据。

图17是示出本发明的实施方式1的状态图的另一例的图。在该状态图中,通信部22接收“ev1”的事件字符串或者“ev2”的事件字符串和附带数据value1==10。

在步骤st9中,状态推移处理部23按照通信部22接收到的事件字符串和附带数据以及在步骤st7中由二进制数据读取部21读取的二进制数据104,执行状态推移处理。

在此,使用图17和图18对步骤st7~st9的处理的例子进行说明。图17示出事件ev2的推移数据2包含引导条件“value1==10”和功能action1()的状态图。图18是示出与图17的状态图相当的二进制数据104的图。推移数据2除了事件名和向状态数据1的偏移以外,还具有引导条件字符串“value1==10”和功能字符串action1()。

1.初始推移(步骤st7)

二进制数据读取部21首先读取二进制数据104的头数据,访问头数据中记述的初始状态数据。在图18的例子中,对初始状态数据的偏移设定5。因此,二进制数据读取部21访问二进制数据104的第5字节,读取状态数据1。由此,状态数据的初始状态成为st1。

2.接收事件“ev1”(步骤st8)

然后,通信部22从外部设备102接收事件信息。在此,例如接收到事件字符串“ev1”。

3.状态推移(步骤st9)

然后,状态推移处理部23参照状态数据1具有的推移数据1的偏移,读取第15字节的推移数据1。该推移数据1具有事件名“ev1”,与先前接收到的事件字符串“ev1”相同,因而状态推移处理部23推移至作为推移目的地的状态数据2。具体地,访问被设定成作为推移目的地的状态数据2的偏移的第25字节的数据。由此,推移至状态数据2中记述的状态“st2”。

通过将作为推移目的地的数据的偏移设定成25字节,在状态推移处理部23进行状态推移时不需要搜索处理,即可访问下一个推移信息。

另一方面,在推移数据1的事件名与接收到的事件字符串不一致的情况下,状态推移处理部23停留在状态“st1”。

4.接收事件“ev2”和附带的数据(步骤st8)

然后,通信部22从外部设备102接收事件字符串“ev2”和其附带的数据value1==10。

5.状态推移(步骤st9)

然后,状态推移处理部23访问推移数据2,判定推移数据2具有的事件名“ev2”与接收到的事件字符串“ev2”是否一致。在此,推移数据2具有的事件名与接收到的事件字符串一致,因而状态推移处理部23进入下一个引导条件判定。在不一致的情况下,状态推移处理部23停留在状态“st2”。

6.引导条件判定和功能执行(步骤st9)

然后,状态推移处理部23比较推移数据2所述的引导条件字符串和从外部设备102接收到的附带数据的引导条件字符串,判定引导条件字符串的真伪。状态推移处理部23在引导条件字符串为真的情况下,执行功能数据所述的动作,并推移至下一个状态。在此,接收到的附带数据是value1==10,因而图18所述的引导条件字符串为真。因此,状态推移处理部23取得功能字符串“action1()”,并执行action1()。action1()是对外部设备102登记的函数等,例如记述有状态图执行部20经由通信部22向特定的外部设备102发送事件信息等的命令。最后,状态推移处理部23访问对状态数据1的偏移设定的第5字节的数据,并推移至下一个状态“st1”。

另一方面,在引导条件字符串为伪的情况下,状态推移处理部23停留在状态“st2”。

这样,状态图执行部20反复进行步骤st8的事件字符串接收和步骤st9的状态推移处理。

下面,说明状态图执行装置101的硬件结构例。

图19a和图19b是示出本发明的实施方式1的状态图执行装置101的硬件结构的一例的图。

状态图执行装置101的二进制数据生成部10和状态图执行部20的各功能通过处理电路来实现。即,状态图执行装置101具有如下的处理电路:使与表现状态推移的状态图相关的状态图信息103成为二进制数据104,根据该二进制数据104执行状态图的处理。处理电路可以如图19a所示是专用硬件,也可以如图19b所示是执行存储器1006中存储的程序的cpu1005。

如图19a所示,在处理电路是专用硬件的情况下,处理电路1001例如可以是单一电路、复合电路、程序化的处理器、并行程序化的处理器、asic(applicationspecificintegratedcircuit:面向特定用途的集成电路)、fpga(field-programmablegatearray:现场可编程门阵列)或者它们的组合。

二进制数据生成部10和状态图执行部20的功能可以通过一个处理电路1001统一实现,也可以通过多个处理电路1001来实现。

如图19b所示,在处理电路是cpu1005的情况下,二进制数据生成部10和状态图执行部20的功能通过软件、固件或者软件和固件的组合来实现。软件或者固件被记述成程序,存储在hdd(harddiskdrive:硬盘驱动器)1002或者存储器1006中。cpu1005通过读出并执行hdd1002或存储器1006中存储的程序来实现各部的功能。即,状态图执行装置101具有在被cpu1005执行时用于存储结果是执行图2所示的步骤的程序的hdd1002或存储器1006。并且,该程序也可以说是使计算机执行二进制数据生成部10和状态图执行部20的步骤或者方法。

在此,cpu1005可以是处理装置、运算装置、微处理器、微计算机或者系统lsi(large-scaleintegration:超大规模集成电路)等。

并且,cpu1005可以具有一次高速缓冲存储器和二次高速缓冲存储器等多个高速缓冲存储器。cpu1005在实现二进制数据读取部21的功能时,读取二进制数据104并展开到高速缓冲存储器中。

存储器1006例如是ram、rom(readonlymemory:只读存储器)、闪存、eprom(erasableprogrammablereadonlymemory:可擦除可编程只读存储器)、eeprom(electricallyerasableprogrammableread-onlymemory:电可擦除可编程只读存储器)等非易失性或者易失性的半导体存储器、磁盘、软盘、光盘、紧凑盘、迷你盘或dvd(digitalversatiledisk:数字多功能盘)等。

另外,关于二进制数据生成部10和状态图执行部20的各功能,还可以是一部分由专用硬件实现,另一部分由软件或者固件实现。例如,可以是,状态图执行部20由作为专用硬件的处理电路1001实现其功能,二进制数据生成部10通过由cpu1005读出并执行存储器1006中存储的程序来实现其功能。

被输入到二进制数据生成部10的状态图信息103以及由二进制数据生成部10生成的二进制数据104例如被保存到hdd1002中。另外,这仅是一例,状态图信息103和二进制数据104也可以保存在dvd等存储器1006中。

状态图执行装置101中的通信部22是输入接口装置1003和输出接口装置1004。输入接口装置1003从外部设备102接收信息。输出接口装置1004向外部设备102发送信息。

外部设备102可以与状态图执行装置101同样是专用硬件,还可以是执行存储器中存储的程序的cpu。

并且,构成状态图执行装置101的处理电路1001或者cpu1005不仅实现状态图执行装置101的功能,还可以实现外部设备102的功能。例如,也可以是,车载导航系统的cpu是实现状态图执行装置101和外部设备102的各功能的结构。或者,例如还可以是由计算机的cpu实现二进制数据生成部10的功能,由车载导航系统的cpu实现状态图执行部20和外部设备102的各功能的结构。

如上所述,实施方式1的状态图执行装置101具有:二进制数据生成部10,其使与表现状态推移的状态图相关的状态图信息103成为二进制数据104;以及状态图执行部20,其根据二进制数据104执行状态图的处理。二进制数据生成部10具有:状态图信息读取部11,其读取状态图信息103,生成构成状态图的数据;关联度计算部12,其计算构成状态图的数据间的关联度;单个数据二进制化部13,其将构成状态图的数据二进制化;最佳排列计算部14,其根据由关联度计算部12计算出的关联度,计算构成状态图的数据的排列;偏移设定部15,其设定偏移,偏移表示将由单个数据二进制化部13二进制化后的数据按照由最佳排列计算部14计算出的排列进行排列时的位置;以及二进制数据统合部16,其对由单个数据二进制化部13二进制化并由偏移设定部15设定了偏移的数据,按照由最佳排列计算部14计算出的排列进行统合而成为二进制数据104。由此,能够得到优化状态图的数据结构的二进制数据104。并且,状态图执行部20能够根据二进制数据104快速执行状态图。

具体地,最佳排列计算部14是根据由关联度计算部12计算出的关联度,计算使得关联度较高的数据彼此接近地配置的排列的结构。

最佳排列计算部14求出使得优化评价函数或者成本函数的数据的序列,由此能够在存储器中较近地配置关联性较高的数据。由此,在状态图执行部20执行状态图时,可以预见到cpu的高速缓存命中率的提高及高速缓存命中失误的降低,由此,可以预见到状态图的处理快速化。

并且,二进制数据生成部10将状态图信息103二进制化,将二进制数据104配置在连续的存储器区域中,由此不会发生存储器碎裂。由此,可以预见到二进制数据读取部21的存储器分配处理的快速化和状态推移处理部23执行状态图时的高速缓存命中率的提高。

并且,偏移设定部15是设定构成状态图的数据的偏移的结构。状态图执行部20是具有以下部分的结构:二进制数据读取部21,其读取二进制数据104;通信部22,其从外部设备102接收事件信息;以及状态推移处理部23,其在按照由通信部22接收到的事件信息执行状态图的状态推移处理时,访问对二进制数据104设定的偏移所示的位置的数据。

通过利用偏移访问数据,状态推移处理部23在执行状态推移处理时能够直接访问作为推移目的地的状态数据。因此,不发生根据状态名的字符串搜索状态数据的处理,即可实现状态推移处理的快速化。

并且,二进制数据生成部10不仅计算表表现的状态图,而且计算具有层级状态或者平行状态的状态图以及构成这些状态图的数据间的关联度,转换成一维的排列而成为二进制数据104。

另外,本发明能够在其发明的范围内进行实施方式的任意构成要素的变形或者实施方式的任意构成要素的省略。

产业上的可利用性

本发明的状态图执行装置快速执行状态图,因而适合于具有触摸面板、语音识别或者空间手势识别等的用户接口设备的外部设备中使用的状态图执行装置。

标号说明

10二进制数据生成部;11状态图信息读取部;12关联度计算部;13单个数据二进制化部;14最佳排列计算部;15偏移设定部;16二进制数据统合部;20状态图执行部;21二进制数据读取部;22通信部;23状态推移处理部;101状态图执行装置;102外部设备;103状态图信息;104二进制数据;1001处理电路;1002hdd;1003输入接口装置;1004输出接口装置;1005cpu;1006存储器。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1