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

我应该如何使用遗传算法来解决这个问题?

4

2 回答 2

2

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

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

然后根据你的适应度函数,对每一个答案进行评估,选择更好的作为“父母”。对这些父母应用诸如“交叉”或“突变”之类的遗传算法技术,以产生一组后代,作为下一代。

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

例如,您可以定义一个变量fitness,值越大意味着其对应的候选者是更合适的解决方案。由于您正在最大化此功能,因此:

适应度 = a * A + b * B + c * C

在您的每个 GA 操作(交叉、变异等)中,请记住始终产生满足您的初始约束(a + b + c = 1a, b, c > 0)的新候选者。

于 2012-10-17T19:23:18.613 回答
2

根据我的经验,最好的解决方案之一是实现 MATLAB 的 GA。生成 GA 工具箱是为了寻找此类函数的最小值,但通过使用对称性,它会导致您正在寻找的函数的最大化。按着这些次序:

  • A、B、C = 输入数据
  • 归一化 a,b,c 导致 a+b+c=1
  • 您的适应度函数是A+b B+c*C 并定义它
  • 定义对你来说是 3 的 nvars
  • 将 LB (下边界)放在您的情况 [0 0 0] 中,即 a,b,c>0
  • 运行 [x, fval]=ga(...) for x 将是最终结果 x=[abc]

如果有任何问题,请给我发电子邮件以获得更多帮助:mahdigh242@yahoo.com

希望最好的

于 2017-02-14T05:33:55.930 回答