1
我試圖找到一個很好的解決方案與進化策略的30維最小化問題。現在我已經成功開發了一種簡單的(1,1)ES和一種步長的自適應(1,λ)ES。進化策略與個人步驟
下一步是創建一個(1,lambda)ES,每個維度具有單獨的步長。問題是我的MATLAB代碼還沒有工作。我測試的球的目標函數:
function f = sphere(x)
f = sum(x.^2);
end
繪製的ES的結果與一個步長對一個個別stepsizes:
藍線是表現的ES具有單獨的步長,而紅色的ES具有一個步長。
爲(1,λ-)代碼ES具有多個stepsizes:
% 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
是否有人看到的問題?