Matriz de decisão🔗

Problema. Escolher entre três ou quatro opções com base em critérios que têm pesos diferentes, sem abrir uma planilha.

Solução. Um ramo por opção, atributos com as notas de cada critério, e uma fórmula de soma ponderada.

Antes de começar

O que você vai aprender

  • Comparar opções com critérios de peso diferente, dentro do mapa
  • Registrar os pesos de forma explícita e revisável
  • Usar o resultado como apoio à decisão, não como decisão

Estrutura🔗

Decisão: qual banco de dados?
├── Critérios (pesos)
│   ├── desempenho    peso: 3
│   ├── custo         peso: 2
│   ├── maturidade    peso: 3
│   └── equipe conhece peso: 1
├── PostgreSQL
│   ├── desempenho: 4   custo: 5   maturidade: 5   equipe: 3
│   └── pontuação: (fórmula)
├── MySQL
│   └── ...
└── SQLite
    └── ...

Passos🔗

  1. Registre as chaves em Gerenciar atributos do mapa: desempenho, custo, maturidade, equipe, e restrinja os valores a 15.

  2. Em cada nó de opção, preencha os quatro atributos com notas de 1 a 5.

  3. Adicione o atributo pontuação com a fórmula ponderada:

    =(node['desempenho'].num0 * 3
    + node['custo'].num0 * 2
    + node['maturidade'].num0 * 3
    + node['equipe'].num0 * 1)
  4. Para não ter os pesos codificados na fórmula, guarde-os num nó Critérios e leia de lá:

    =def crit = node.map.root.find { it.text == 'Critérios' }.first()
     crit.children.sum { c -> node[c.text].num0 * c['peso'].num0 }

    Assim, mudar um peso recalcula todas as opções de uma vez — que é o ponto de fazer isso no Freeplane em vez de à mão.

  5. Adicione um nó Vencedora com:

    =def opcoes = node.parent.children.findAll { it['pontuação'] }
     opcoes.max { it['pontuação'].num0 }?.text ?: '—'

Percentual relativo🔗

Para ver a distância entre as opções:

=def opcoes = node.parent.children.findAll { it['pontuação'] }
 def max = opcoes.collect { it['pontuação'].num0 }.max()
 max ? "${(node['pontuação'].num0 * 100 / max).round()}%" : '—'

Barra visual🔗

=def n = (node['pontuação'].num0 / 5) as int
 '█' * n

Estilo condicional🔗

Uma regra que aplique fundo verde à opção com maior pontuação torna o resultado visível sem ler números. A condição pode ser sobre um atributo auxiliar vencedora calculado por fórmula.

O valor do exercício🔗

Vale dizer o óbvio: a soma ponderada não decide nada. O que ela faz é explicitar os critérios e os pesos, que é onde a discussão de verdade acontece.

Um mapa de decisão bem montado costuma mudar de resultado quando alguém questiona um peso — e essa conversa é o produto, não o número.

Guarde no mapa, num ramo Registro, quem participou, quando, e o que foi discutido sobre cada peso. Seis meses depois, é isso que você vai querer ler.

Erros comuns

  • Ajustar os pesos depois de ver a pontuação, até o resultado bater com o que você já queria
  • Usar escalas diferentes entre critérios (1–5 num, 0–100 noutro) e somar como se fossem comparáveis
  • Esquecer de restringir os valores, e ter 4, 4.0 e quatro no mesmo critério
  • Tratar a pontuação como veredito: ela ordena opções, não decide por você

Você aprendeu

  • Pesos explícitos tornam a decisão auditável meses depois
  • Escala única entre critérios é pré-requisito para a soma fazer sentido
  • O mapa guarda junto a nota, o peso e a justificativa — a planilha não
  • A pontuação é insumo da conversa, não substituto dela

Perguntas para reflexão

  1. Por que ajustar pesos depois de ver o resultado invalida o exercício?
  2. Que problema aparece ao misturar escalas entre critérios?
  3. O que a matriz no mapa oferece que uma planilha não oferece?
  4. Como você testaria se a sua decisão é robusta a mudanças de peso?

Artigos relacionados

Referências🔗

  1. Freeplane — Formulas
  2. Freeplane — Scripting: atributos