Finding Pareto Front of Shaffer's 2nd function.

2 views (last 30 days)
I couldn't understand what was wrong with the following code of mine,
main.m
x = -5:0.1:5;
y = schaffer2(x);
plot(x,y(:,1),'.r');
hold on
plot(x,y(:,2),'.b');
lb = -5;
ub = 5;
fminuncOptions = optimoptions(@fminunc, ...
'Display','iter', ...
'Algorithm','quasi-newton');
options = optimoptions('HybridFcn',{@fminunc, fminuncOptions});
options = optimoptions(options, 'gamultiobj', ...
'PopulationSize',60, ...
'PlotFcns',@gaplotpareto);
[x,f,exitflag] = gamultiobj(@schaffer2,1,[],[],[],[],lb,ub,options);
This code is generating the following error,
>> main
Error using optimoptions (line 114)
Invalid solver specified. Provide a solver name or handle (such as 'fmincon' or @fminunc).
Type DOC OPTIMOPTIONS for a list of solvers.
Error in main (line 15)
options = optimoptions('HybridFcn',{@fminunc, fminuncOptions});
>>
Can somebody explain why is this code generating error?
_____
schaffer2.m
function y = schaffer2(x) % y has two columns
% Initialize y for two objectives and for all x
y = zeros(length(x),2); % ready for vectorization
% Evaluate first objective.
% This objective is piecewise continuous.
for i = 1:length(x)
if x(i) <= 1
y(i,1) = -x(i);
elseif x(i) <=3
y(i,1) = x(i) -2;
elseif x(i) <=4
y(i,1) = 4 - x(i);
else
y(i,1) = x(i) - 4;
end
end
% Evaluate second objective
y(:,2) = (x -5).^2;

Accepted Answer

Walter Roberson
Walter Roberson on 9 Jan 2017
options = optimoptions(@gamultiobj, 'HybridFcn',{@fminunc, fminuncOptions});

More Answers (1)

brikh lamine
brikh lamine on 12 Oct 2017
hello, I search the vector of the front Pareto real of the function of test Schaffer 2?

Community Treasure Hunt

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

Start Hunting!