Алгоритм Geneti c с использованием python и DEAP с различными целями и весами - PullRequest
0 голосов
/ 09 февраля 2020

Я новичок в алгоритме Python и geneti c, и я пытаюсь решить проблему с помощью Deap, но я немного потерян.

У меня 3 цели:

Для имитации c F1 Максимизировать F2 Максимизировать F3 Фитнес будет = w1 * f1 + w1 * f2 + w3 * f3, который стремится к максимизации

Я делаю это так: у меня есть функция fit, которая вычисляет цели и возвращает их (я не знаю, если это так, как это должно быть сделано).

fit()
    return f1, f2, f3,

Возвращенные значения должны быть умножены на веса (0.3, 0.4, 0.3), чтобы достичь Фитнес, но здесь возникает другое сомнение , Могу ли я определить вес таким образом?

Я видел в статье, что если вы хотите минимизировать вес, он должен быть отрицательным, а чтобы максимизировать, он должен быть положительным. Но статья, за которой я следую, чтобы решить проблему, передала мне эти веса (0.3, 0.4, 0.3), чтобы минимизировать и максимизировать?

От этого я был смущен. Я делаю это правильно? Если нет, что было бы правильно сделать?

creator.create("FitnessMax", base.Fitness,weights=(0.3, 0.4, 0.3,))
fitn = creator.FitnessMax
creator.create("Individual", list, typecode='b', fitness=creator.FitnessMax)

...

fit = sim['GAParams']['fitFunction']
toolbox.register("evaluate", fit, sim=sim)

Я использую алгоритм eaSimple и для выбора selNSGA2, но тут больше неправильного.

Допустим, что цели дали следующее: F1: 0.37, F2: 1.0, F3: 1.0. При выполнении исполнения класс Fitness работает с: values (0.37, 1.0, 1.0) и self.wvalues (0.111, 0.4, 0.3), то есть другие две цели игнорируются.

Как мне решить эту проблему?

...