Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
which is the best way to consider constraints?, can gamultiobj also detect a non convex shaped paretofront?

Subject: which is the best way to consider constraints?, can gamultiobj also detect a non convex shaped paretofront?

From: Stephan

Date: 29 Jul, 2011 13:33:19

Message: 1 of 2

Hello,

i use the gamultiobj function to optimize regression-models of the two Objective functions X and Y. X and Y have the same 6 variables (x1,...,x6) . (The regression-models are provided by a other software as DLL Databases which can be accessed via a M-file.) The two Objective functions X and Y contradict each other, so that the result of my optimization is a paretoset.

I have two important questions:

1. which is the best way to consider constraints?
the regression-models which are provided by the database are not intelligent. so i must consider the following two constraints

x3>x6 && x4>x6.

Currently i do this by reducing the rank of points which violate constraints. I do this by giving the functions poor values (10 and 700) in the M-file instead of the real value of the database:

 if x(3) > x(6) && x(4) > x(6);
          f(1)=X([x(1) x(2) x(3) x(4) x(5) x(6)]);
          f(2)=Y([x(1) x(2) x(3) x(4) x(5) x(6)]);
     else f(1)=10;
           f(2)=700;
end;

I use a hight mutation rate (crossover fraction = 0.2 ) so that i get quite good results.
Is there a better method to consider constraints?

2. can gamultiobj also detect a non convex shaped paretofront?

Today i run the optimization and i recorded the process (all points which were used by gamultiobj) in a scatter plot. One thing i wondered about was that the resulting paretofront of gamultiobj did not include all of the points which are considered as paretooptimal. Especially at points of the paretofront where it has a nonconvex shape the results are not optimal. I use a population of 1000 and i set the Pareto front population fraction to 0.35. But the resulting paretofront consist of only ~100 points.
How do i have to set the options of the algorithm to obtain better results?

Thanks in advance.

Best regards
Stephan

Subject: which is the best way to consider constraints?, can gamultiobj also detect a non convex shaped paretofront?

From: Steve Grikschat

Date: 29 Jul, 2011 14:57:14

Message: 2 of 2

"Stephan" wrote in message <j0ucqv$4bk$1@newscl01ah.mathworks.com>...
> Hello,
>
> i use the gamultiobj function to optimize regression-models of the two Objective functions X and Y. X and Y have the same 6 variables (x1,...,x6) . (The regression-models are provided by a other software as DLL Databases which can be accessed via a M-file.) The two Objective functions X and Y contradict each other, so that the result of my optimization is a paretoset.
>
> I have two important questions:
>
> 1. which is the best way to consider constraints?
> the regression-models which are provided by the database are not intelligent. so i must consider the following two constraints
>
> x3>x6 && x4>x6.
>
> Currently i do this by reducing the rank of points which violate constraints. I do this by giving the functions poor values (10 and 700) in the M-file instead of the real value of the database:
>
> if x(3) > x(6) && x(4) > x(6);
> f(1)=X([x(1) x(2) x(3) x(4) x(5) x(6)]);
> f(2)=Y([x(1) x(2) x(3) x(4) x(5) x(6)]);
> else f(1)=10;
> f(2)=700;
> end;
>
> I use a hight mutation rate (crossover fraction = 0.2 ) so that i get quite good results.
> Is there a better method to consider constraints?
>
> 2. can gamultiobj also detect a non convex shaped paretofront?
>
> Today i run the optimization and i recorded the process (all points which were used by gamultiobj) in a scatter plot. One thing i wondered about was that the resulting paretofront of gamultiobj did not include all of the points which are considered as paretooptimal. Especially at points of the paretofront where it has a nonconvex shape the results are not optimal. I use a population of 1000 and i set the Pareto front population fraction to 0.35. But the resulting paretofront consist of only ~100 points.
> How do i have to set the options of the algorithm to obtain better results?
>
> Thanks in advance.
>
> Best regards
> Stephan

Hi Stephan,

Regarding point 1, another way to enforce constraints (I can't be sure that it will perform better than your piecewise non-smooth objective) is to pose them in the constraint inputs (A,b,Aeq,beq,lb,ub). In this case, you have two linear constraints:

x3>= x6 and x4>= x6

Just formulate this for A with b being [0;0]. Also, you'll want to change the crossover fraction to be higher in that case.

On point 2, there is no guarantee of convexity or optimality of the pareto front returned. Also, keep in mind that gamultiobj maintains a few pareto sets at any given time.

I think you misunderstand the meaning of the pareto fraction. The 0.35 doesn't mean that gamultiobj will always return 350 solutions. It mean that it will return *at most* 350 solutions. However, it will only return as many as it can find (that meet the distance criteria).

Regards,
+Steve

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us