email@example.com wrote in message <firstname.lastname@example.org>... > Hello, > > 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
Hi, That's now how gamultiobj works (or multiobjective optimization in general). It is based on NSGA-II, which in turn is based on pareto optimality, which is indifferent to preferences or scaling.
It sounds like you want to define a single aggregate objective that is a function of the preferences/weights and your four objectives. For example, multiply the objective values by the preferences and then sum these quantities to yield a single aggregate value that you can minimize or maximize using a single objective genetic algorithm (the ga function)
Note that determining a meaningful form of aggregation is very important, and the success of various aggregating functions will depend on the characteristics of your particular problem. You should read these:
Das, I. & Dennis, J. A closer look at the drawbacks of minimizing weighted sums of objectives for Pareto set generation in multicriteria optimization problems. Structural Optimization, 1997, 14, 63-69
Messac, A.; Sundararaj, G. J.; Tappeta, R. V. & Renaud, J. E. Ability of objective functions to generate points on nonconvex Pareto frontiers. AIAA Journal, 2000, 38, 1084 - 1091