我正在研究决策引擎/规则评估引擎。例如:
输入:客户和客户完成的所有违规行为
输出:罪行的后果
示例案例将是:
输入:客户(Jhonny Chimpo,999-00-1111),违规行为(打破了窗口,打了一巴掌,在他的腹股沟踢了团队领导)
输出:获取粉红色滑动
因此,我想写的代码根据每个攻击和组合攻击的规则来评估不同的攻击。当前代码只是if和else语句的迷宫。我确信这些业务问题很常见。通常使用什么设计/企业模式来解决这样的问题?
是规格模式吗?我希望代码可以打开以进行扩展,清洁和灵活。
答案 0 :(得分:3)
答案 1 :(得分:3)
基本上,业务规则类似于
forall rules:
if <condition> then doAction();
如果按照严重程度使用分数对所有犯罪进行分类,或许对频繁的“邪恶行为者”额外奖励,某些犯罪可能会成为时间限制,无论需要什么。
然后算法的草稿可以是:
使用数据结构而不是很多(可能是深度嵌套的)if..then..else的东西,这是直截了当的。
答案 2 :(得分:1)
我不确定上面的任何答案是否有帮助。
我使用expression trees编写了类似的组件。您可以构建表示谓词的lambda表达式,动态地编译和执行它们,然后在响应中触发一些操作。这种方法功能强大,灵活,可以去除所有if / else恐怖(绝对不是这样)。
然而,你真正在谈论的是逻辑编程。 Prolog over .NET有很多实现。 Prolog是一种基于逻辑的语言,很多用于AI应用程序,一旦你了解它的范例,它就会变得非常强大。
看看其中的一些..
答案 3 :(得分:0)
您可以尝试类似于this "event based" rules engine
的内容答案 4 :(得分:0)
我认为任何基于RETE算法的规则引擎都适用于您的情况。你可以试试drools。
答案 5 :(得分:-1)
我认为你正在努力开发专家系统。您可以检查术语,然后检查相应的编程语言为prolog等。