如何开始使用大型决策表

2023-12-21

今天我面临一个有趣的挑战,我希望您能就如何处理这种情况提出意见。

所以问题如下(我已将其转换为演示数据,因为如果不熟记公司字典,真正的问题就没有多大意义)。

我们有一个至少包含 16 个条件的决策表。因为管理所有这些(2^16 种可能性)是一项不可能的任务,我们决定只列出例外情况。像这样:

作为一个例子,我只添加了 10 个条件,但实际上(目前)有 16 个。基本思想是我们有一个基线(默认值),它对每个人和该默认值的所有例外都有效。

Example:

You have a foreigner who is also a pirate. If you go through all the exceptions one by one, and condition by condition you remove the exceptions that have at least one condition that fails. In the end you'll end up with the following two exceptions that are valid for our case. The match is on the IsPirate and the IsForeigner condition. But as you can see there are 2 results here, well 3 actually if you count the default. problem example

我们的解决方案

现在我们想出如何解决这个问题,在添加这些异常的 GUI 中,应该运行一个算法来检查此类情况并强制您更具体地定义异常。这仍然只是一个理论,尚未经过测试,但我们认为它可以这样工作。

我的问题

我正在寻找替代解决方案,使规则易于管理并防止出现示例中所示的问题。


您的问题似乎是解决冲突的规则。当多个规则与您的输入(您的外国人和海盗)匹配并且它们最终推荐不同的事物(您的 cangetjob 和 cangetevicted)时,您需要一个策略解决这场冲突。

你提到的是一种解决办法,就是首先消除冲突。然而,这可能并不总是可能的,并且并不总是可取的,因为当用户添加与一组旧规则(他/她没有编写)冲突的新规则时,用户可能不知道如何修改它以删除冲突。

另一种可能的解决方法是优先顺序。为每个规则标记一个优先级(基于用户自身的权限等),按照优先级对匹配的规则进行排序,并按照优先级升序应用。这通常有效并且更易于管理(例如,每个人都知道最高老板的规则是最终的!)

优先级还可用于将特定规则标记为“全局覆盖”。在您的示例中,您可能希望将“IsPirate”设置为覆盖规则 - 这意味着它会覆盖普通人的设置。换句话说,一旦你成为海盗,你就会受到不同的对待。这使得设计一个系统变得非常容易,其中有一堆正常的业务规则管理 90% 的情况,然后是一组以不同方式处理的“异常”,自动覆盖某些事情。在这种情况下,您还应该考虑制作“?”也可在输出列中使用。

另一种可能的解决方法是在每个条件中包含属性。例如,某些条件必须没有“零”才能通过(?无关紧要)。有些条件必须至少有一个“一”才能通过。换句话说,将每个条件标记为“AND”、“OR”或“XOR”。一些流行的文件系统安全性使用这种模型。例如,CanGetJob 可能是 AND(您希望严格遵守工作权利)。 CanBeEvicted 可能是 OR——如果外国人也是海盗,您甚至可能想驱逐他。

AND/OR 方法的一项增强功能是提供一个阈值,在通过该条件之前总结果必须超过该阈值。例如,将 CanGetJob 设置为阈值 2,则它必须至少获得两个 1 才能返回 1。这有时在非明显黑白的情况下很有用。

您可以混合解决方法:例如首先确定优先级,然后使用 AND/OR 来解决具有相似优先级的规则。

可能性是无限的,实际上取决于您的实际需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何开始使用大型决策表 的相关文章

  • 亚马逊MWS feed API问题,取消订单

    请帮我解决这个问题 我很久以前就尝试通过 MWS Feed API 取消亚马逊订单 但它根本没有取消 Feed 提交一切正常 但订单并未取消 下面是我的 Feed XML 我们正在使用我尝试过的报告类型 POST ORDER ACKNOWL
  • Python 是否评估前向引用的类型提示?

    我正在查看 PEP 484 部分转发参考文献 https www python org dev peps pep 0484 forward references并注意到以下声明 该定义可以表示为字符串文字 稍后解决 这让我想知道 稍后 是什

随机推荐

  • 从最小化状态恢复表单时,WS_EX_COMPOSITED 会导致无休止的重画

    The Form从最小化状态恢复时需要无尽的时间来重新绘制 The Form是无国界的 我凌驾于一切之上WndProc and 创建参数 我正在恢复无边界Form从最小化状态到正常状态 我凌驾于一切之上创建参数降低阴影并停止闪烁的方法 pr
  • 按三个不同列中的最大值排序

    我什至不确定是否可以执行此操作 但我想根据三列之一的最大值来排序查询 表结构示例 引导 列 1 列 2 列 3 第 1 3 列有数值 我想根据 1 2 OR 3 的最大值对 select 语句进行排序 例如 record column1 c
  • Akka testkit:时间因素是多少?

    Akka TestProbe 上有多种方法表示它们 正确处理 timeFactor 这意味着什么 http doc akka io api akka 2 0 akka testkit TestProbe html http doc akka
  • NFA 与 DFA 的时间复杂度权衡

    我正在寻找关于 nfa 或 dfa 哪个更好使用以及在编译器中什么情况下使用的讨论 模拟 nfa 与 dfa 的时间复杂度权衡是什么 在编译器的什么情况下 哪一个更合适 从 NFA 构造 DFA 的时间为 O 2 m 其中 m 是节点数 D
  • AWS S3 预签名 URL 包含 X-Amz-Security-Token

    我正在尝试使用 go sdk 为 S3 存储桶中的文件创建预签名 URL 当我从命令行运行程序时 我得到了不包含 X Amz Security Token 的预签名 URL 但如果我使用 lambda 函数中的相同代码 我总是会在 URL
  • 在 Python 类中支持等价性(“平等”)的优雅方法

    在编写自定义类时 通过以下方式允许等效性通常很重要 and 运营商 在 Python 中 这是通过实现 eq and ne 分别采用特殊方法 我发现执行此操作的最简单方法是以下方法 class Foo def init self item
  • 使用 Gtk 3 在 Python 中加载并显示来自网络的图像?

    我正在 Ubuntu 12 04 上使用 Python 和 GTK 3 编写一个应用程序 我遇到的问题是我不知道应该如何使用来自网络的图像文件在我的应用程序中显示 Gtk Image 据我所知 from gi repository impo
  • Axlsx - 设置单元格内文本的格式

    我似乎找不到任何有关是否可以使用多个格式选项填充单个单元格的信息 例如 我希望单元格 A1 填充以下文本 Hello世界 这是excel 这可能吗 如果可以 我应该使用什么语法来执行此操作 对于内联样式 请使用富文本 以下是 axlsx 页
  • 当我尝试运行 Python 脚本时,为什么会出现“预期有缩进块”? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 编辑问题以包括期望的行为 特定问题或错误以及重现问题所需的最短代码 help minimal reproducible example 这
  • VS2015 - 更改 TypeScript 版本

    我正在尝试更新我的 Visual Studio 2015 Cordova TypeScript 项目以使用 TypeScript 版本1 6 0 beta 我目前正在使用1 5 3 我可以使用 NPM 安装最新版本 但我的项目继续使用旧版本
  • 更改列的因子值

    我试图根据同一数据帧的另一列 solve status 列将值分配给数据帧的新列 all solved status 是一个具有 3 个标签的因子 ABC XYZ MNP 我必须根据条件 if ABC then 1 else 0 分配给 0
  • 如何从 Django DeleteView 发送错误消息?

    假设有两个模型Parent and Child Parent to child是一对多的关系 我正在为父模型创建DeleteView 在删除之前我需要检查是否Parent has Children 如果没有Children then Par
  • 计算总 Onclick Javascript

    我正在学习 Javascript 并且对该语言还很陌生 在我的 HTML 代码中 我有两个列表 在第一个选择列表中选择您想要的产品 在第二步中 您选择所需的产品数量 我试图编写一个 javascript 代码 它执行以下操作 获取乘积值并将
  • 使用 Google Maps API 查找某个区域内的街道交叉口

    给定一个正方形区域 找到给定区域内每个街道交叉口的近似坐标的最佳方法是什么 由于没有对您的应用程序的描述 我无法判断您是否需要使用 Google 地图 或者其他数据源是否可以满足您的需求 如果http openstreetmap org h
  • 如何使用资源包设置 fx:value?

    在 java fx 中 可以使用 i18n 标签来使用组件 key符号 例如
  • 如何在加载时处理 webpack ENV 变量?

    当您创建 构建 webpack 时 如何将 ENV 变量传递到代码中是非常清楚的 请参阅此现有线程 在 webpack 中传递环境相关变量 https stackoverflow com questions 30030031 passing
  • 未应用页脚 CSS

    当我写这篇文章时 Hello 一词出现在我的页面顶部而不是底部
  • 如何使 Aero 玻璃背景上的 WPF 文本可读?

    我有一个 WPF 应用程序 可以在 Aero 玻璃背景上绘制文本 问题是根据显示的内容behind在我的应用程序中 玻璃背景上绘制的文本可能会变得难以阅读甚至完全无法阅读 正如您在下面的屏幕截图中看到的 Save Undo and Redo
  • 在c中获取一个字符而不按“enter”

    是否可以 使用常规 scanf 或 getchar 不起作用 因为 输入字符后我必须按 输入 你正在接近的领域ncurses http www gnu org software ncurses
  • 如何开始使用大型决策表

    今天我面临一个有趣的挑战 我希望您能就如何处理这种情况提出意见 所以问题如下 我已将其转换为演示数据 因为如果不熟记公司字典 真正的问题就没有多大意义 我们有一个至少包含 16 个条件的决策表 因为管理所有这些 2 16 种可能性 是一项不