在遗传算法中表示域的困难

时间:2018-02-09 22:59:23

标签: algorithm genetic-algorithm genetic-programming genetic

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

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

1。我会发送一批测试交易(带有附加参数,说明它们应该如何标记 - >不安全或不安全)到引擎让它评估它们

2. 我会查看触发了多少规则(它会确定数量    基因型中的染色体)让我们说如果5被解雇了那么......

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

4. 我会对人口中的所有基因型重复第一步

5. 我会通过使用前面提到的其他参数来检查正确标记的交易百分比。

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

7。重复周期数,直到达到解决方案(100%交易被正确标记),并带有交叉,突变等。

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

  • 我对基因型/染色体/基因如何工作的理解。在不同的网站中,他们有时会使用这些术语作为彼此的替代品而且可能会让人感到不安。我正在学习基于jenetics库的术语,因为我正在考虑将它用于实现。

  • 我后来意识到我没有考虑到一件事 - 我可能会发展规则权重的值,但权重并不是唯一重要的事情 - 权重将分配给哪个规则也很重要!但是我不知道在哪里应该提供关于重量指的是哪个规则的附加信息......在染色体中有哪些?这对我来说是最大的问题,我只是看不出在哪里适合它。

1 个答案:

答案 0 :(得分:1)

优化是一个快速且快速发展的领域。你会发现有许多术语在相同的特征中飞来飞去,这可能会变得非常混乱。对我来说,似乎你对遗传算法如何工作以及它的相关术语(基于你在问题中的轮廓)有一个很好的把握。如需参考,请参阅this website。作为建议,您可以查看MOEA Framework而不是jenetics。我认为这是一个更适合许多优化技术的库。

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

如果我误解了,请纠正我。