【发布时间】:2013-05-29 20:27:33
【问题描述】:
我需要根据一组相当大的 8 个相互依赖的条件做出决定。
| A | B | C | D | E | F | G | H
-----------+---+---+---+---+---+---+---+---
Decision01 | 0 | 1 | - | 1 | 0 | 1 | - | 1
Decision02 | 1 | 0 | - | 0 | 0 | - | 1 | -
...
Decision11 | 1 | 0 | 1 | 1 | 1 | - | 1 | 1
从 A 到 H 的每个条件都可以为真 (1)、假 (0) 或与决策无关 (-)。
所以对于给定的输入
A B C D E F G H
1 0 1 0 0 1 1 1
它应该评估为Decision02。
决策是明确的,因此从任何给定的输入条件集可以清楚地看出必须做出哪个决策(并且在决策矩阵未涵盖的情况下,应抛出异常)。
在我之前从事此项目的开发人员试图将其实现为一个 500 行长的嵌套 if 庞然大物,这当然是错误的,而且不可维护。
因此,我寻找了实现这种逻辑的最佳方式,并找到了决策表/查找表/控制表。
我找到了很多决策表生成器,但没有找到关于如何实现决策过程的代码:(
我可以在底层 MSSQL 数据库、代码、xml 或其他任何方式中制作决策表。我只需要一些关于如何实现这一点的指示。
实现此逻辑的最佳做法是什么?字典?多维数组?完全不同的东西?
【问题讨论】:
-
Nullable boolean 是我要开始的地方... bool?可以是真假或空
-
@Sayse By - 他的意思是它不重要,例如它可以是 1 或 0。
标签: c# matrix logic decision-tree control-structure