我正在开发一个Android应用程序,用于根据传感器值和其他细节分析用户的情况。该应用程序基本上是一个提醒功能,可根据用户的情况帮助用户。
我们将应用程序作为具有位置和必要细节的事件提供给我们的日常例程。当事件发生时,通过读取他的位置,时间,天气,加速器是否移动(即忙碌与否),电话是否在口袋中,距离事件目的地的距离,时间来分析用户的当前状况会到达那里等。
然后选择一组在到达目的地之前可能有用的操作,例如阅读新闻,提供导航,打开媒体播放器,显示股票详细信息,执行搜索等。算法应该从一组操作中选择这些操作。
哪种算法和数据结构适合分析当前情况? 请提供您对项目和想法的看法。感谢
答案 0 :(得分:1)
我想到了两种方法:
当密钥是各种数据元素的集合时,将所有可能的操作插入哈希表。即,h({data1, data2,...}) = a1; h({dataa, datab,...}) = a2
。每当时间到来时,在数据集上应用哈希函数并提取操作。
1的问题是散列的可能大小,其必须包括所有可能的值组合 - 大小将为num of sensor1 values * num of sensor2 values * ... * num of sensor n values
。如果对每种组合的行动不同,则无需优化。但情况可能并非如此,在大多数情况下,行动将是相同的。例如,您可以采用相反的方法并将所有可能操作的集合保存在地图中。在非常高的级别:每当事件发生时,开始分析数据 - 在读取第一个传感器数据后,可能的操作集将缩小;分析第二个传感器数据并重复该动作子集的过程。继续,直到只剩下一个动作或没有更多传感器数据可用,无论首先是什么(假设传感器数据的所有组合都映射到有效动作)。
答案 1 :(得分:1)
在阅读有关您的项目逻辑时,特别是喇叭条款进入我的脑海。您描述,您的应用应检查一组条件以选择要执行的特定操作。 Horn clauses是propositional或first-order logic中某种形式的逻辑表达式。 Horn条款最多只有一个正面文字,表达事实,规则或目标。根据事实,可以描述您的知识,通过规则,您可以表达在某些条件适用时选择哪种行为。 Horn子句,一阶逻辑,命题逻辑和解析是逻辑规划,规则引擎或约束满足的理论基础。
E.g。 drools是一个规则引擎,允许描述知识库和一组规则。 Drools使用一阶推理来推理知识库中的行为和规则的条件。也许,你会发现一些你可以在一阶逻辑,命题逻辑,规则引擎,逻辑,编程,约束满足,推理,问题解决和推理领域中使用的东西。例如,你可以找到drools中使用的rete algorithm。