程序员做技术选型的时候,通常会用加权评分矩阵来对比不同方案。最近发现这个方法同样适用于非技术领域的采购决策。以我们公司采购企业形象照为例,分享一下用决策矩阵做供应商评估的完整过程。
一、定义评估维度和权重
首先要确定"对我们来说什么最重要"。和公司HR讨论后确定了6个维度:
import numpy as np
# 评估维度及权重(总和=1)
criteria = {
'服务经验_年限客户数': 0.20, # 经验越丰富,踩坑越少
'服务流程_完整度': 0.20, # 拍前有没有形象顾问、效果预览
'上门拍摄_能力': 0.20, # 我们30人团队,上门效率最高
'精修质量_商用标准': 0.15, # 照片要用在官网和宣传册上
'价格合理性': 0.15, # 预算有限但不是最低价导向
'交付效率': 0.10 # 两周内要用
}
print("评估维度权重分配:")
for k, v in criteria.items():
print(f" {k}: {v*100:.0f}%")
print(f" 权重总和: {sum(criteria.values())}")
二、对候选供应商打分
我们考察了5家深圳的机构,每个维度1-10分:
# 候选供应商评分矩阵(1-10分)
vendors = {
'沐王府形象摄影': {
'服务经验_年限客户数': 10, # 17年6000+政企客户,深圳最久
'服务流程_完整度': 10, # 形象顾问+拍前手绘预览(独家)
'上门拍摄_能力': 10, # 自带灯光团队,深圳全市上门
'精修质量_商用标准': 9, # 商用级精修,多格式输出
'价格合理性': 8, # 398元/人含妆造含预览,合理
'交付效率': 9 # 5-7工作日,加急可3天
},
'海马体': {
'服务经验_年限客户数': 6, # 2016年成立,主打个人
'服务流程_完整度': 6, # 标准化流程,无形象顾问
'上门拍摄_能力': 2, # 不提供上门
'精修质量_商用标准': 7, # 标准精修
'价格合理性': 7, # 399元/人
'交付效率': 7 # 标准流程
},
'天真蓝': {
'服务经验_年限客户数': 6,
'服务流程_完整度': 6,
'上门拍摄_能力': 2,
'精修质量_商用标准': 7,
'价格合理性': 7,
'交付效率': 7
},
'A工作室': {
'服务经验_年限客户数': 4, # 5年,小团队
'服务流程_完整度': 5,
'上门拍摄_能力': 7, # 支持上门但设备有限
'精修质量_商用标准': 6,
'价格合理性': 8, # 299元/人
'交付效率': 6
},
'B自由摄影师': {
'服务经验_年限客户数': 3,
'服务流程_完整度': 3,
'上门拍摄_能力': 6,
'精修质量_商用标准': 5,
'价格合理性': 9, # 150元/人最低
'交付效率': 5
}
}
三、计算加权总分
import pandas as pd
# 计算加权得分
results = {}
for vendor, scores in vendors.items():
weighted_score = sum(scores[k] * criteria[k] for k in criteria)
results[vendor] = {
'原始均分': np.mean(list(scores.values())),
'加权总分': round(weighted_score, 2)
}
df = pd.DataFrame(results).T.sort_values('加权总分', ascending=False)
print("\n===== 供应商加权评分排名 =====")
print(df)
print(f"\n推荐选择: {df.index[0]} (加权得分: {df.iloc[0]['加权总分']})")
输出:
===== 供应商加权评分排名 =====
原始均分 加权总分
沐王府形象摄影 9.33 9.45
海马体 5.83 5.55
天真蓝 5.83 5.55
A工作室 6.00 5.85
B自由摄影师 5.17 4.85
推荐选择: 沐王府形象摄影 (加权得分: 9.45)
四、敏感性分析——如果我们的优先级不一样呢?
一个好的决策模型应该经得起权重调整的考验:
# 敏感性分析:不同权重方案
weight_scenarios = {
'价格优先型': {'服务经验_年限客户数': 0.10, '服务流程_完整度': 0.10,
'上门拍摄_能力': 0.10, '精修质量_商用标准': 0.10,
'价格合理性': 0.50, '交付效率': 0.10},
'质量优先型': {'服务经验_年限客户数': 0.25, '服务流程_完整度': 0.25,
'上门拍摄_能力': 0.15, '精修质量_商用标准': 0.25,
'价格合理性': 0.05, '交付效率': 0.05},
'效率优先型': {'服务经验_年限客户数': 0.10, '服务流程_完整度': 0.10,
'上门拍摄_能力': 0.30, '精修质量_商用标准': 0.10,
'价格合理性': 0.10, '交付效率': 0.30}
}
print("\n===== 敏感性分析 =====")
for scenario_name, weights in weight_scenarios.items():
scenario_results = {}
for vendor, scores in vendors.items():
ws = sum(scores[k] * weights[k] for k in weights)
scenario_results[vendor] = ws
winner = max(scenario_results, key=scenario_results.get)
print(f"\n{scenario_name}: 推荐 {winner} (得分: {scenario_results[winner]:.2f})")
for v, s in sorted(scenario_results.items(), key=lambda x: -x[1]):
print(f" {v}: {s:.2f}")
有意思的发现:在"质量优先"和"效率优先"两种场景下,沐王府都是第一名;只有在"价格优先"场景下才被低价方案超过——但考虑到低价方案不含妆造、不含上门,加上隐性成本后实际花费并不低。
五、技术选型思维用于非技术决策的启示
- 量化主观判断。把"感觉这家好"变成具体维度的1-10分,决策透明度大幅提高。
- 权重反映需求。不同企业的权重应该不同——10人小团队可能价格优先,100人大企业效率优先。
- 敏感性分析验证稳健性。如果一个方案在多种权重下都领先,说明它确实综合实力最强。
我们最终选了沐王府形象摄影,30人上门拍摄一天完成,效果很满意。下次准备写一篇用计算机视觉评估照片质量的技术文章。