我有一个问题,我想用遗传算法(GA)来解决。您可以将其简化为以下问题:
我想优化公司的汽车池,这意味着汽车数量和汽车模型。我已经有了一个健身功能calcFitness(carList)
来评估给定的设置,例如商务车,运输车'或者“商务车,商务车,运输车”。现在,问题是,如何使用GA解决这个可变长度问题。
我有四个想法可以解决这些问题:
您如何看待这些一般方法?对于这些可变长度的案例,还有其他任何想法或可能是GA的替代方案吗?
答案 0 :(得分:1)
可变长度当然是可能的,而且似乎是这个问题最自然的表现。为什么会出现这个问题?唯一的重大区别在于交叉操作。虽然单点是微不足道的(你只需在a
中选择一个点,b
内的点,并自动获得一个可变长度的后代),但通常更好的是需要一些连续交叉更多直觉与可变长度。但是,这可以在完成单独测试之后实施。
准备好你的算法可能会发现染色体越好,它可以产生更好的结果(在某种情况下)。你不会像遗传编程那样获得指数膨胀(基因型是树而不是线性序列),但染色体长度仍然可能开始变得不舒服。您可能需要在健身功能中考虑到这一点,或者您可以通过拒绝超过某个限制的候选人来为#2等解决方案建模。