use*_*145 3 matlab genetic-algorithm
我正在尝试为 GA 编写代码以最小化系统的成本,问题是该解决方案收敛于局部最小值并陷入其中,因此我无法再改进我的解决方案。
可能是我的选择方法导致了这里的问题,这就是我所拥有的:
%----------------------------selection (fittest half) ----------------
probability=ones(1,population/2);
[,IX]=sort(cost(1:population))
dd=sum(1:population);
probability(1:(population/2))=[1:population/2];
probability=fliplr(probability)/dd;
Indexx=IX(1:population/2);
Run Code Online (Sandbox Code Playgroud)
然后我使用 Indexx 进行交叉等,有人可以提出解决方案吗?
通常,优化求解算法收敛到局部最小值。为了摆脱遗传算法中的这个局部最小值,您可以使用突变。突变适用于一代人的某些个体。通常,突变会很糟糕,使结果更糟,它们不会被选择用于下一代,但有时,突变会导致个体接近不同(有时更好)的局部最小值。突变率越高,搜索的“空间”就越多,找到全局最小值的机会就越大。不过有一个问题;如果变异率太高,算法将不再收敛。
我希望这对您的问题有所帮助。