使用遗传算法寻找函数的最小值

Finding minima of a function using genetic algorithm

我在做遗传算法项目。我需要使用基本遗传算法找出 Rastrigin 函数或 Easom 函数(对于 y=0)的 maxima/minima 的代码。

好,我们看Easom函数

问题陈述

找到最小值:

f(x) = -cos(x1)cos(x2)exp(-(x1-phi)^2 - (x2-phi)^2)

代表选择

例如实数向量。每个元素的取值区间<-5; 5>.

健身

GA 的主要问题。例如,我们有两个人:

个人1: [-1|2.7|-0.68|3.78||-2.14|1.63|-1.75|-3.8]

个人2: [1|1|1|1||-0.5|-0.5|-0.5|-0.5]

第一个个体被解码为 4.8 和 -6.06。他的适应度函数是-9.23073...×10^-40.

第二个人被解码为4和-2。他的体能是 -4.30104456071396041116767479151655914468678005731098...×10^-13

现在是问题。适合度很低,所以我们可以将两者都视为 0。您有两个选择。等待戈多(也许在某一代诞生了具有全局最小值的占卜个体)。或者你可以使用启发式。启发式基于将适应度划分为两个值,主要适应度和次要适应度。主要适应度是函数中 x 的值。此值始终为 0,因此无法开始搜索。 Minor fitness 是启发式的,目的是为搜索提供一种方法。您定义了一些函数,例如 x 的平均值。所以 individual1 的 minor fitness 是 -0.63,individual2 是 1。所以 individual2 是 "better" 他将有更高的选择概率等

轻微健身只为您的搜索提供一条途径。
这样会错吗?是的,这是启发式的。 重要的次要功能目的是为具有相同主要功能的个人创造偏好。当主要适应度不同时,我们使用主要适应度作为方向值。

示例:

Individual1 健身:主要:-0.1|未成年人:3

Individual2 健身:专业:0|未成年人:8

第一个更好,因为主要健身。