Using genetic algorithm to minimize standard deviation

Hello,
I am trying to optimize a function and its standard deviation, when the input variables are changing a little bit (Monte Carlo).
function out = fitnessfcn(Y)
disp('MonteCarlo')
X_MCS = MonteCarlo(Y);
t = @(x) x(1)^X(2)-sin(x(2)); %just an example function
temp = zeros(length(X_MCS),1);
for i=1:length(X_MCS)
temp(i,1) = t(X_MCS(i,:));
end
out = [std(temp), t(Y)];
end
[solution,Fval] = gamultiobj(@fitnessfcn,n,A,b,[],[],lb,ub,@(X)nonlin(X),optsmulti);
So I thought now in every generation the whole population runs through my Monte Carlo simulation. PopulationSize is 50, so I should see 50 times my disp 'Monte Carlo' in the command window before a new generations starts, but it looks like this:
(5x) MonteCarlo
Generation Func-count Pareto distance Pareto spread
1 51 1 1
(2x) MonteCarlo
2 101 0 1
(13x) MonteCarlo
3 151 0 1
How can I achieve that the whole population runs through my fitnessfcn, not just some random parts?

 採用された回答

Matt J
Matt J 2021 年 3 月 12 日

0 投票

The fitnesfcn will be called only on those population members that satisfy your constraints. That is undoubtedly why you are seeing only a subset of your population processed. But isn't that what you want?

1 件のコメント

Stephan Freitag
Stephan Freitag 2021 年 3 月 12 日
I didn't think about this, you are so right, thank you!!

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProblem-Based Optimization Setup についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by