我正在研究遗传算法项目。我需要代码来使用基本遗传算法找出 Rastrigin 函数或 Easom 函数(对于 y=0)的最大值/最小值。
1 回答
好的,我们看一下 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,因此 start 无法搜索。次要适应度是启发式的,目的是为搜索提供一种方式。您定义了一些函数,例如 x 的平均值。所以个体1的次要适应度是-0.63,个体2是1。所以个体2“更好”,他将有更高的选择概率等。
轻微的健身只会给您的搜索提供一种方式。
可以这样错吗?是的,它是启发式的。重要的次要功能目的是为具有相同主要功能的个人创造偏好。当主要适应度不同时,我们使用主要适应度作为定位值。
例子:
个人1 健身:专业:-0.1| 未成年人:3
个人2 体能:专业:0| 未成年人:8
第一个更好,因为主要健身。