I am currently using GAMULTIOBJ to perform a multi-objective minimization optimization. I currently have four objectives, each providing a value in the range [0,1]. My Fitness Function takes as input a single candidate from the population, and returns a value in the range [0,1] for each objective.
My understanding is that the above assumes uniform weighting of each of the objective values. Even if this is an incorrect assumption, I am interested in weighting each of these values using a concept of "importance". For instance, the first two objective values are much more important to optimize over than the second two, and thus I would like to weight them higher. Ideally, I would like a user to specify an importance vector, say, [0.45, 0.45, 0.05, 0.05] that specifies the relative importance of each objective. The desired behavior is then to have the underlying GAMULTIOBJ optimization procedure to use this weighting.
I know that fgoalattain is designed to specify goals and weights as input, but it doesn't seem to give me the Genetic Algorithm nature of GAMULTIOBJ that fits nicely into my problem. I know that fgoalattain can be specified as a HybridFcn, but understand that it runs AFTER GAMULTIOBJ finishes successfully. If there was a way to have fgoalattain (essentially the goal and weights parameters) be integrated into how GAMULTIOBJ operates.
If the only work-around is to use these weights to adjust the objective scores before returning them from the Fitness Function, how could this be done? Would one solution be to multiply the objective values by a scalar, where the larger the scalar the more important the value should be?
Please let me know your thoughts. Thank you in advance. Chris