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

📄 variables.h

📁 pso算法编程的c语言实现
💻 H
📖 第 1 页 / 共 2 页
字号:
					}	}	return 0;}void keepin(double *pop, double *vel, unsigned int fun, unsigned int M, unsigned int D) {	unsigned int i, j;	double linf[D], lsup[D];	  double F = 10.0;	  double E = 2*pow(10,5);	  double L = 200.0;	  double r = 10.0;		switch (fun) {    case 1:	for(i = 0; i < 9; i++) {      				linf[i] = 0.0;            	lsup[i] = 1.0;          	}          	for(i = 9; i < 12; i++) {      				linf[i] = 0.0;            	lsup[i] = 100.0;          	}     				linf[12] = 0.0;           	lsup[12] = 1.0;          	break;    case 2:	for(i = 0; i < D; i++) {      				linf[i] = 0.0;            	lsup[i] = 10.0;          	}          	break;  	case 3: linf[0] = 78.0;          	linf[1] = 33.0;          	linf[2] = 27.0;          	linf[3] = 27.0;          	linf[4] = 27.0;          	          	lsup[0] = 102.0;          	lsup[1] = 45.0;          	lsup[2] = 45.0;          	lsup[3] = 45.0;          	lsup[4] = 45.0;          	break;		case 4: linf[0] = 13.0;          	linf[1] = 0.0;          	          	lsup[0] = 100.0;          	lsup[1] = 100.0;          	break;    case 5:	for(i = 0; i < D; i++) {      				linf[i] = -10.0;            	lsup[i] = 10.0;          	}          	break;    case 6:	for(i = 0; i < D; i++) {      				linf[i] = 0.0;            	lsup[i] = 10.0;          	}          	break;    case 7: linf[0] = 1.0;          	linf[1] = 1.0;          	linf[2] = 10.0;          	linf[3] = 10.0;          	          	lsup[0] = 99.0;          	lsup[1] = 99.0;          	lsup[2] = 200.0;          	lsup[3] = 200.0;          	break;		case 8:	for(i = 0; i < D; i++) {      				linf[i] = 0.1;          	}          	lsup[0] = 2.0;          	lsup[1] = 10.0;          	lsup[3] = 10.0;          	lsup[4] = 2.0;          	break;    case 9: linf[0] = -3.0;          	linf[1] = -2.0;          	          	lsup[0] = 3.0;          	lsup[1] = 2.0;          	break;		case 10:	linf[0] = -5.0;          	          		lsup[0] = 5.0;          	break;    case 11:	for(i = 0; i < D; i++) {      					linf[i] = -65.536;            		lsup[i] = 65.536;          		}          	break;    case 100:	linf[0] = -5.0;          	          		lsup[0] = 10.0;          	break;    case 200:	for(i = 0; i < D; i++) {    						linf[i] = -5.0;          		lsup[i] = 5.0;          		}          	break; 	    case 300:	for(i = 0; i < D; i++) {    					linf[i] = -4.0;          		lsup[i] = 4.0;          		}          	break;    case 400:	linf[0] = pow(-10.0, 5);          		lsup[0] = pow(10.0, 5);          	break;    case 500:	for(i = 0; i < D; i++) {    					linf[i] = -3.1416;          		lsup[i] = 3.1416;          		}          	break;     case 600:	for(i = 0; i < D; i++) {    					linf[i] = -30.0;          		lsup[i] = 30.0;          		}          	break;	case 700:	for(i = 0; i < D; i++) {    					linf[i] = 0.0;          		lsup[i] = 1.0;          		}          	break;	case 800:	for(i = 0; i < D; i++) {    					linf[i] = -400.0;          		lsup[i] = 400.0;          		}          	break;     case 900: linf[0] = 0.0;          	linf[1] = -30.0;          	          	lsup[0] = 1.0;          	lsup[1] = 30.0;          	break;	case 1000:	for(i = 0; i < D; i++) {    					linf[i] = 0.1;          		lsup[i] = 1.0;          		}          	break; 		case 10100:	for(i = 0; i < D; i++) {    					linf[i] = 0.0;          		lsup[i] = 7.0;          		}          	break;	case 10200:	for(i = 0; i < D; i++) {    					linf[i] = -20.0;          		lsup[i] = 20.0;          		}          	break;	case 10300:	  	  linf[0]=(double)(F/r);//0.05	  lsup[0]=(double)3.0*(F/r);//0.15	  linf[1]=(double)sqrt(2)*(F/r);//0.070710678	  lsup[1]=(double)3.0*(F/r);//0.15	  linf[2]=(double)sqrt(2)*(F/r);//0.070710678	  lsup[2]=(double)3.0*(F/r);//0.15	  linf[3]=(double)(F/r);//0.05	  lsup[3]=(double)3.0*(F/r);//0.015	  break;	case 10400:	for(i = 0; i < D; i++) {    					linf[i] = 0.1;          		lsup[i] = 1.0;          		}          	break;	case 10500:		  linf[0]=0.0;	  linf[1]=-30.0;	  lsup[0]=1.0;	  lsup[1]=30.0;	  break; 	}  	 	for(i = 0; i < M; i++) { 		for(j = 0; j < D; j++) { 			if (pop[(D * i) + j] < linf[j]) { 				pop[(D * i) + j] = linf[j]; 				vel[(D * i) + j] = -vel[(D * i) + j]; 			} 			if (pop[(D * i) + j] > lsup[j]) { 				pop[(D * i) + j] = lsup[j]; 				vel[(D * i) + j] = -vel[(D * i) + j]; 			}  			 		} 	} 	}void ranges(unsigned int fun,int D,double *linf,double * lsup){	unsigned int i, j;	  double F = 10.0;	  double E = 2*pow(10,5);	  double L = 200.0;	  double r = 10.0;		switch (fun) {    case 1:	for(i = 0; i < 9; i++) {      				linf[i] = 0.0;            	lsup[i] = 1.0;          	}          	for(i = 9; i < 12; i++) {      				linf[i] = 0.0;            	lsup[i] = 100.0;          	}     				linf[12] = 0.0;           	lsup[12] = 1.0;          	break;    case 2:	for(i = 0; i < D; i++) {      				linf[i] = 0.0;            	lsup[i] = 10.0;          	}          	break;  	case 3: linf[0] = 78.0;          	linf[1] = 33.0;          	linf[2] = 27.0;          	linf[3] = 7.0;          	linf[4] = 27.0;          	          	lsup[0] = 102.0;          	lsup[1] = 45.0;          	lsup[2] = 45.0;          	lsup[3] = 45.0;          	lsup[4] = 45.0;          	break;		case 4: linf[0] = 13.0;          	linf[1] = 0.0;          	          	lsup[0] = 100.0;          	lsup[1] = 100.0;          	break;    case 5:	for(i = 0; i < D; i++) {      				linf[i] = -10.0;            	lsup[i] = 10.0;          	}          	break;    case 6:	for(i = 0; i < D; i++) {      				linf[i] = 0.0;            	lsup[i] = 10.0;          	}          	break;    case 7: linf[0] = 1.0;          	linf[1] = 1.0;          	linf[2] = 10.0;          	linf[3] = 10.0;          	          	lsup[0] = 99.0;          	lsup[1] = 99.0;          	lsup[2] = 200.0;          	lsup[3] = 200.0;          	break;		case 8:	for(i = 0; i < D; i++) {      				linf[i] = 0.1;          	}          	lsup[0] = 2.0;          	lsup[1] = 10.0;          	lsup[3] = 10.0;          	lsup[4] = 2.0;          	break;    case 9: linf[0] = -3.0;          	linf[1] = -2.0;          	          	lsup[0] = 3.0;          	lsup[1] = 2.0;          	break;		case 10:	linf[0] = -5.0;          	          		lsup[0] = 5.0;          	break;    case 11:	for(i = 0; i < D; i++) {      					linf[i] = -65.536;            		lsup[i] = 65.536;          		}          	break;    case 100:	linf[0] = -5.0;          	          		lsup[0] = 10.0;          	break;    case 200:	for(i = 0; i < D; i++) {    						linf[i] = -5.0;          		lsup[i] = 5.0;          		}          	break; 	    case 300:	for(i = 0; i < D; i++) {    					linf[i] = -4.0;          		lsup[i] = 4.0;          		}          	break;    case 400:	linf[0] = pow(-10.0, 5);          		lsup[0] = pow(10.0, 5);          	break;	case 500:	  for(i = 0; i < D; i++) {	    linf[i] = -3.1416;	    lsup[i] = 3.1416;	  }          	break;     case 600:	for(i = 0; i < D; i++) {    					linf[i] = -30.0;          		lsup[i] = 30.0;          		}          	break;	case 700:	for(i = 0; i < D; i++) {    					linf[i] = 0.0;          		lsup[i] = 1.0;          		}          	break;	case 800:	for(i = 0; i < D; i++) {    					linf[i] = -400.0;          		lsup[i] = 400.0;          		}          	break;     case 900: linf[0] = 0.0;          	linf[1] = -30.0;          	          	lsup[0] = 1.0;          	lsup[1] = 30.0;          	break;	case 1000:	for(i = 0; i < D; i++) {    					linf[i] = 0.1;          		lsup[i] = 1.0;          		}          	break;	case 10100:	for(i = 0; i < D; i++) {    					linf[i] = 0.0;          		lsup[i] = 7.0;          		}          	break;	case 10200:	for(i = 0; i < D; i++) {    					linf[i] = -20.0;          		lsup[i] = 20.0;          		}          	break;	case 10300:	  	  linf[0]=(double)(F/r);//0.05	  lsup[0]=(double)3.0*(F/r);//0.15	  linf[1]=(double)sqrt(2)*(F/r);//0.070710678	  lsup[1]=(double)3.0*(F/r);//0.15	  linf[2]=(double)sqrt(2)*(F/r);//0.070710678	  lsup[2]=(double)3.0*(F/r);//0.15	  linf[3]=(double)(F/r);//0.05	  lsup[3]=(double)3.0*(F/r);//0.015	  break;	case 10400:	for(i = 0; i < D; i++) {    					linf[i] = 0.1;          		lsup[i] = 1.0;          		}          	break;	case 10500:		  linf[0]=0.0;	  linf[1]=-30.0;	  lsup[0]=1.0;	  lsup[1]=30.0;	  break; 	}}

⌨️ 快捷键说明

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