私は、30次元最小化問題の進化戦略で良い解を見つけようとしています。今私は、成功した簡単な(1,1)ESと自己適応型(1、ラムダ)ESをワンステップサイズで開発しました。個々のステップサイズの進化戦略
次のステップは、次元ごとに個別のステップサイズを持つ(1、ラムダ)ESを作成することです。問題は、私のMATLABコードがまだ動作しないことです。私は球目的関数でテストしています:
function f = sphere(x)
f = sum(x.^2);
end
ザ・個々のステップサイズとの1対1つのステップサイズでESの結果をプロットした:青い線はパフォーマンスです
ESの個々のステップサイズを示し、赤はESの1ステップサイズを示します。複数のステップサイズと
(1、ラムダ)のコードES:
% Strategy parameters
tau = 1/sqrt(2 * sqrt(N));
tau_prime = 1/sqrt(2 * N);
lambda = 10;
% Initialize
xp = (ub - lb) .* rand(N, 1) + lb;
sigmap = (ub - lb)/(3 * sqrt(N));
fp = feval(fitnessfct, xp');
evalcount = 1;
% Evolution cycle
while evalcount <= stopeval
% Generate offsprings and evaluate
for i = 1 : lambda
rand_scalar = randn();
for j = 1 : N
Osigma(j,i) = sigmap(j) .* exp(tau_prime * rand_scalar + tau * randn());
end
O(:,i) = xp + Osigma(:,i) .* rand(N,1);
fo(i) = feval(fitnessfct, O(:,i)');
end
evalcount = evalcount + lambda;
% Select best
[~, sortindex] = sort(fo);
xp = O(:,sortindex(1));
fp = fo(sortindex(1));
sigmap = Osigma(:,sortindex(1));
end
誰もが問題を見ていますか?