遗传算法 目标函数,遗传算法python实现

  遗传算法 目标函数,遗传算法python实现

  在进行多目标优化时,经常会面临多个目标函数不能同时优化的情况。为了解决这一矛盾,引入了帕累托最优的概念。

  参数化

  通常,多目标优化的常见形式有:

  经过治疗,它可以采取以下形式。

  在…之中

  f1(x),f1(x),f1(x)).

  是目标函数,都是最小值的形式。

  引入了以下两个目标函数:

  有的目标函数是维度空间,两个目标函数是时间(f1) x)、成本(F2) x),

  您可以绘制图像:

  然后,介绍了一些概念。

  非支配解:对于S1和S2的任何两个解,如果S1优于S2,那么S1支配S2。如果S1的解不为其他解所支配,则称S1解为非支配解(non-dominated solution),也称为帕累托解。

  解决方案:当解决方案S2的所有目标都比S1差,S1比S2好,S1统治S2。

  S2是主要的解决方案。

  因此,当前的首要任务是找到解空间中的所有帕累托解。找到所有的帕累托解后,这些解形成的平面称为非支配前沿。当函数较多时,前面通常是超曲面。

  非支配排序(非支配排序)。

  1.设所有解的集合为S,找出非劣解集,设为F1。

  设S=S-F1,从S中找出非劣解集,记为F2。

  3.重复步骤2,直到S变成空集。

  将每次找到的非劣解排序如下。

  {F1,F2,…,Fn}

  通过绘制并连接Fi集中的对应点的一半,形成N个pareto曲面,它们是非定义域的顶1和非定义域的顶2…

  以上表中的数据为例,F1={A,B,D,F},F2={C,E,D},F3={H,I}

  绘制适当的图形:

  第一个前脸的解适应度最大,序数越大适应度越小。阶值小的边界上的解可以支配阶值大的边界上的解。

  相同正面上解的排序——拥挤距离))))))))))。

  关于第一个前脸,有A、B、D、f四种方案,如何评价这四种方案的适合度?因此,引入了拥塞的概念。

  拥塞计算:

  1.只考虑同一前端面上的解,设位于前端面两端的边界点的拥挤度为。

  2.至于不在两端的点,拥挤程度主要与其相邻两点有关。

  拥堵越小,越重要。

  一般理解:拥挤度越小,解与其他解的相似性越小,留下一个小的拥挤点,相当于保存了理解的多样性。

  因此,为了确定解的适应度的顺序,首先确定解位于哪个边界上,如果位于同一边界上,则计算拥挤度来做出判断。

  结合遗传算法

  使用与普通遗传算法相同的步骤,随机选择几个解进行初始化、编码、交叉交换和变异。

  生成子项

  但后代生成后,需要与父代混合,选择适应度高的解进行新的迭代。

  示例:

  1.对于一个双目标优化问题,初始化后随机取出10个解作为F,计算出的后代作为p。

  此时,p和f混合形成新的解集S.

  2.对于S,对上述非支配解进行排序,计算拥挤度,最后找出这12个解的适应度的顺序,从中选出10个适应度大的点,生成新的后代(保持与父代相同的数目),带入算法进行新的迭代。

  把孩子和父母混在一起,筛选出来创造新的孩子,这叫精英策略。

  启发式算法包括两个方面:加速收敛操作和在收敛过程中保持解的多样性。这两种操作相互作用,找到合适的收敛速度,缩短计算时间,避免陷入局部最优。

  对NSGA来说,规则遵循这两条准则。

  1.该算法不仅取最佳前端面,而且考虑所有前端面,以体现解的多样性,防止陷入局部最优。

  2.计算拥挤度,保留相似度低的解,保持解空间的多样性。

  3.精英策略用于加速收敛和更快地消除老化。

  作家(author的简写)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: