필터 지우기
필터 지우기

surf can not be drawn/how triple objective function is written in same page with ga solver?

조회 수: 1 (최근 30일)
I define this triple objective function in separate sheet ,but how I can define this with ga solver in same sheet?
%%%%%multiobjective(triple) optimization problems
function Z= tripleobjectivefunction(x,y)
f1 = 0.5.*(x.^2+y.^2) +sin(x.^2+y.^2);
f2 =((3.*x-2.*y+4).^2./8)+((x-y+1).^2)/27+15;
f3 =1/(x.^2+y.^2+1)-1.1.*exp(-(x.^2+y.^2));
Z=[f1,f2,f3];
end
I want to have surf but this is not possible since the function Z is unrecognized.
clc;
clear all;
close all;
nvars = 2;
lb = [-3 -3];
ub = [3 3];
%initial population
%crossover and mutation
options=optimoptions("gamultiobj",'InitialPopulationRange',[1;100],"PopulationSize",50,"MaxGenerations",100,"MaxStallGenerations",100,"FunctionTolerance",1e-4,"MutationFcn",{@mutationadaptfeasible,2},"CrossoverFcn",{@crossoverintermediate, 2},"PlotFcn",{@gaplotpareto ,@gaplotselection ,@gaplotbestf});
[x,fval,exitflag,output,population,score] = gamultiobj(@(x) tripleobjectivefunction(x(1),x(2)),nvars,[],[],[],[],lb,ub,[],options);
optimal_solution = x;
objective_functions = fval;
figure(1)
hold on
box on
plot3(fval(:,1),fval(:,2),fval(:,3),'mo')
figure(2)
[X,Y]=meshgrid(x,fval);
surf(X,Y,length(Z),'FaceAlpha',0.5)
hold off

채택된 답변

Walter Roberson
Walter Roberson 2022년 5월 27일
Your question is not clear.
nvars = 2;
lb = [-3 -3];
ub = [3 3];
%initial population
%crossover and mutation
options = optimoptions("gamultiobj", ...
'InitialPopulationRange', [1;100], ...
"PopulationSize", 50, ...
"MaxGenerations", 500, ...
"MaxStallGenerations", 100, ...
"FunctionTolerance", 1e-4, ...
"MutationFcn", {@mutationadaptfeasible,2}, ...
"CrossoverFcn", {@crossoverintermediate, 2}, ...
"PlotFcn", {@gaplotpareto ,@gaplotselection ,@gaplotbestf});
if isunix()
options.PlotFcn = {};
end
[x,fval,exitflag,output,population,score] = gamultiobj(@(x) tripleobjectivefunction(x(1),x(2)),nvars,[],[],[],[],lb,ub,[],options);
Optimization terminated: average change in the spread of Pareto solutions less than options.FunctionTolerance.
optimal_solution = x;
objective_functions = fval;
figure(1)
hold on
box on
plot3(fval(:,1),fval(:,2),fval(:,3),'mo')
hold off
figure(2)
[X, Y] = meshgrid(linspace(lb(1),ub(1)), linspace(lb(2), ub(2)));
Z3c = arrayfun(@(x,y) tripleobjectivefunction(x,y), X, Y, 'uniform', 0);
Z3d = cell2mat(cellfun(@(z3) reshape(z3, 1, 1, []), Z3c, 'uniform', 0));
s1 = surf(X, Y, Z3d(:,:,1), 'FaceAlpha', 0.5, 'edgecolor', 'none', 'DisplayName', 'First Objective');
hold on
scatter3(x(:,1), x(:,2), fval(:,1), 'rx');
hold off
legend(s1);
figure(3)
s2 = surf(X, Y, Z3d(:,:,2), 'FaceAlpha', 0.5, 'edgecolor', 'none', 'DisplayName', 'Second Objective');
hold on
scatter3(x(:,1), x(:,2), fval(:,2), 'rx');
hold off
legend(s2);
figure(4)
s3 = surf(X, Y, Z3d(:,:,3), 'FaceAlpha', 0.5, 'edgecolor', 'none', 'DisplayName', 'Third Objective');
hold on
scatter3(x(:,1), x(:,2), fval(:,3), 'rx');
hold off
legend(s3)
%%%%%multiobjective(triple) optimization problems
function Z= tripleobjectivefunction(x,y)
f1 = 0.5.*(x.^2+y.^2) +sin(x.^2+y.^2);
f2 =((3.*x-2.*y+4).^2./8)+((x-y+1).^2)/27+15;
f3 =1/(x.^2+y.^2+1)-1.1.*exp(-(x.^2+y.^2));
Z=[f1,f2,f3];
end

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by