# 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:

- Consistent, Available, Partition-Tolerant – pick 2️⃣
- Good, Fast, Cheap – pick 2️⃣
- Joy, Skill, Needs – pick 2️⃣
- Energy, Money, Time – pick 2️⃣

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).

## monotonicity

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