【转】差分进化算法的实现

Java版本(比较详细,试过可用):

http://blog.csdn.net/google19890102/article/details/41247753

其中的变异操作:

 /******** 变异操作 ***********/  
    public void Mutation() 
  {
double XTemp[][] = new double[NP][size]; double XMutationTemp[][] = new double[NP][size]; XTemp = this.getX(); Random r = new Random(); for (int i = 0; i < NP; i++)
     {
int r1 = 0, r2 = 0, r3 = 0; while (r1 == i || r2 == i || r3 == i || r1 == r2 || r1 == r3 || r2 == r3)
       {// 取r1,r2,r3 r1 = r.nextInt(NP); r2 = r.nextInt(NP); r3 = r.nextInt(NP); } for (int j = 0; j < size; j++)
       { XMutationTemp[i][j]
= XTemp[r1][j] + F * (XTemp[r2][j] - XTemp[r3][j]); } } this.setXMutation(XMutationTemp); }

 

Python版本:

http://blog.csdn.net/hehainan_86/article/details/38685231

C/C++版本:

http://www.cnblogs.com/tsingke/p/5809453.html

posted @ 2017-02-27 14:30  morein2008  阅读(582)  评论(0编辑  收藏  举报