2012-04-16 87 views
2

我有一个问题,我想解决与matlab遗传算法工具箱,我不知道如何解决它。 我想在一个公式中计算3个系数,以使SVM分类模型的分类准确性函数最大化。系数的公式是a * a + b * B + c * C其中a,b,c是我想要找到它们的最优值的系数,A,B,C是数据集的3个属性的值。我也有约束条件a + b + c = 1和a,b,c> 0我应该如何使用遗传算法来解决这个问题?遗传算法与matlab如何使用分类精度作为健身功能

+0

生成一堆与同一配方的功能,但具有不同的系数。然后使用一些评估函数对它们进行测试,保持执行最佳的两个功能并从它们生成下一代。 – 2012-04-16 16:13:48

+0

谢谢你的回应,但我也需要知道如何用matlab做到这点。我应该如何在ga中使用约束条件以及如何编码适应度函数? – user1336745 2012-04-18 07:16:58

回答

2

您首先需要随机生成一个初始可行解作为第一代。

这些可行解决方案中的每一个都应该满足a + b + c = 1a, b, c > 0

然后根据你的健身功能,评估每个答案,并选择更好的作为“父母”。对这些父母应用GA技术,如“交叉”或“突变”,以产生一群后代,作为下一代。

重复这个过程一定的时间,比如500代。

例如,您可以定义变量fitness,较高的值表示其相应的候选人是更合适的解决方案。既然你是最大化这个功能,那么:

健身= A * A + B * B + C * C

在每个GA操作(交叉,变异等),记得要经常收益率满足您初始约束的新候选人(a + b + c = 1a, b, c > 0)。

2

根据我的经验,最好的解决方案之一就是实现MATLAB的遗传算法。 GA工具箱生成的目的是寻找最小的这种功能,但通过使用对称性,它会导致您寻找的功能最大化。遵循以下步骤:

  • A,B,C =输入数据
  • 归一化,B,C这导致+ B + C = 1
  • 你的适应度函数,一个A + B b + C * C,并将其定义
  • 定义nvars这对于你是3
  • 穿戴LB(下边界)中的情况下[0 0 0],这是A,b,C> 0
  • 润[X ,fval] = ga(...)那里的x将是最终结果x = [abc]

如果有任何问题,请发邮件给我更多的帮助:[email protected]

希望最好