how to plot a fitness or objective function with optimum values
3 ビュー (過去 30 日間)
古いコメントを表示
We want to minimize a simple fitness function of two variables x1 and x2
min f(x) = 100 * (x1^2 - x2) ^2 + (1 - x1)^2;
x
such that the following two nonlinear constraints and bounds are satisfied
x1*x2 + x1 - x2 + 1.5 <=0, (nonlinear constraint)
10 - x1*x2 <=0, (nonlinear constraint)
0 <= x1 <= 1, and (bound)
0 <= x2 <= 13 (bound)
it can be solved by
ObjectiveFunction = @simple_fitness;
nvars = 2; % Number of variables
LB = [0 0]; % Lower bound
UB = [1 13]; % Upper bound
ConstraintFunction = @simple_constraint;
[x,fval] = ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB, ...
ConstraintFunction)
how to plot the objective function with both variables simultaniously with marking the optimim values?
0 件のコメント
採用された回答
Fabio Freschi
2019 年 9 月 11 日
編集済み: Fabio Freschi
2019 年 9 月 11 日
objFun = @(x)100.*(x(:,1).^2 - x(:,2)).^2 + (1 - x(:,1)).^2;
conFun = @(x)[x(:,1).*x(:,2)+x(:,1)-x(:,2)+1.5, 10-x(:,1).*x(:,2)];
LB = [0 0]; % Lower bound
UB = [1 13]; % Upper bound
% resolution
n = 1000;
% regular grid
x1 = linspace(LB(1),UB(1),n);
x2 = linspace(LB(2),UB(2),n);
[X1,X2] = meshgrid(x1,x2);
x = [X1(:) X2(:)];
% evaluate the fitness
Y = objFun(x);
% correct with constraints
Y(any(conFun(x) > 0,2)) = NaN;
% plot
figure;
hold on
s = surf(X1,X2,reshape(Y,size(X1)));
% correct the boundary values
% maybe remove the grid
s.EdgeColor = 'none';
% run GA
% up to you
% plot the best solution
% plot3(x(1),x(2),fval);
1 件のコメント
その他の回答 (1 件)
Matt J
2019 年 9 月 11 日
編集済み: Matt J
2019 年 9 月 11 日
Sounds like you want this?
options = optimoptions('ga','PlotFcn',{'gaplotbestf','gaplotbestindiv'});
[x,fval] = ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB, ...
ConstraintFunction,[],options);
Or, you can write your own custom plot functions as described here,
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Least Squares についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!