【问题标题】:Finding minima of a function using genetic algorithm使用遗传算法找到函数的最小值
【发布时间】:2017-05-30 14:58:51
【问题描述】:

我正在从事遗传算法项目。我需要代码来使用基本遗传算法找出 Rastrigin 函数或 Easom 函数(对于 y=0)的最大值/最小值。

【问题讨论】:

  • 通常的过程是获取几个相关的matlab库并将它们组合在一起,而不需要太多关心理论或实现。你的问题到底出在哪里,你有一些“简单”功能的示例代码吗?
  • @Lutzl 不,我没有。实际上我正在用 JAVA / C++ 编写代码,但我不明白如何使用 GA 来优化功能。我使用 GA 编写了种群进化代码,但从未使用 GA 进行函数优化。
  • 你有一些人口,你计算人口中每个个体的函数值,值最小的个体在人口中获得更高的适应度。
  • @viceriel 是的,我已经完成了基本 GA 的实现,包括适应度函数、突变、交叉和精英主义。我已经为它编写了代码,它工作正常。现在我需要知道如何使用 GA 找到 Rastrigin 函数的最小值或 Easom 函数的最大值(将 Easom 函数的 y 始终设为 0)。

标签: math genetic-algorithm evolutionary-algorithm genetic-programming genetic


【解决方案1】:

好的,我们看看 Easom 函数。

问题陈述

在以下位置找到最小值:

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

代表选择

例如实数向量。每个元素的值间隔.

健身

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

第一个更好,因为它很适合。

【讨论】:

    猜你喜欢
    • 2015-10-25
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2013-02-15
    • 2012-02-15
    • 2016-09-13
    • 2010-11-07
    相关资源
    最近更新 更多