1

我正在开发一个 android 应用程序,用于根据传感器值和其他详细信息分析用户的情况。该应用程序基本上是一个提醒功能,可以根据用户的情况帮助用户。

我们为应用程序提供我们的日常活动,包括位置和必要的详细信息。当事件到达时间,它会分析用户当前的情况,然后通过读取用户的位置、时间、天气、油门是否移动(即忙与否)、手机是否在口袋里、与事件目的地的距离、时间来进行通知需要到达那里等。

然后它会在到达目的地之前选择一组可能有用的操作,例如阅读新闻、提供导航、打开媒体播放器、显示股票详细信息、执行搜索等。算法应该从一组操作中选择这些操作。

哪种算法和数据结构适合分析当前情况?请提供您对项目和想法的看法。谢谢

4

2 回答 2

1

想到2种方法:

  1. 当键是各种数据元素的集合时,将所有可能的操作插入到哈希表中。即,h({data1, data2,...}) = a1; h({dataa, datab,...}) = a2。每当时机成熟时,对数据集应用散列函数并提取动作。

  2. 1 的问题是哈希的可能大小,它必须包括所有可能的值组合 - 大小将是num of sensor1 values * num of sensor2 values * ... * num of sensor n values. 如果对每种组合的操作都不同,则没有什么可优化的。但情况可能并非如此,在大多数情况下,操作是相同的。例如,您可以采取相反的方法并将所有可能的操作集合保存在地图中。在非常高的层面上:每当事件时间到来时,开始分析数据——在读取第一个传感器数据后,可能的动作集会缩小;分析第二个传感器数据并对动作子集重复该过程。继续直到只剩下一个动作或没有更多可用的传感器数据,无论先发生什么(假设传感器数据的所有组合都映射到一个有效的动作)。

于 2013-01-04T08:36:22.673 回答
1

当阅读您的项目逻辑,尤其是喇叭子句时,我想到了。您描述,您的应用程序应检查一组条件以选择要执行的特定操作。号角子句是命题一阶逻辑中某种形式的逻辑表达式。号角从句最多有一个肯定字面量,表达一个事实、一个规则或一个目标。使用事实可以描述您的知识,使用规则可以表达在某些条件适用时选择哪个动作。喇叭子句、一阶逻辑、命题逻辑和解析是逻辑编程、规则引擎或约束满足的理论基础。

例如, drools是一个规则引擎,它允许描述一个知识库和一组规则。Drools 使用一阶推理从知识库和规则条件中推理动作。也许,您会发现可以在一阶逻辑、命题逻辑、规则引擎、逻辑、编程、约束满足、推理、问题解决和推理领域使用的东西。例如,您可能会在那里找到 drools 中使用的rete 算法。

于 2013-01-04T10:20:20.277 回答