using discrete values in the gamultiobj-function

Hello,
as part of my thesis, I'm trying to optimize seven parameters with multiobjective optimization using genetic algorithms. Now, these parameters (decision values) are all discrete and not similar to each other.
f.e.: x(1)=[0,0.01,0,02,...], x(2)=[0,1,2,3,...],x(3)=[0,0.16,0.8,16,...],...
How can I handle this problem?
I appreciate your help!
Thank you,
Niels

Antworten (1)

Alan Weiss
Alan Weiss am 25 Mär. 2013

0 Stimmen

Unfortunately, gamultiobj does not accept integer constraints.
The only thing I can suggest is exhaustive search, or maybe exhaustive search in a range of interest. If you have, say, 10 values of each component of x, then there are 10^7 values in an exhaustive search. You might be able to generate all these values if your objective function is relatively quick to evaluate, especially if you write it in a vectorized form. Once you have all 10^7 values, you can generate the K-D objective functions, and look for the appropriate Pareto values.
Sorry I can't offer you anything better.
Alan Weiss
MATLAB mathematical toolbox documentation

5 Kommentare

Is it otherwise possible to run the two-objective optimization with the normal GA-function instead of the gamultiobj-function? Exactly, what's the difference between these two? My optimization code is shown below...which changes I have to make to convert it to GA-optimiaztion?
lb=[LB1,LB2,LB3];
ub=[UB1,UB2,UB3];
POP=input(What's the population size?');
y1 = @(x) Cost(i1,i2,i3,GV,EERSTE,x(1),x(2),x(3));
y2 = @(x) EnergyLoss(i1,i2,i3,GV,EERSTE,x(1),x(2),x(3));
function=@(x) [y1(x) y2(x)];
options = gaoptimset('PopulationSize',POP,'PlotFcns',@gaplotpareto);
[x,fval]=gamultiobj(function,3,[],[],[],[],lb,ub, options);
Thanks,
Niels Ringoot
ga optimizes only one objective function, either y1 or y2 in your formulation. So the answer is no, you cannot just try to minimize "function" using ga.
I suppose you could try to scan the space of solutions by minimizing a linear combination of the objectives:
function = @(x)alpha*y1(x) + (1-alpha)*y2(x)
where alpha is a number ranging from 0 to 1. As you vary alpha, you might get reasonable points that might be on the Pareto frontier. But this might be slow and not so automatic, and I have never tried this, so guarantee nothing. I still think my previous suggestion might have some merit.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
Niels
Niels am 25 Mär. 2013
I will try both ideas
Thank you for your help!
Niels
susana
susana am 3 Feb. 2015
Hello alan
matlab 2014b can do this?
I have 2 objective functions, and 7 decision variables. The decision variables are discretes.
How can I handle this problem?
Thank you,
susana
susana am 5 Feb. 2015
Hello alan
matlab 2014b can do this?
I have 2 objective functions, and 7 decision variables. The decision variables are discretes.
How can I handle this problem?
Please, help me...

Melden Sie sich an, um zu kommentieren.

Gefragt:

am 23 Mär. 2013

Kommentiert:

am 5 Feb. 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by