|
"Rakesh Kumar" wrote in message <jfp40q$147$1@newscl01ah.mathworks.com>...
> "Anato" wrote in message <jfmmv6$2np$1@newscl01ah.mathworks.com>...
> > Hi all,
> >
> > I'm having some trouble with multi-objective optimisation. I've completed one optimisation problem where I had an objective function in the form of (just as an example):
> > F1 = x1^2 + x2^2 + x3^2
> > Subject to some non-linear contraints, upper and lower bounds for x. I used fmincon to minimise the problem, and I have results as expected (I'm comparing results to some published material).
> >
> > My next step was dealing with two objective functions. So I now have :
> > F1 = x1^2 + x2^2 + x3^2
> > F2 = x1 + x2 + x3
> > With similar non-linear contraints and upper/lower bounds on x. Now I've been trying to continue using fmincon by combining F1 and F2 to form a new objective function in the form:
> > (1-W)*F1 + W*F2
> > The thought here is that I can manually vary W from 0 to 1, changing the weighting on the functions F1 and F2. However, I don't get results at all like I expect.
> >
> > I've been wondering if there's a better way to do this using fgoalattain instead, but I'm having trouble understanding the syntax for the function, in particular:
> > - How do I include both my objective functions?
> > - goal is a vector containing the values of x1, x2 and x3 that I want
> > - weight should be set to abs(goal) to to give equal weighting to x1,x2 and x3.
> >
> > Thanks for any help.
>
> There are several ways to formulate a multi-objective problem and you will have to work a bit to reformulate in most cases. In such problem there is a set of solution (Pareto set) and the designer selects one of them based on relative importance (or some utility function).
>
> In optimization toolbox, the functions fgoalattain and fminimax solves for one such optimal design point (and not a Pareto set). Hence, they also require additional aprior information (a form of utility function) about 'relative importance' of each objective.
>
> 1. Goal attainment problem.
> http://www.mathworks.com/help/toolbox/optim/ug/fgoalattain.html
>
> In this case, you set a goal (expected minimum) for each objective and let the solver (fgoalattain) over/under achieve these goals. The goal attainment (F_i - F_i*) is often weighted to indicate relative importance of goals and if you don't have any relative importance, it is set to a vector of ones. With goals and weights available, the multi-objective problem is turned into a single objective and hence you get one solution. See more on the formulation:
> http://www.mathworks.com/help/toolbox/optim/ug/brnoyfe.html
>
> Example:
> http://www.mathworks.com/help/toolbox/optim/ug/brn4npl.html#f11303
>
> 2. minimax problem
> http://www.mathworks.com/help/toolbox/optim/ug/fminimax.html
> This is just a special case of goal attainment when you set the goals to zero. The weights are all equal for each objective (set to a vector of ones). This formulation is useful in some cases whereas goal attainment is more general.
>
> The third approach is to solve for the entire Pareto set (no apriori utility function, goals/weights are required). Obviously, at the end you will select one solution from the Pareto set (you apply some utility function afterwards but you also know more about the alternative solution). If you have Global Optimization Toolbox, you can use gamultiobj function to get a Pareto set. This solver also let you to run fgoalttain at the end of GA iterations to get more accuracy. For this feature, you can use the 'HybridFcn' option for the solver.
> http://www.mathworks.com/help/toolbox/gads/gamultiobj.html
>
> This solver does not support nonlinear constraints.
>
> I encourage you to read some material on multi-objective topic from the documentation (see the links above).
>
> hth,
> Rakesh
>
Hi Rakesh,
Thanks for the explanation, it makes the purpose of each function clearer. I've looked into gamultiobj to generate an entire Pareto set, and that gives me what I need.
Cheers
Anato
|