遗传算法中表示域的难点

Difficulties in representing domain in genetic algorithm

我有以下问题 - 我有一个规则引擎 (drools) 评估风险评分 transactions.If 风险太高 (>200) 然后它被标记为不安全。如果规则被执行,每条规则都有其分配给风险评分的权重 (1-100)。

我想要一个优化权重的工具。于是我想到了遗传算法。

1. 我会发送一批测试交易(附加参数告诉他们应该如何标记 -> 是否不安全)到引擎让它评估它们

2. 我会检查触发了多少条规则(它将确定 基因型中的染色体),让我们说如果 5 被解雇然后...

3....我将创建由 500 个基因型组成的第一个种群,每个基因型有 5 条染色体(染色体的基因值范围为 1-100)

4. 我将对群体中的所有基因型重复第一步

5. 我会使用我之前提到的附加参数来检查正确标记交易的百分比。

6. 我会根据正确评估的交易数量的百分比分配给每个基因型适应度函数

7. 重复循环几代直到达到解决方案(100% 交易被正确标记)与交叉、突变等

这是我第一次尝试用遗传算法做任何事情,所以我首先要澄清的是

优化是一个快速发展的领域。您会发现有许多术语用于描述相同的特征,这会变得非常混乱。在我看来,您似乎对遗传算法的工作原理及其相关术语有很好的了解(根据您在问题中的概述)。有关很好的参考,请参阅 this website. As a suggestion you can check out the MOEA Framework 而不是 jenetics。我认为它更适合许多优化技术的库。

关于问题的第二部分。如果我的理解是正确的,你不确定如何跟踪哪个染色体适用于哪个规则。如果是这种情况,您可以简单地将您的规则保存在一个列表中并将它们与染色体匹配。换句话说,个体的第一条染色体(或根据您的参考基因型)对应于问题中的第一条规则。通过这样做,您可以确定知道哪个权重(染色体值)适用于哪个规则。

如有误请指正。