博客搁置了将近半年,最近腾出时间来更新一篇文章 :) 这半年的时间里,我做出了一些重要的决定,比如找工作,找房。

在作出决定的时候,有一个数学方法可以辅助我们仔细权衡利弊,然后为不同的方案打分。这篇文章就是想讲解一下这个方法。

这个方法我也编写成了一个网页版的工具,点击这里可以尝试。不过还是建议先读完本文的介绍,了解其后的背景,这样能更方便地使用。

权衡利弊的办法

我们经常面临的情况,多是对于一个问题,可能 (a) 有多个解决方案,但各有优缺点,但是 (b) 一定要选出一个相对较好的解决方案。

以买电脑为例,我有时候就考虑:

  1. 买一个上网本,轻便,但是性能可能不好,能做的事情也有限,可能只是用来上网或者文字处理。
  2. 买一个加固的笔记本,比如Panasonic的Toughbook系列,重,但是结实,适合户外使用。性能也不错,可以完成复杂一些的应用。
  3. 买一个游戏本,贵,也不能做到完全适合户外应用。但是性能最好,可以做很多事情。
  4. 买一个台式机,价格适中,但是完全没有便携性,不适合户外或移动应用。

那么,究竟买哪一种电脑呢?这时候决策的办法之一,是分清你的需求主次,看上述方案哪一个能最大程度地满足你的主要要求,而在不那么重要的角度上退求妥协。

列出需求,并打分评估

一种常见的办法,是首先列出各个需求,然后给每个需求赋予一个权重。再分别考虑每个方案,评估其在各个需求上的表现(比如从1到5打分)。最后将表现得分需求本身的权重相乘后求和,就得到了方案的得分。

自然,方案得分最高的,就是较好的方案。

举个例子说明。我们在上面的例子中可以总结出如下需求:

  • 重量轻
  • 结实/适合户外使用
  • 性能好
  • 价格便宜

根据个人的喜好,可以给各项需求打个分数,比如对我而言:

  • 结实/适合户外应用 = 3
  • 性能好 = 2
  • 价格便宜 = 1
  • 重量轻 = 0

然后可以列出表格,各个方案分别考虑:每个方案在每项需求上的表现按照1(最差)-5(最好)打分,然后按照权重求得总分:

  重量轻(x0) 结实/适合户外使用(x3) 性能好(x2) 价格便宜(x1) 合计得分
上网本 最好(5)x0=0 一般(3)x3=9 做不到(1)x2=2 最好(5)x1=5 16
Toughbook 做不到(1)x0=0 最好(5)x3=15 比较好(4)x2=8 不太好(2)x1=2 25
游戏本 一般(3)x0=0 一般(3)x3=9 比较好(4)x2=8 做不到(1)x1=1 18
台式机 做不到(1)x0=0 做不到(1)x3=3 最好(5)x2=10 一般(3)x1=3 16

这就可以看出:对我而言,比较有吸引力的方案似乎是:Toughbook > 游戏本 > 上网本 = 台式机

这种评估有没有什么问题?

在上面的例子中,上网本台式机的选项并列,都得到了16分。我们仔细看一下表格,原来这是因为「重量轻」的一项我们给赋予了一个0的权重。

这样,各个方案实际上是无需考虑“重量轻”这一项的。在其他三项需求中,「上网本」和「台式机」得到的分数相同。假如「重量轻」这一项的权重不是0,那么很显然,上网本就一定比台式机有优势,而不是相等。

这样就引出了一个问题:我们上面凭主观印象决定各个需求的权重,有什么道理吗?

改进:用矩阵确定需求的权重

我认为答案是否定的。本博客介绍一种方法,可以使用更加理性的方式,仔细考虑各个需求的权重。

这个方法就是基于如下的一些问题:假如给你需求A但是让你失去需求B,你选择谁?

  • 你愿意为了「重量轻」而放弃「性能好」吗?
  • 你愿意为了「价格便宜」而放弃「重量轻」吗?

我们让第1个需求与剩下的3个需求相比,第2个需求与剩下的2个需求相比,第3个需求与第4个需求相比,就得到了6个比较。

假如在比较的过程中,第x个需求被第y个需求“打败”了,这个比较的结果就是第1个需求记-1分,而第y个需求得1分。我们可以用矩阵表示:

下面的与右侧比较: 重量轻 结实/适合户外使用 性能好 价格便宜
重量轻 0 -1    
结实/适合户外使用 1 0    
性能好     0  
价格便宜       0

上图是在完成一次「结实/适合户外使用」 vs 「重量轻」的比较之后的结果。我相信自己的负重能力,宁愿在户外开展工作而多增加一些重量,所以给「结实」1分,而「重量轻」-1分。显然,对角线上的是需求自身互相比较,没有意义,所以都是0分。

整个表格完成之后,我的决定是这个样子:

下面的与右侧比较: 重量轻 结实/适合户外使用 性能好 价格便宜
重量轻 0 -1 -1 0
结实/适合户外使用 1 0 1 1
性能好 1 -1 0 1
价格便宜 0 -1 -1 0

需要注意的是,如果两个需求之间无法抉择哪个更好,比如「价格便宜」和「重量轻」——我不知道要为了价格便宜而放弃重量轻,还是为了重量轻而放弃价格便宜——比较结果可以都写零。

这样,我们只需要填写半个矩阵,就可以得知完整的情况。而且矩阵对角线右上的三角形和左下一定是符号相反。

因为我们每次比较都是让第一中的需求和其他需求横向比较,所以各个需求的得分来自其各行总分。这个总分就可以作为权重。于是:

  1. 重量轻,权重=-2
  2. 结实/适合户外使用,权重=3
  3. 性能好,权重=1
  4. 价格便宜,权重=-2

可以这样理解:因为权重来自一个需求“打败”其他需求的“成绩”,所以,类似「结实/适合户外使用」的需求一旦得到1分,就在其他3个需求上多了各1分。反之,如果追求不受欢迎的需求,比如「价格便宜」,每为了这个需求增加1分,在别的需求上就各扣一分。

也可以明显看出,我的关注点在于结实/适合户外使用 > 性能好 > 重量轻 = 价格便宜。这种矩阵方法首先捋清了个人的关注点

决策工具

结合矩阵法确定的权重,和前面所属的基于需求的权重对各方案的评估,其结果就是一套改进的用数学方法做出决策的工具:

http(s)://neoatlantis.org/decision-making/

为了便于比较,前文所述的权重结果,在计算出来之后会按照比例调整到0-100的范围。这并不影响最终的方案次序,只是让得分看起来更大、更明显一些。