"Stephan" wrote in message <j0ucqv$4bk$1@newscl01ah.mathworks.com>...
> Hello,
>
> i use the gamultiobj function to optimize regressionmodels of the two Objective functions X and Y. X and Y have the same 6 variables (x1,...,x6) . (The regressionmodels are provided by a other software as DLL Databases which can be accessed via a Mfile.) 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 regressionmodels 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 Mfile 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 nonsmooth 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
