我正在研究遗传算法项目。我需要使用基本遗传算法找到Rastrigin函数或Easom函数(对于y = 0)的最大值/最小值的代码。
答案 0 :(得分:2)
好的,我们看一下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“更好”并且他将具有更高的选择概率等。
轻微的健身只会让你的搜索方式 这可能是错的吗?是的,它是启发式的。 重要的是,次要功能目的是为具有相同主要功能的个人创建偏好。当主要适应性不同时,我们使用主要适应度作为定位的价值。
示例:强>
Individual1健身:专业:-0.1 |轻微:3
Individual2健身:专业:0 |轻微:8
第一个因为主要健身而更好。