MATLAB Answers

Nonlinear multiobjective optimization - Gamultiobj - Options

6 views (last 30 days)
ahmad mahmoodi
ahmad mahmoodi on 3 May 2020
Commented: ahmad mahmoodi on 3 May 2020
Dear all,
I am doing a nonlinear multi-objective optimization using gamultiobj. I know during optimization Matlab always finds some points as possible points of the pareto front and tries to evaluate the objetives around those points.
I am writting the evaluated objectives into a text file.The attached image shows the results. I can see that the red points could be the possible candidates for pareto. Also, technically they match my expected results. But suddenly Matlab evaluates a point which is quite far from the points and are infeasible for objective functions and my optimization ends up with error.
My question is:
What parameter should I change in otimitazion options to let the algorithm understand the evaluated points could be possible points and does not look for a global infeasible point thereafter.
Best regards,


Sign in to comment.

Answers (1)

Thiago Henrique Gomes Lobato
If you write your optimization problem like this:
x = gamultiobj(fun,nvars)
You're basically telling the optimizer that you have an unconstrained problem, so it could test every possible value and, due to mutation, it is expected that some of them may be very far away from the optimum. If your function is unfeasible in some point, you have to explicitely say it to the function. This can be done using the other input arguments of the function:
x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
Were A and b deals with unequality constrains, Aeq and beq equality constrains, lb and ub bounds and nonlcon non-linear constrains. You have then to verify what are the feasibility requirements of your function and then give it to the optimizer. In your case probably bounds would already be enough, so you could write the function as
x = gamultiobj(fun,nvars,[],[],[],[],lb,ub)
For more details you can check the function documentation.

  1 Comment

ahmad mahmoodi
ahmad mahmoodi on 3 May 2020
options = gaoptimset('Display','iter','PlotFcns',@gaplotpareto);
[x,fval,exitflag,output,population,scores] = gamultiobj(FitFcn,nvars,[],[],[],[],lb,ub,nonlcon,options);
Thank you for your reply. I already used this code, including constrains. When I change the objectives it works and gives me the pareto front. Therefore, I guess I have to change some options so that Matlab doesnt search for infeasible global points after identifying the initial acceptable pareto points.

Sign in to comment.