jDE (адаптивная дифференциальная эволюция) - PullRequest
0 голосов
/ 10 июля 2020

В jDE у каждого человека свои значения F и CR. Как программно присвоить эти значения каждому человеку. Как обновить эти значения.

Псевдокод поможет.

1 Ответ

0 голосов
/ 11 июля 2020

Если вы хотите, чтобы у каждого человека были свои собственные значения F и CR, вы можете просто сохранить их в списке. (Псевдокод: Python)

ID_POS = 0
ID_FIT = 1
ID_F = 2
ID_CR = 3

def create_solution(problem_size):
    pos = np.random.uniform(lower_bound, upper_bound, problem_size)
    fit = fitness_function(pos)
    F = your_values
    CR = your values 
    return [pos, fit, F, CR]
    
def training(problem_size, pop_size, max_iteration):
    # Initialization
    pop = [create_solution(problem_size) for _ in range(0, pop_size)]
    
    # Evolution process
    for iteration in range(0, max_iteration):
        for i in range(0, pop_size):
            # Do your stuff here
            pos_new = ....
            fit_new = ....
            F_new = ...
            CR_new = ...
            
            if pop[i][ID_FIT] < fit_new:    # meaning the new solution has better fitness than the old one.
                pop[i][ID_F] = F_new 
                pop[i][ID_CR] = CR_new      # This is how you update F and CR for every individual.
            ...

Вы можете проверить, что мое репо содержит большую часть современной метаэвристики здесь. https://github.com/thieunguyen5991/metaheuristics

...