⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cross.c

📁 其中提到遺傳學的程式碼與應用提供給次淚相向的研究者參考下載
💻 C
字号:
#define TEST 0
#include "genet.h"

crossover()

{
	int i, j, found, found_row, found_col, sum;
        int finish, got, start_i, start_j;
	int rem[K][N], org[K][N], visited[K][N];
	
#if TEST
	
	for (i=0; i<k; ++i)
	for (j=0; j<n; ++j)
		{chd_a[i][j] = par_a[i][j];
		 chd_b[i][j] = par_b[i][j];
		}
	
#endif	
		
	sum = 0;
	
	for (i=0; i<k; ++i)
	for (j=0; j<n; ++j)
	{
	   chd_a[i][j] = (par_a[i][j] + par_b[i][j])/2;
	   chd_b[i][j] = (par_a[i][j] + par_b[i][j])/2;	
	   rem[i][j] = (par_a[i][j] + par_b[i][j])%2;
	   org[i][j] = rem[i][j];
	   sum = sum + rem[i][j];
	   visited[i][j] = 0;
	}
	
	while (sum > 0)
	{
	   found = 0;
	   for (i=0; i<k; ++i)
	   for (j=0; j<n; ++j)
		  if ((rem[i][j] == 1) && (found == 0) && (visited[i][j] == 0))
		  {found_row = i; found_col = j; found = 1;}
		  
	   start_i = found_row;
	   start_j = found_col;
	   visited[start_i][start_j] = 1;
	   finish = 0;
	   sum = sum - 1;
	   while (finish == 0)
	   {
	      got = 0;
	      i = 0;
	      while ((i<k) && (got == 0))
	      {
	         if ((rem[i][found_col] == 1) && (visited[i][found_col] == 0))
	         {
	            got = 1;
	            sum = sum - 1;
	            found_row = i;
	            visited[found_row][found_col] = 1;
	            rem[found_row][found_col] = 0;
	         }
	         i = i + 1;
	      }
	      got = 0;
	      j = 0;
	      while ((j<n) && (got == 0))
	      {
	         if ((rem[found_row][j] == 1) && (visited[found_row][j] == 0))
	         {
	            got = 1;
	            sum = sum - 1;
	            found_col = j;
	            visited[found_row][found_col] = 1;
	         }
	         if ((rem[found_row][j] == 1) && (found_row == start_i) && (j == start_j))
	         {
	            finish = 1;
	            got = 1;
	         }
	         j = j + 1;
	      }
	   } 
	}
	
	for (i=0; i<k; ++i)
	for (j=0; j<n; ++j)
	{
	   chd_a[i][j] = chd_a[i][j] + rem[i][j];
	   chd_b[i][j] = chd_b[i][j] + org[i][j] - rem[i][j];
	}
	
	/* printf("\nparent 1\n");
	for (i=0; i<k; ++i)
	{for (j=0; j<n; ++j)
	 printf(" %d ", par_a[i][j]);
	 printf("\n");
	}
	printf("\nparent 2\n");
	for (i=0; i<k; ++i)
	{for (j=0; j<n; ++j)
	 printf(" %d ", par_b[i][j]);
	 printf("\n");
	}
	printf("\nchild 1\n");
	for (i=0; i<k; ++i)
	{for (j=0; j<n; ++j)
	 printf(" %d ", chd_a[i][j]);
	 printf("\n");
	}
	printf("\nchild 2\n");
	for (i=0; i<k; ++i)
	{for (j=0; j<n; ++j)
	 printf(" %d ", chd_b[i][j]);
	 printf("\n");
	}*/

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -