遗传算法中表示域的难点
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% 交易被正确标记)与交叉、突变等
这是我第一次尝试用遗传算法做任何事情,所以我首先要澄清的是
我对 genotype/chromosome/gene 工作原理的理解。在不同的站点中,他们有时会使用这些术语来代替彼此,这可能会造成混淆。我正在学习基于 jenetics 库的术语,因为我想用它来实现。
后来我意识到我没有考虑一件事——我可能会演化规则权重的值,但权重并不是唯一重要的事情——权重对哪个规则也很重要会被分配!但我不知道我应该把关于重量指的是哪个规则的附加信息放在哪里……染色体中的某个地方?这对我来说是最大的问题,我只是看不出把它放在等式中的什么地方。
优化是一个快速发展的领域。您会发现有许多术语用于描述相同的特征,这会变得非常混乱。在我看来,您似乎对遗传算法的工作原理及其相关术语有很好的了解(根据您在问题中的概述)。有关很好的参考,请参阅 this website. As a suggestion you can check out the MOEA Framework 而不是 jenetics。我认为它更适合许多优化技术的库。
关于问题的第二部分。如果我的理解是正确的,你不确定如何跟踪哪个染色体适用于哪个规则。如果是这种情况,您可以简单地将您的规则保存在一个列表中并将它们与染色体匹配。换句话说,个体的第一条染色体(或根据您的参考基因型)对应于问题中的第一条规则。通过这样做,您可以确定知道哪个权重(染色体值)适用于哪个规则。
如有误请指正。
我有以下问题 - 我有一个规则引擎 (drools) 评估风险评分 transactions.If 风险太高 (>200) 然后它被标记为不安全。如果规则被执行,每条规则都有其分配给风险评分的权重 (1-100)。
我想要一个优化权重的工具。于是我想到了遗传算法。
1. 我会发送一批测试交易(附加参数告诉他们应该如何标记 -> 是否不安全)到引擎让它评估它们
2. 我会检查触发了多少条规则(它将确定 基因型中的染色体),让我们说如果 5 被解雇然后...
3....我将创建由 500 个基因型组成的第一个种群,每个基因型有 5 条染色体(染色体的基因值范围为 1-100)
4. 我将对群体中的所有基因型重复第一步
5. 我会使用我之前提到的附加参数来检查正确标记交易的百分比。
6. 我会根据正确评估的交易数量的百分比分配给每个基因型适应度函数
7. 重复循环几代直到达到解决方案(100% 交易被正确标记)与交叉、突变等
这是我第一次尝试用遗传算法做任何事情,所以我首先要澄清的是
我对 genotype/chromosome/gene 工作原理的理解。在不同的站点中,他们有时会使用这些术语来代替彼此,这可能会造成混淆。我正在学习基于 jenetics 库的术语,因为我想用它来实现。
后来我意识到我没有考虑一件事——我可能会演化规则权重的值,但权重并不是唯一重要的事情——权重对哪个规则也很重要会被分配!但我不知道我应该把关于重量指的是哪个规则的附加信息放在哪里……染色体中的某个地方?这对我来说是最大的问题,我只是看不出把它放在等式中的什么地方。
优化是一个快速发展的领域。您会发现有许多术语用于描述相同的特征,这会变得非常混乱。在我看来,您似乎对遗传算法的工作原理及其相关术语有很好的了解(根据您在问题中的概述)。有关很好的参考,请参阅 this website. As a suggestion you can check out the MOEA Framework 而不是 jenetics。我认为它更适合许多优化技术的库。
关于问题的第二部分。如果我的理解是正确的,你不确定如何跟踪哪个染色体适用于哪个规则。如果是这种情况,您可以简单地将您的规则保存在一个列表中并将它们与染色体匹配。换句话说,个体的第一条染色体(或根据您的参考基因型)对应于问题中的第一条规则。通过这样做,您可以确定知道哪个权重(染色体值)适用于哪个规则。
如有误请指正。