How to plot 3 objective function pareto front in pso

Hi,
I have 3 objective function namely F1, F2, F3. I used PSO for solving this function by combining 3 into 1 as follows.
F=a1*F1+a2*F2+a3*F3
a1, a2, a3 are some constants.
I want to plot all the 3 objectrtive function together to show the result.
Please help me in this.
Thanks in advance.

 채택된 답변

Tanmay Das
Tanmay Das 2021년 12월 30일

0 개 추천

Hi,
You may find this example of Plotting 3-D Pareto Front helpful.
The example first shows how to obtain the plot using the built-in 'psplotparetof' plot function. Then solve the same problem and obtain the plot using 'gamultiobj', which requires slightly different option settings. The example shows how to obtain solution variables for a particular point in the Pareto plot. Then the example shows how to plot the points directly, without using a plot function, and shows how to plot an interpolated surface instead of Pareto points.

댓글 수: 4

Thank you..
Hi,
I tried this command for my function.
options = optimoptions('paretosearch','UseVectorized',true,'ParetoSetSize',200,...
'PlotFcn','psplotparetof');
[x,f] = paretosearch(fun,3,[],[],[],[],lb,ub,[],options);
But it shows error as follows
Unable to perform assignment because the size of the left side is 199-by-3 and the size of the right side is 1-by-3.
Error in globaloptim.internal.FcnEvaluator/getAllPoints_vectorized (line 68)
fval(isFeasible,:) = fvalFeas;
Error in globaloptim.internal.FcnEvaluator/evaluateAll (line 12)
[idx, X, fval, residuals] = getAllPoints_vectorized(obj);
Error in globaloptim.paretosearch.coldstart (line 114)
[idx, objval, residuals] = optimState.FcnEvaluator.evaluateAll();
Error in globaloptim.paretosearch.initialize (line 32)
globaloptim.paretosearch.coldstart(objfun,linConstr,nonlcon,optimState,options);
Error in globaloptim.paretosearch.driver (line 28)
globaloptim.paretosearch.initialize(objfun,linConstr,nonlcon,optimState,options);
Error in paretosearch (line 234)
[X,FVAL,EXITFLAG,OUTPUT,CINEQ,CEQ] = globaloptim.paretosearch.driver(objfun,nonlcon,optimState,linConstr,options,OUTPUT);
Error in plot_traf (line 11)
[x,f] = paretosearch(@facility,nvars,[],[],[],[],lb,ub,[],options);
Please help me out this.
You used 'UseVectorized', true . When you do that, your function needs to return a 2D array that is (number of input rows) x (number of objective functions). However your code is returning only one row instead when a 2D array is input.
Thank you so much..

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Multiobjective Optimization에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2021년 12월 27일

댓글:

2021년 12월 31일

Community Treasure Hunt

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

Start Hunting!

Translated by