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

📄 mut.c

📁 遗传算法的一个源码集成
💻 C
字号:
#define TEST o#include "genet.h"mutate(){	int taken_col[N], taken_row[K], taken_row1[K], taken_col1[N]; 	int row_tab[K], col_tab[N];	int counter, counter_r, counter_c, sum, i,j,v;	int r,c, r1, c1;		for (i=0; i<k; ++i)	for (j=0; j<n; ++j)	   chd[i][j] = par[i][j];		r = 0;	while (r < 2) r = random0(k);	c = 0;	while (c < 2) c = random0(n);			for (i = 0; i < k; ++i) {taken_row[i] = 0;}	for (j = 0; j < n; ++j) {taken_col[j] = 0;}	#if TEST	printf("enter select rows r = :%d\n",r);#endif	counter = 0;	while (counter < r)	{	   r1 = random0(k); 	   if (taken_row[r1] == 0) {counter++; taken_row[r1] = 1;}	}	#if TEST	printf("enter select cols c = :%d\n",c);#endif	counter = 0;	while (counter < c)	{	   c1 = random0(n); 	   if (taken_col[c1] == 0) {counter++; taken_col[c1] = 1;}	}	             #if TEST	printf("enter sum rows r = :%d\n",r);#endif	counter = -1;	for (r1 = 0; r1 < k; ++r1)	{ 	   sum = 0;	   if (taken_row[r1] == 1)	   { 		    counter = counter + 1;		    for (v=0; v<n; ++v) {if (taken_col[v] == 1) sum = sum + par[r1][v];}		                        		    row_tab[counter] = sum;	    }	  } 	#if TEST	printf("enter sum cols c = :%d\n",c);#endif	counter = -1;	for (c1 = 0; c1 < n; ++c1)	{		sum = 0;		if (taken_col[c1] == 1)		{ 			counter = counter + 1;			for (v=0; v<k; ++v){ if (taken_row[v] == 1) sum = sum + par[v][c1];}	                          	    	col_tab[counter] = sum;		}	} 		/* for (i=0; i<k; ++i){                                               	/* for (j=0; j<n; ++j) {printf("%d   ", par[i][j]);} printf("\n");}   */	/* printf("\n\n\n"); */		/* printf("taken rows\n"); */	/* for (i=0; i<k; ++i) printf("%d   ", taken_row[i]); */	/* printf("\n"); */	/* printf("taken columns\n"); */	/* for (i=0; i<k; ++i) printf("%d   ", taken_col[i]); */	/* printf("\n\n\n"); */		/* printf("row sums\n"); */	/* for (i=0; i<r; ++i) printf("%d   ", row_tab[i]); */	/* printf("\n\n\n"); */		/* printf("col sums\n"); */	/* for (i=0; i<c; ++i) printf("%d   ", col_tab[i]); */	/* printf("\n\n\n"); */	#if TEST	printf("enter init population\n");#endif	init_one_population(r,c, row_tab, col_tab);#if TEST	printf("leave init population\n");#endif		/* printf("\n i n i t i a l \n"); */	/* for (i=0; i<r; ++i){ */	/* for (j=0; j<c; ++j) printf("%d   ", initial[i][j]); printf("\n");} */	/* printf("\n\n\n"); */	    	#if TEST	printf("enter copy back\n");#endif	counter_r = -1;   	for (i =0; i<k; ++i)	   {		    counter_c = -1;		    if (taken_row[i] == 1) 		       {			        counter_r = counter_r +1;			        for (v=0; v<n; ++v)			           {				            if (taken_col[v] == 1) 				               {					                counter_c = counter_c +1;					                chd[i][v] = initial[counter_r][counter_c];				                }			            }		        }	    }	/* for (i=0; i<k; ++i){ */	/* for (j=0; j<n; ++j) printf("%d   ", chd[i][j]); printf("\n");} */}                                 

⌨️ 快捷键说明

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