フィルターのクリア

how to plot a fitness or objective function with optimum values

3 ビュー (過去 30 日間)
manish kumar
manish kumar 2019 年 9 月 11 日
コメント済み: Fabio Freschi 2019 年 9 月 11 日
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?

採用された回答

Fabio Freschi
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 件のコメント
Fabio Freschi
Fabio Freschi 2019 年 9 月 11 日
Edit to make the contraint calculation compatible with ga

サインインしてコメントする。

その他の回答 (1 件)

Matt J
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,

カテゴリ

Help Center および File ExchangeLeast Squares についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by