Adding or Multiplying? Two ways of expressing fitness are "standardized fitness" and "adjusted fitness". In std. fitness, values are non-negative, with 0.0 being the best and +infinity the worst. In adj. fitness, values are in the range 1.0 to 0.0, with 1.0 the best, and 0.0 the worst. If there are several different fitness components to be combined to describe the total measured fitness of an organism, I think the choice of using Sum or Product to combine them depends on whether you are using std or adj fitness. Suppose there are two components, A and B, to be combined, and suppose each component is either perfect (std = 0) or very bad (std = 1000000). Here's three cases: Case 1: Case 2: Case 3: Both Perfect One Perfect Neither Perfect ---------------- -------------------- ----------------------- A B A B A B Std: 0 0 0 1E+6 1E+6 1E+6 Adj: 1.0 1.0 1.0 1E-6 1E-6 1E-6 Now combine them, both with Sum and with Product: Std Sum: 0.0 1E+6 2E+6 Std Product: 0.0 0.0 1E+12 Adj Sum: 2.0 1.0 2E-6 Adj Product: 1.0 1E-6 1E-12 Two of these don't make sense: Std Product gives a perfect 0.0 result for Case 2, even though one score was bad. Adj Sum gives a score of 2.0 for Case 1, which is outside the allowed 1.0 to 2.0 range. Std Sum and Adj Product give nice total scores. I think Sum is the correct operation with Standard fitness, and Product is correct for Adjusted fitness. If fact, if we insert a logarithm in our procedure, we can make Std Sum and Adj Product be the same: Distinguish Raw Fitness from Std Fitness. Let Raw Fitness be the raw distance from the computed result to the Goal (0 is prefect, increasing distance is worse). Then define std fitness thus: sf = log ( 1.0 + rf ) The prefect raw fitness 0.0 maps to std fitness 0.0, which is what we want. Now here are the tables again: ////////////// Case 1: Case 2: Case 3: Both Perfect One Perfect Neither Perfect ---------------- -------------------- ----------------------- A B A B A B Raw: 0 0 0 1E+6 1E+6 1E+6 Std: 0 0 0 6 6 6 Adj: 1.0 1.0 1.0 1/7 1/7 1/7 Raw Sum: 0.0 1E+6 2E+6 Std Sum: 0.0 6 12 Adj Product: 1.0 1/7 1/14 Now define an Alternate result, which is 1.0 / 1.0 + ( log ( 1.0 + StdSum ) ) Alt: 1.0 1/7 1 / 7.3 ////////////// Case 1: Case 2: Case 3: Both Perfect One Perfect Neither Perfect ---------------- -------------------- ----------------------- A B A B A B Raw: 1 1 1 6 6 6 Std: 0 0 0 1E+6 1E+6 1E+6 Adj: 1.0 1.0 1.0 1E-6 1E-6 1E-6 Raw Sum: 0.0 6 12 Std Sum: 0.0 1E+6 2E+6 Adj Product: 1.0 1E-6 1E-12 Now define an Alternate result, which is 1.0 / 1.0 + ( log ( 1.0 + RawSum ) ) RawSum = log ( 1.0 + Std ) Std = ( 10 ** Raw ) - 1 Alt: 1.0 1E-6