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

📄 cross.c

📁 遗传算法的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 + -