亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? combinatorial_kit.c

?? C語言開發的微粒群優化算法源程序
?? C
字號:

/*
Combinatorial kit for Particle Swarm Optimization
Last update: 2001-10-25 Maurice.Clerc@WriteMe.com

A "velocity" is essentially a list of pairs of values (v,v2), meaning
"assign value v according to value v2"

Special v2 values, when velocity applied to a position:
NA means "any value at random"
NO means "no modification"
AS means "assign v"

The "norm" of a velocity is the number of v2 not equal to NO

*/

/*------------------------------------------------------------------- ALEA_VELOCITY */
struct velocity	alea_velocity(int size,struct param param)
{ /* Just for combinatorial kit

NA value for about "size" components, NO either

*/
int				i;
int				num;
struct velocity vt;


vt.size=param.DD;
vt.combin=param.combin;

for (i=0;i<vt.size;i++)
	{
	num=alea(1,vt.size);
	if (num>size) vt.v2[i]=NO;
		else vt.v2[i]=NA;
	}	
return vt;
}

/*------------------------------------------------------------------- AUTO_MOVE */
struct particle auto_move(struct particle part,struct param param, struct model model)
/* The particle moves slowly, looking for a better position */
{
int 			i;
struct particle	partt,partt1;
int				type;
struct velocity v;
float			vmax;

type=model.local_search;
if (type==0) return part;
partt=part;


if (type==1) // Lazy Descent Method
	{
	for (i=0;i<part.pos.size;i++) // Move at random. 
		{
		vmax=(param.H.max[i]-param.H.min[i])/param.H.dx[i];
		v=alea_velocity(alea(1,(int)vmax),param);
		partt.pos=pos_plus_vel(partt.pos,v,param);

		partt.pos.f=tot(partt.pos,param,model);
		partt.pos.f=eval(partt.pos.f,param.target);

		if(partt.pos.f<part.pos.f) // Stop as soon as a better position is found
			{
			return partt;
			}
		}
	return part;	
	}

	
if (type==2) // Energetic
	{

	partt1=partt;
	energetic:
	for (i=0;i<part.pos.size;i++) // Move at random
		{
		vmax=(param.H.max[i]-param.H.min[i])/param.H.dx[i];
		v=alea_velocity(alea(1,(int)vmax),param);
		partt1.pos=pos_plus_vel(partt.pos,v,param);
		
		partt1.pos.f=tot(partt1.pos,param,model);
		partt1.pos.f=eval(partt1.pos.f,param.target);

		if(partt1.pos.f<partt.pos.f) // Move as long as a better position is found
			{
			partt=partt1;
			goto energetic;
			}
		}
	return partt;	
	}	
	
	
if (type==3) /* Move as long as a better position is found
				Check all immediate physical neighbours. If one is better, move, and check again
			*/

	{
	v.size=1;
printf("\n WARNING (auto_move). type=2 is not implemented !");
printf("\n    I use type=1 (energetic) instead"); goto energetic;

	return partt;
	}



printf("\n ERROR. auto_move: unknown type");

exit(1);		
}




/*------------------------------------------------------------------- COEFF_TIMES_VEL */	
struct velocity	coeff_times_vel(struct velocity v,float coeff, struct param param)
{
float			coefft;
int				i,j,k,l;
int				n;
int				rank[Max_vel];
int				rank_size;
struct velocity vt;

coefft=coeff;
if (param.printlevel>2)
{
	printf("\n coeff_times_vel %f",coeff);
	display_velocity(v);
}

if (coeff<0)
{
	//printf("\n *** WARNING. coeff_times_vel, coeff <0 for combinatorial process: %f",coeff);
	//return v;
	coefft=-coeff;
}


if (coeff>1)
{
	//printf("\n *** WARNING. coeff_times_vel, coeff >1 for combinatorial process: %f",coeff);
	//return v;
	//coefft=1;
	coefft=coeff-(int)coeff;

}
 if (coeff==1) 
{
	return v;;
}

vt=v;

if (coeff==0) 
{
	for (i=0;i<vt.size;i++)
	{
		vt.v2[i]=NO; // "null" velocity
	}
	return vt;
}


	n=(int)MAX(1,(1-coefft)*v.size);
//printf("\n v.size %i,  n  %i",v.size,n);
	
	rank_size=vt.size;
	for (i=0;i<rank_size;i++) rank[i]=i;
	
	// Choose at random n different components and set them to "zero"
	for (i=0;i<n;i++)
	{
		j=alea(0,rank_size-1);
		l=rank[j];
		//vt.v2[l]=NA;
		
		vt.v2[l]=NO; 
		
		// Compact rank[]
		if (j<rank_size-1)
		{
			for (k=j;k<rank_size-1;k++)
			{
				rank[k]=rank[k+1];
			}
			rank_size=rank_size-1;
		}
	
	}
if (param.printlevel>2)
{
	display_velocity(vt);
}
return vt;
}

//------------------------------------------------------------------- COEFF_TIMES_VEL2 	
struct velocity	coeff_times_vel2(struct velocity v1,struct velocity v2,float c1,float c2, int rank_d)
{
/*
c1*v1 + c2*v2

c1 >=0
c2 >=0

*/
int		i;
int		j;
int		k;
int		l;
int		n;
int		rank_size;
int		rank[Max_vel];
struct 	velocity vt;
float	c;

/*
printf("\n coeff_times_vel2: c1 %f, c2 %f => %f*v1 + %f*v2",c1,c2,c1/(c1+c2),c2/(c1+c2));
display_velocity(v1);
display_velocity(v2);
*/

if (rank_d>=0) // Special case dimensions independent
{
	vt=v1;
	vt.v[rank_d]=v2.v[rank_d];
	vt.v2[rank_d]=v2.v2[rank_d];
	return vt;
}

if (c1==0) return v2;
if (c2==0) return v1;


vt=v1;

if (c1+c2==0)
{
printf("\n ERROR coeff_times_vel2");
printf("c1,c2 %f %f",c1,c2);
infinite:; goto infinite;
}

n=(int)((c2/(c1+c2))*vt.size);
	
	rank_size=vt.size;
	for (i=0;i<rank_size;i++) rank[i]=i;
	
	// Choose at random n different components and set them to v2 values
	for (i=0;i<n;i++)
	{
		j=alea(0,rank_size-1);
		l=rank[j];
		
		vt.v[l]=v2.v[i];
		vt.v2[l]=v2.v2[i]; 
		
		// Compact rank[]
		if (j<rank_size-1)
		{
			for (k=j;k<rank_size-1;k++)
			{
				rank[k]=rank[k+1];
			}
			rank_size=rank_size-1;
		}
	}

return vt;
}


/*------------------------------------------------------------- POS_MINUS_POS */
struct velocity	pos_minus_pos(struct position p1,struct position p2,int trace)
	/* Applying v to p2 gives p1, or, in short, p2+v=p1, or v=p1-p2 
	
	*/
{
int				i;
struct velocity vt;

if (trace>2) 
{
	printf("\npos_minus_pos");
	display_position(p1);
	display_position(p2);
	
}

vt.size=p1.size;
vt.ek=0; // No meaning ...


for (i=0;i<vt.size;i++)
{

	vt.v[i]=p1.x[i];
	vt.v2[i]=AS;	
/*
	vt.v[i]=p2.x[i];
	vt.v2[i]=p1.x[i];
*/
/*	
	if (p1.x[i]==p2.x[i])
	{
		vt.v2[i]=NO;
		continue;
	}

	
	vt.v[i]=p1.x[i];
	vt.v2[i]=AS;
*/
	
}
vt.combin=1;
if (trace>2) display_velocity(vt);
return vt;

}
/*-------------------------------------------------------------------POS_PLUS_VEL */
struct position	pos_plus_vel (struct position p,struct velocity v,struct param param)
{
/* Modify a position according to a velocity, for combinatorial kit
	position + velocity => new position
WARNING: just _position_ is modified. Not kinetic energy nor f value.
They MUST be modified after that.
*/

int				i;
int				max,min;
struct position	pt;

pt=p;

if (param.printlevel>2)
{
	printf("\n pos_plus_vel");
	display_position(p);
	display_velocity(v);
}

for (i=0;i<v.size;i++)
{	
	if (v.v2[i]==NO) continue; // No modification
	if (v.v2[i]==AS) {pt.x[i]=v.v[i];continue;} // Assign
		
	/*
	if (v.v[i]==pt.x[i]) // Can be applied
	{
		pt.x[i]=v.v2[i];
		continue;
	}
	*/
	
	
	
	// All possible values are equivalent
	//if (v.v2[i]==NA)
	{ 
		min=(int)param.H.min[i]; // WARNING. We DO suppose coding values are all integers in [min, max]
		max=(int)param.H.max[i];
		pt.x[i]=(float)alea(min,max);
		continue;
	}
		
	
}
	
if (param.printlevel>2)
{
	display_position(pt);
}	
	
return pt;
}


/*------------------------------------------------------------------- 	VEL_PLUS_VEL */
struct velocity	vel_plus_vel(struct velocity v1,struct velocity v2,struct param param) 
{
int				i;
int				max;
int				min;
struct velocity vt;
float			z;

if (param.printlevel>2)
{
	printf("\n vel_plus_vel");
	display_velocity(v1);
	display_velocity(v2);
}
vt=v1;

for (i=0;i<v1.size;i++)
{
	if (vt.v2[i]==NA) continue; // random + v2 = random
	if (v2.v2[i]==NO) continue; // v + null = v
	if (v2.v2[i]==NA) {vt.v2[i]=NA;continue;} // v + random = random
	if (vt.v2[i]==NO) {vt.v[i]=v2.v[i];vt.v2[i]=v2.v2[i];continue;} // null + v2 = v2
}

/*
for (i=0;i<v1.size;i++)
{
	if (v2.v[i]==v1.v2[i]) // Can be applied (v1,v1_2) + (v2,v2_2) => (v1,v2_2)
	{
		vt.v2[i]=v2.v2[i];
		continue;
	}
	
	if (v2.v2[i]==NO) continue; // No modification

		// else, all values are equivalent
		min=(int)param.H.min[i]; // WARNING. We DO suppose coding values are all integers in [min, max]
		max=(int)param.H.max[i];
		vt.v2[i]=(float)alea(min,max);
}
*/
/*
for (i=0;i<v1.size;i++)
{
	z=alea_float(0,1);
	if (z<0.5) continue;
		vt.v[i]=v2.v[i];
		vt.v2[i]=v2.v2[i];
	
}

*/
if(param.printlevel>2)
{
	display_velocity(vt);
	printf("\n");
}

return vt;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产高清一区二区三区 | 国产高清不卡一区二区| 51午夜精品国产| 奇米777欧美一区二区| 欧美一区二区三区在线观看| 日韩av在线播放中文字幕| 91麻豆精品国产91久久久久久久久| 亚洲地区一二三色| 欧美一区二区成人6969| 精品一区中文字幕| 欧美极品美女视频| 91毛片在线观看| 一区二区在线观看不卡| 欧美日韩一区不卡| 国产一区二区三区精品视频| 国产精品拍天天在线| 欧美亚洲国产怡红院影院| 午夜不卡在线视频| 国产亚洲短视频| 91网站在线播放| 奇米影视一区二区三区| 亚洲国产精品成人久久综合一区| 一本在线高清不卡dvd| 日韩精品成人一区二区三区| www国产精品av| 91视频一区二区| 全部av―极品视觉盛宴亚洲| 中文字幕高清不卡| 欧美精品粉嫩高潮一区二区| 国产精品亚洲一区二区三区妖精| 一区二区三区精品视频| 久久亚洲综合色| 欧洲一区在线电影| 国产不卡视频一区二区三区| 亚洲一线二线三线久久久| 久久夜色精品一区| 91久久精品一区二区三区| 极品少妇一区二区三区精品视频 | 国产精品不卡视频| 欧美日韩成人综合| 成人亚洲一区二区一| 人禽交欧美网站| 一区二区在线免费| 国产精品人人做人人爽人人添| 欧美色图12p| 成人国产精品免费观看| 久久99久国产精品黄毛片色诱| 亚洲视频一二三| 国产偷v国产偷v亚洲高清| 555www色欧美视频| 欧美色图免费看| 91视频国产观看| www..com久久爱| 国产麻豆精品theporn| 日韩电影在线一区| 亚洲成av人片在线观看| 亚洲日本青草视频在线怡红院| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91久久国产最好的精华液| 国产成人精品www牛牛影视| 蜜臀精品一区二区三区在线观看 | 午夜电影一区二区| 亚洲精品乱码久久久久久黑人| 国产欧美日韩综合| 国产亚洲欧美激情| 欧美精品一区二区在线观看| 91精品国产综合久久婷婷香蕉 | 天堂蜜桃一区二区三区| 亚洲综合免费观看高清在线观看| 欧美国产成人精品| 欧美经典三级视频一区二区三区| 久久久五月婷婷| 久久综合狠狠综合| 精品国产成人系列| 久久久精品tv| 国产女人aaa级久久久级| 久久综合色8888| 久久一区二区三区四区| 久久久噜噜噜久噜久久综合| 精品国产污网站| 久久久国产精华| 中文字幕欧美国产| 国产精品你懂的在线欣赏| 国产精品久久久久久久久免费桃花 | 日韩一区和二区| 日韩亚洲欧美中文三级| 日韩欧美成人激情| 精品国产乱码久久久久久图片| 欧美一二三区在线| 久久精品欧美一区二区三区不卡| 久久久99精品久久| 亚洲欧美综合另类在线卡通| 亚洲精品高清视频在线观看| 亚洲午夜一区二区三区| 免费久久99精品国产| 国产一区二区视频在线| 不卡在线视频中文字幕| 欧美系列亚洲系列| 日韩一区二区不卡| 亚洲国产经典视频| 亚洲成人一区二区| 黄色日韩三级电影| 日韩精品一区二区在线| 久久久亚洲高清| 亚洲精品高清视频在线观看| 日韩1区2区日韩1区2区| 国产成人午夜99999| 色乱码一区二区三区88| 欧美一区永久视频免费观看| 国产午夜精品一区二区三区视频 | 国产精品久久免费看| 一区二区三区视频在线观看| 日本vs亚洲vs韩国一区三区| 国产裸体歌舞团一区二区| 91麻豆成人久久精品二区三区| 欧美日韩电影一区| 欧美激情自拍偷拍| 奇米在线7777在线精品| 99久久精品国产毛片| 欧美色精品天天在线观看视频| 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久久久第一福利 | 日本道在线观看一区二区| 在线成人av影院| 国产精品美女久久久久aⅴ国产馆| 亚洲国产一区视频| 国产成人精品亚洲777人妖 | 91麻豆文化传媒在线观看| 欧美刺激脚交jootjob| 国产在线一区二区| 一本色道综合亚洲| 精品国产一区二区精华| 亚洲线精品一区二区三区| 成人免费视频国产在线观看| 欧美日韩在线播放一区| 国产精品不卡一区二区三区| 捆绑调教一区二区三区| 欧美中文字幕一区| 国产精品久久综合| 激情五月播播久久久精品| 欧美日韩一区 二区 三区 久久精品| 久久精品亚洲一区二区三区浴池| 亚洲成年人影院| 99国产欧美另类久久久精品| 久久婷婷综合激情| 日精品一区二区| 欧美性视频一区二区三区| 国产精品久久久久四虎| 国产伦精品一区二区三区免费 | 国产一区二区中文字幕| 欧美一级午夜免费电影| 亚洲第一二三四区| 欧美性极品少妇| 亚洲精品日产精品乱码不卡| av不卡一区二区三区| 久久久久亚洲蜜桃| 精品一区二区免费看| 欧美一区二区私人影院日本| 亚洲国产综合在线| 欧美怡红院视频| 亚洲国产成人av| 欧美午夜电影在线播放| 一区二区三区免费在线观看| 成人av免费在线| 国产精品伦理在线| 成人免费av在线| 中文字幕在线观看不卡视频| 国产69精品一区二区亚洲孕妇| 久久久久久久久久久久久女国产乱| 韩国v欧美v亚洲v日本v| 久久尤物电影视频在线观看| 韩国女主播一区| 国产亚洲欧美色| 不卡av在线网| 亚洲精品欧美激情| 欧美午夜一区二区| 午夜成人免费电影| 日韩欧美视频在线| 国产精品影视网| 中文字幕一区二区三区不卡| 91尤物视频在线观看| 一区二区三区国产| 欧美精品99久久久**| 麻豆成人综合网| 久久精品一区二区三区四区| 波多野结衣中文一区| 一区二区三区91| 日韩一区二区三区精品视频| 韩国精品一区二区| 《视频一区视频二区| 欧美性大战久久久久久久蜜臀| 日本大胆欧美人术艺术动态| 久久精子c满五个校花| 99热99精品| 亚洲一区二区三区影院| 日韩欧美中文字幕制服| 高清国产一区二区| 亚洲美腿欧美偷拍| 日韩精品一区二区三区视频在线观看 | 激情五月婷婷综合|