Ruby on rails 在给定一组嵌套规则的情况下,决定一个值的最合乎逻辑的方法是什么?我们如何储存它?

Ruby on rails 在给定一组嵌套规则的情况下,决定一个值的最合乎逻辑的方法是什么?我们如何储存它?,ruby-on-rails,data-structures,decision-tree,Ruby On Rails,Data Structures,Decision Tree,我需要实现对我来说像决策树的东西(尽管搜索该术语会返回关于找出决策过程中的影响因素的帖子——这不是我想要的) 我正在构建的系统将根据一些标准确定产品安装的保修期。要求创建一组可能的向量(例如安装间距、剖面、位置、材料类型等),并要求用户将这些向量组装成树形结构: -- Profile == corrugate (warranty = 20 years) -- Pitch >= 0 && < 5 (warranty = 2 years) -- Pitch >

我需要实现对我来说像决策树的东西(尽管搜索该术语会返回关于找出决策过程中的影响因素的帖子——这不是我想要的)

我正在构建的系统将根据一些标准确定产品安装的保修期。要求创建一组可能的向量(例如安装间距、剖面、位置、材料类型等),并要求用户将这些向量组装成树形结构:

-- Profile == corrugate (warranty = 20 years)
  -- Pitch >= 0 && < 5 (warranty = 2 years)
  -- Pitch >= 5 && < 20 (warranty = 10 years)
-- Environment == coastal && distance <= 500 meters (warranty 2 years)
--外形==波纹状(保修期=20年)
--螺距>=0&<5(保修期=2年)
--螺距>=5和<20(保修期=10年)

--环境==海岸和距离我想这就是你想要的: -它甚至使用了一个类似的例子,根据一些反馈数据,决定加入或退出某个程序。因此,根据您的示例-使用某些标准来决定是否可以使用保修。 它使用一种名为“decisiontree”的宝石


希望这能有所帮助。

我认为一棵树(或多棵树——因为在做出决定之前,一次只能比较一个向量元素)可以非常直观地转换这些数据。可能有一种更简洁的方法来实现这一点,但如果将来有人会查看此代码,则tree方法将帮助他们维护它。

如果您再添加一个概要文件,您的问题会读得更清楚:我必须重新阅读以理解您的意思,因为您的示例只有一个分支!Thans Andrew,我现在已经更新了:)@BrendonMuir你找到一个简单的实现或gem来实现你的目标了吗?@westonplatter,我最终使用
祖先
作为树结构,使用
作为列表
进行排序。我使用单表继承来满足不同的决策类型。效果非常好。我使用
jstree
实际显示并允许对树进行拖放操作。按照我的逻辑,我们从0年保修开始,然后逐步完成这棵树。设定保修期的第一条规则是,我们先设定保修期,然后通过只接受较低的值来减少保修期,直到我们走完这棵树为止。所有这些都是在内存模型中使用纯Ruby完成的。嗨,Nick。我很感激你能尝试一下。不幸的是,这个例子和gem似乎是关于优化决策逻辑,而不是作为决策的框架。我得出的结论是,由于树结构需要能够由实际的最终用户在web界面中构建,因此我需要手动开发它。效率不太必要,因为树相对较小,保修申请也不频繁。谢谢。你说得对。我已经开始实施这个项目,并使用祖先和acts_as_list gems来管理it和STI的后端,以便树中的节点可以采取不同的行动。