Q:

Fitness Function - What to do, if value of one Chromosome features is much higher than other ones

I am trying to write a Fitness Function for my Genetic Algorithm. I have got three features (F1,F2,F3 - All are numeric variables), which are taken into consideration for rating the chromosome. If all of them are equally important I can write such equation:

If their importance would be different, I can multiply features by different constants.
It will all work, if values of all three features would have the same interval. 
But what if F1 and F2 could have a value from (0,10) and F3  for example(0,49)?
How could I approximately scale it? Or should I approach it differently?

A:

Scale all your values to [0..1]
Assign a weight / importance to every value
Multiply every scaled value with its weight
Divide the sum of all values from step 3 by the sum of all weights

I don't know which language you are using, so here is some C# code:
Feature Class
public class Feature
{
    public double Importance { get; set; }
    public double Value { get; set; }
    public double LowValue { get; set; }
    public double HighValue { get; set; }

    public double ScaledValue
    {
        get
        {
            // Make sure value is within bounds
            double intermediate = Math.Max(Math.Min(LowValue, HighValue), 
                Math.Min(Math.Max(LowValue, HighValue), Value));

            // Scale from 0 to 1 within defined bounds
            double scaledValue = (intermediate - LowValue)/(HighValue - LowValue);
            return scaledValue;
        }
    }
}

Example Calculation
// low importance (1), values from [20..-10] (less is better)
var f1 = new Feature
{
    Importance = 1,
    Value = 0,
    LowValue = 20,
    HighValue = -10
};

// low importance (1), values from [0..10] (more is better)
var f2 = new Feature
{
    Importance = 1,
    Value = 1,
    LowValue = 0,
    HighValue = 10
};

// high importance (5), values from [0..49]
var f3 = new Feature
{
    Importance = 5,
    Value = 25,
    LowValue = 0,
    HighValue = 49
};

var features = new[] {f1, f2, f3};
var score = features.Sum(f => f.ScaledValue*f.Importance)/features.Sum(f => f.Importance);
Debug.WriteLine(score);

