Multi-criteria decisions

On Wed, 21 Dec 2022, by @lucasdicioccio, 566 words, 0 code snippets, 5 links, 1images.

This article is still considered unfinished and content may change significantly.

I like triangular tradeoffs. Triangular tradeoffs are easy to come-up with, easy to catch, and you can write and re-hash the same terrible blog article and people will love it.

Triangular tradeoffs

Triangular tradeoffs are tradeoffs where you lay options along the sides of a triangle, and you can only pick one corner of the triangle, leaving the opposite side unavailable (it also works if each corner is an option and you need to pick one side). You can construct a triangular trade-off with the template sentence A,B,C - pick two (or pick 2️⃣).

Examples of triangular tradeoffs:

You probably have encountered such sentence because triangular tradeoffs arise in many context. The first one is the CAP-Theorem: an impossibility result in computer science. The second one is a form of project-management gimmick. Whereas the two last ones are some psychology or motivational memes to help us go on with our lives.

These three four tradeoffs have the same structure and thus are familiar with each other.

modeling triangular tradeoffs

We can have the triangle representation: pick a single corner or a single side. Each side being evaluated according to two criteria.

In reality, you can totally have some project that are nor good, nor fast, nor cheap. Let’s call them industrial disasters (e.g., Lidl’s botched SAP).

We can have a binary value to represent each of the three possible criteria: good, fast, and cheap. The constraint then can be expressed as 111 is invalid.

Tradeoffs on Ranges

We can give a weight, as a scalar value, for each of the binary choice. Rather than limiting ourselves to true and false we can pick more granular values, which allow to express more nuance between choices. For instance, let’s stay we can give a value in the [0 ... 100] interval, where 0 is the equivalent of false and 100 it the equivalent of true.

We now are equipped with something that allows to quantify how much we are situated in the design space.

Going further

You are free to encode mapping between physically measurable quantities as long as the mapping have some reasonable assumptions (in particular, some form of monotonicity and maybe some continuity).


In general, when modeling a value for a tradeoff, there are two extremes for bad and good along an axis (e.g., fast is zero and slow is infinite). What you want to avoid are forms of functions that contain regression (e.g., taking 3 months being measured faster than taking 1 month). In such a situation your model loses applicability (and probably resolution) because somehow some phenomenon is inconsistent with our human-made understanding.

continuity or lack-of

Functions you pick could be discontinuous (e.g., a natural number between 0 and 100) or (e.g., a real number between 0.0 and 100.0). When using a computer for picking a tradeoff, for performance and practical reason, you’ll get truncated values (Real numbers are … not really tangible to be fair and I’m digressing but I feel they are not “really” numbers, I prefer to call them limits)

Going even further

You are free to use a constraint an outcome to some minimal value. Here we are blurring the lines between:

  • modifying the current model to take more things into account
  • using an output of the current model as a modeling basis for another model

Typically, this approach can be useful in to iteratively model a system in increasingly high-level stages. Sometimes a first analysis will reveal some analytical form (i.e., you can take shortcuts when deciding to map physical values to decision dimensions).

binary tradeoffs

Binary tradeoff

  • Time is Money
  • Heisenberg uncertainty principle
  • Time-Space constraints
  • Long-term vs. Short-term



A simple example