Multi-criteria decisions

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

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

I like triangular tradeoffs. Triangular #trade-off 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 motivational frameworks to help us go on with our lives (and to be honest to the article, the last one encourages to pick 3️⃣).

These tradeoffs have the same structure and thus, which is why we recognize them as a triangle.

modeling triangular tradeoffs

The most direct representation of triangular tradeoffs is, well, to have a triangle: pick a single corner or a single side. One thing to node is that when picking a side of a triangle, we actually chose an option that is explicitly characterized along two desireable criteria (e.g., Good and Cheap) while implicitly leaving out the third criteria (i.e., not Fast). The fact that criteria are independant of each other is in contrast with tradeoffs which are enunciated as “Cheap or Expensive” because Expensive some is the opposite of Cheap whereas Expensive and Cheap are not related to Good or Bad.

The key observation to make here is that each of the three options actually encode a combination of independant criteria: goodness (Good or not), cost (Cheap or not), and time-to-delivery (Fast or not). If we give a numerical representation to each criteria, say 1 represents Good and 0 represents not-Good (and same for Cheap and Fast). We can then use a three-digit number like 011 (not-Good, Cheap, Fast) to represent various positions on the triangle.

If we step back, the “option” we pick when taking a side of the tradeoff triangle is slightly different from the “option” we pick when deciding to pick a value in the domain of a given criteria. Indeed, the first kind of option picks three digits, whereas the second kind of option picks a single digit. However, the two kinds of “options” are related as the values that either variables can take are bound together each other via the triangle constraint.

With binary values to represent each of the three possible criteria, we have eight possible choices to assign. If we read “a,b,c – pick 2” we could encode the constraint as: pick one of 011, 110, 101. If we step back, and we said that we meant “pick a corner”, this. Thus, the way we chose to model variables will affect the way we express constraints. Sometimes you can get shortcuts like using a single variable with fewer choice than all the combinations of the components’ domain. However such shortcuts may lose applicability or be to distant from reality.

It is often useful to challenge our modeling in this way, because for the four examples of Triangle tradeoffs I gave, we indeed have some notion of “at best pick two” and “worst case pick zero”. In reality, you can totally have some project that are nor good, nor fast, nor cheap (i.e., 000). Let’s call them industrial disasters (e.g., Lidl’s botched SAP). Indeed, abandoning Money will not magically give you Energy and Time. The reality we want to capture with this triangle is more something around if you want more Money you will lose-out on Time or Energy. As a result, the Triangle constraint could be better expressed as 111 is invalid.

Further, in reality each of the criteria are more subtle than having Money or not having Money. Money is literally an account that can take ranges of values (you could also have negative Money if you owe someone) and hence a 0-1 variable is not sufficient to express the subtlety of life experiences. Where I want to bring you is that we need some more granularity when expressing tradeoffs.

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.

the key thing is to realize that when mapping options we are actually defining a dimensional range and giving a name to one end of the range thus concise is the opposite of thorough: they live in a same dimension;

things like monolith vs. microservices are not tradeoffs in the sense that they are presented as options and their outcomes are in other dimensions, but they are tradeoffs because there is more granularity in the choice

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

summary

method method

A simple example