遗传算法 - 可变长度优化策略

时间:2016-12-04 08:11:31

标签: genetic-algorithm evolutionary-algorithm genetic-programming genetic jgap

我有一个问题,我想用遗传算法(GA)来解决。您可以将其简化为以下问题:

我想优化公司的汽车池,这意味着汽车数量汽车模型。我已经有了一个健身功能calcFitness(carList)来评估给定的设置,例如商务车,运输车'或者“商务车,商务车,运输车”。现在,问题是,如何使用GA解决这个可变长度问题。

我有四个想法可以解决这些问题:

  1. 也许以某种方式实现一个允许可变长度染色体的GA,并在一次运行中解决问题(不确定是否可能?)
  2. 估算最大可行车数(例如20辆)并为每个车位号从1到20运行一个固定长度的GA并比较20个结果
  3. 与#2类似,但没有固定的上限:你从1辆车开始并增加插槽数量,直到增加数量的最佳解决方案比前面的解决方案更差(基于梯度的方法)
  4. 两个堆叠的固定长度的GA:父母GA负责优化汽车插槽的数量,并且在其适应性功能中,另一个GA优化这些插槽的分配称为
  5. 您如何看待这些一般方法?对于这些可变长度的案例,还有其他任何想法或可能是GA的替代方案吗?

1 个答案:

答案 0 :(得分:1)

可变长度当然是可能的,而且似乎是这个问题最自然的表现。为什么会出现这个问题?唯一的重大区别在于交叉操作。虽然单点是微不足道的(你只需在a中选择一个点,b内的点,并自动获得一个可变长度的后代),但通常更好的是需要一些连续交叉更多直觉与可变长度。但是,这可以在完成单独测试之后实施。

准备好你的算法可能会发现染色体越好,它可以产生更好的结果(在某种情况下)。你不会像遗传编程那样获得指数膨胀(基因型是树而不是线性序列),但染色体长度仍然可能开始变得不舒服。您可能需要在健身功能中考虑到这一点,或者您可以通过拒绝超过某个限制的候选人来为#2等解决方案建模。