2010-12-01 3 views
1

Я пытаюсь найти хорошее решение с эволюционной стратегией для 30-мерной проблемы минимизации. Теперь я с успехом разработал простой (1,1) ES, а также самоадаптивный (1, лямбда) ES с шагом в один шаг.Стратегия эволюции с индивидуальными ступенями

Следующим шагом является создание (1, лямбда) ES с индивидуальными шагами по размеру. Проблема в том, что мой код MATLAB еще не работает. Я проверяю на сфере целевой функции:

function f = sphere(x) 
    f = sum(x.^2); 
end 

Построенная результаты ES одним шагом по сравнению один с индивидуальными stepsizes:

results

Синяя линия является производительность 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 

Видит кто-нибудь проблемы?

ответ

0

Ваши мутации имеют предвзятость: они могут только увеличивать параметры, а не уменьшать их. sigmap - вектор (масштабированный) верхний минус нижних границ: все положительные. exp (...) всегда положителен. Поэтому элементы Осигмы всегда положительны. Тогда ваше изменение - Осигма. * Rand (N, 1) и rand (N, 1) также всегда положительны.

Возможно, вы хотели использовать randn (N, 1) вместо rand (N, 1)? С этим односимвольным изменением я считаю, что ваш код оптимизируется, а не пессимизирует :-).

 Смежные вопросы

  • Нет связанных вопросов^_^