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

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

?? iga.cpp

?? 一個函數尋優的免疫遺傳算法
?? CPP
字號:
// IGA.cpp: implementation of the CIGA class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ImmueGA.h"
#include "IGA.h"
#include "math.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CIGA::CIGA()
{	srand((unsigned)time(NULL)); //產生種子
	for(int i=0;i<SUM;i++)
		for(int j=0;j<VAR;j++)
			AntiBase[i].AntiGene[j]= AverageRandom(TL,TH);	 //在[a,b]之間
}

CIGA::~CIGA()
{
}

double CIGA::DoIGA(CAntiCell *ac)
{	double oldfit=0;
	srand((unsigned)time(NULL)); //產生種子
	for(int i=0;i<LOOPNUM;i++)
	{	ResortAntiBase();
		if(i==0)	InitMemory();	//i>0后才更新記憶庫
		if(i>0)	//第1次不用添加
		{	AddMemory();
			GenerateNew();
			AddNew();
		}
		if(i>0)		UpdateMemory();
		CalAntiC();
/*		if(fabs(oldfit-GetMemoryFit())<delt)//親和度趨于穩定時結束
		{	ResortMB();
			*ac=MB[0];
			return (10/ac->Fitness-LB);
		}
		oldfit=GetMemoryFit();
*/		Updatesp();	//抗體激勵和抑制
		Genetic();	//進行遺傳操作
	}
	ResortMB();	//選擇記憶庫中的最優抗體
	*ac=MB[0];
	return (10/ac->Fitness-LB);//
}

/*待函數是y=min fun(x0,x1,x2,x3)=
(0.7*x0*(2*x1-1)*x3+1.2*x2)/(1+x0*x0+x1*x1)+sin(0.5*x0*x1)
親和度*/
void CIGA::fun(CAntiCell *ac)//保守的下界估計
{	ac->Fitness=10/(LB+(0.7*ac->AntiGene[0]*(2*ac->AntiGene[1]-1)*ac->AntiGene[3]+
				 1.2*ac->AntiGene[2])/(1+ac->AntiGene[0]*ac->AntiGene[0]+
				 ac->AntiGene[1]*ac->AntiGene[1])
				 +sin(0.5*ac->AntiGene[0]*ac->AntiGene[1]));
}

void CIGA::GenerateNew()//
{	srand((unsigned)time(NULL)); //產生種子
	for(int i=0;i<NEWSUM;i++)
		for(int j=0;j<VAR;j++)
			NB[i].AntiGene[j]= AverageRandom(TL,TH);	 //在[a,b]之間
}

double CIGA::AverageRandom(double min, double max)
{	int minInteger = (int)(min*10000);
	int maxInteger = (int)(max*10000);
	int randInteger = rand()*rand();
	int diffInteger = maxInteger - minInteger;
	int resultInteger = randInteger % diffInteger + minInteger;
	return resultInteger/10000.0;
}
void CIGA::AddMemory()//添加到總細胞
{	int i,j,k;
	ResortAntiBase();
	for(i=0;i<MSUM;i++)//MB[i]
		for(j=0;j<2*MSUM;j++)//AntiBase[j]
		{	if(fabs(MB[i].Fitness-AntiBase[j].Fitness)<0.1*delt)
				break;
			if(MB[i].Fitness>AntiBase[j].Fitness)	//MB[i]加入到總免疫細胞庫
			{	for(k=SUM-1;k>j;k--)				//右移
					AntiBase[k]=AntiBase[k-1];
				AntiBase[j]=MB[i];
				break;
			}
		}
}

void CIGA::AddNew()	//添加到總細胞末尾
{	ResortAntiBase();
	for(int i=0;i<NEWSUM;i++)	
		AntiBase[SUM-NEWSUM+i]=NB[i];
}
void CIGA::ResortAntiBase()
{	int i,j;
	CAntiCell tmp;
	for(i=0;i<SUM;i++)
		fun(AntiBase+i);
	for(i=0;i<SUM;i++)
		for(j=i;j<SUM;j++)//按親和度從大到小排序
			if(AntiBase[i].Fitness<AntiBase[j].Fitness)//swap
			{	tmp=AntiBase[i];
				AntiBase[i]=AntiBase[j];
				AntiBase[j]=tmp;
			}
}

void CIGA::ResortMB()
{	int i,j;
	CAntiCell tmp;
	for(i=0;i<MSUM;i++)
		fun(MB+i);
	for(i=0;i<MSUM;i++)
		for(j=i;j<MSUM;j++)
			if(MB[i].Fitness<MB[j].Fitness)
			{	tmp=MB[i];
				MB[i]=MB[j];
				MB[j]=tmp;
			}
}

void CIGA::UpdateMemory()//更新記憶庫
{	int i,j,k;
	ResortAntiBase();
	ResortMB();
	for(i=0;i<MSUM;i++)//AntiBase[i]
		for(j=0;j<MSUM;j++)//MB[j]
		{	if(fabs(AntiBase[i].Fitness-MB[j].Fitness)<0.1*delt)
				break;
			if(AntiBase[i].Fitness>MB[j].Fitness)//AntiBase[i]加入記憶庫
			{	for(k=MSUM-1;k>j;k--)//右移
					MB[k]=MB[k-1];
				MB[j]=AntiBase[i];
				break;
			}
		}
}

void CIGA::CalAntiC()//計算濃度
{	int i,j,k;
	int genenum,num;
	for(i=0;i<SUM;i++)	//計算總免疫細胞庫的細胞濃度
	{	num=0;
		for(j=0;j<SUM;j++)
		{	genenum=0;
			for(k=0;k<VAR;k++)
				if(fabs(AntiBase[i].AntiGene[k]-AntiBase[j].AntiGene[k])<10*delt)
					genenum++;
			if(genenum>=VAR-1)	num++;//相似
		}
		AntiBase[i].Concentration=num*10.0/SUM;
	}
}

void CIGA::CalMemoryC()
{	int i,j,k;
	int genenum,num;
	for(i=0;i<MSUM;i++)	//計算記憶免疫細胞庫的細胞濃度
	{	num=0;
		for(j=0;j<MSUM;j++)
		{	genenum=0;
			for(k=0;k<VAR;k++)
				if(fabs(MB[i].AntiGene[k]-MB[j].AntiGene[k])<5*delt)
					genenum++;
			if(genenum>=VAR-1)	num++;//相似
		}
		MB[i].Concentration=num*1.0/SUM;
	}
}

double CIGA::GetMemoryFit()
{	double sumfit=0;
	for(int j=0;j<MSUM;j++)
		sumfit+=MB[j].Fitness;
	return sumfit;
}

void CIGA::Updatesp()//抗體的激勵和抑制
{	int i,j;
	double fave,cfave,sumc=0,sumfit=0;
	CalAntiC();
	ResortAntiBase();
	for(j=0;j<SUM;j++)
	{	sumfit+=AntiBase[j].Fitness;
		sumc+=AntiBase[j].Concentration;
	}
	fave=sumfit/SUM;	//計算總免疫細胞庫的平均親和度
	cfave=sumc/SUM;		//計算總免疫細胞庫的平均細胞濃度
	for(i=0;i<SUM;i++)	//用濃度調整選擇概率
		if(AntiBase[i].Fitness>fave)
			AntiBase[i].sp=(1+beita*(cfave-AntiBase[i].Concentration)
			/(cfave+AntiBase[i].Concentration))*AntiBase[i].Fitness;
		else 
			AntiBase[i].sp=AntiBase[i].Fitness;
}

void CIGA::Genetic()//交叉和變異
{	int i,j;
	int i1,i2;
	CAntiCell tmpAnti[SUM];
	double psum=0;
	for(j=0;j<SUM;j++)	psum+=AntiBase[j].sp;
	for(i=0;i<SUM;i++,i++)
	{	SelectAnti(psum,i1,i2);
		CrossOver(i1,i2,tmpAnti+i,tmpAnti+i+1);
		Mutation(tmpAnti+i,tmpAnti+i+1);
	}
	for(i=0;i<SUM;i++,i++)
		AntiBase[i]=tmpAnti[i];
	ResortAntiBase();//just for dubug
}

void CIGA::SelectAnti(double psum,int&i1,int&i2)
{	double r1,r2,tmpsum=0;
	r1=AverageRandom(0,1);
	r2=AverageRandom(0,1);
	for(i1=0;i1<SUM && tmpsum<r1;i1++)//輪賭法
		tmpsum+=AntiBase[i1].sp/psum;
	tmpsum=0;
	for(i2=0;i2<SUM && tmpsum<r2;i2++)//輪賭法
		tmpsum+=AntiBase[i2].sp/psum;
}

void CIGA::CrossOver(int i1, int i2, CAntiCell *c1, CAntiCell *c2)
{	int i,k;
	double r,tmpsum=0;
//	srand((unsigned)time(NULL)); //產生種子
	r=AverageRandom(0,1);
	if(r<1-PC)	//直接克隆
	{	*c1=AntiBase[i1];
		*c2=AntiBase[i2];
	}
	else
	{	k=rand()%4;	//產生交叉位置
		for(i=0;i<k;i++)//
		{	c1->AntiGene[i]=AntiBase[i1].AntiGene[i];
			c2->AntiGene[i]=AntiBase[i2].AntiGene[i];
		}
		for(i=k;i<VAR;i++)//
		{	c1->AntiGene[i]=AntiBase[i2].AntiGene[i];
			c2->AntiGene[i]=AntiBase[i1].AntiGene[i];
		}
	}
}

void CIGA::Mutation(CAntiCell *ac1,CAntiCell *ac2)
{	int k;
	double r1,r2,anti;
//	srand((unsigned)time(NULL)); //產生種子
	r1=AverageRandom(0,1);
	r2=AverageRandom(0,1);
	if(r1>1-PM)	//判斷是否產生變異
	{	anti=AverageRandom(TL,TH);
		k=rand()%VAR;	//產生交叉位置
		ac1->AntiGene[k]=anti;
	}
	if(r2>1-PM)	//判斷是否產生變異
	{	anti=AverageRandom(TL,TH);
		k=rand()%VAR;	//產生交叉位置
		ac2->AntiGene[k]=anti;
	}
}

void CIGA::InitMemory()
{	for(int i=0;i<MSUM;i++)
		MB[i]=AntiBase[i];
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人r级一区二区三区| 亚洲精品在线观看视频| 日韩视频一区二区三区 | 久久国产精品99精品国产 | 福利电影一区二区三区| 在线视频欧美区| 久久久亚洲欧洲日产国码αv| 亚洲综合色婷婷| 成人av午夜影院| 2020国产成人综合网| 午夜在线成人av| 91麻豆蜜桃一区二区三区| 欧美激情综合网| 国内精品国产三级国产a久久| 3d动漫精品啪啪| 麻豆精品久久精品色综合| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩精品一区二区三区老鸭窝| 亚洲免费观看视频| www.欧美色图| 欧美激情中文字幕一区二区| 国产精品综合二区| 精品国产一区二区三区av性色| 亚洲va欧美va人人爽| 色综合久久久久网| 中文字幕一区三区| 成人性生交大片免费看在线播放 | 久久―日本道色综合久久| 婷婷综合在线观看| 欧美伦理影视网| 亚洲一区二区四区蜜桃| 97久久精品人人澡人人爽| 国产精品国产三级国产专播品爱网| 国产精品一区在线观看乱码| 国产亚洲成aⅴ人片在线观看 | 日韩一区二区精品| 美女一区二区视频| 日韩欧美成人午夜| 91原创在线视频| 亚洲日本在线视频观看| 91视频观看免费| 亚洲黄色性网站| 偷拍一区二区三区| 日韩成人一级大片| 91美女片黄在线观看91美女| 久久影视一区二区| 亚洲国产日产av| 成人福利视频在线看| 国产乱色国产精品免费视频| 久久久久国产精品麻豆ai换脸| 国产91精品在线观看| 亚洲欧美日韩国产综合在线| 欧洲av一区二区嗯嗯嗯啊| 日韩高清在线一区| 久久免费的精品国产v∧| 波多野结衣中文一区| 亚洲免费资源在线播放| 91精品久久久久久久99蜜桃| 激情五月婷婷综合网| 国产精品理论在线观看| 色婷婷综合久久久久中文一区二区| 亚洲国产精品精华液网站| 日韩欧美精品在线视频| 国产99精品国产| 亚洲第一福利一区| 精品国产乱码久久久久久夜甘婷婷| 成人性生交大片免费看中文| 亚洲影视在线播放| 精品福利在线导航| 一本一本大道香蕉久在线精品 | 亚洲一区二区三区四区五区黄| 日韩一区二区电影网| 成人av电影在线| 天天影视色香欲综合网老头| 国产日韩欧美麻豆| 欧美精品丝袜久久久中文字幕| 国内外成人在线| 亚洲在线视频免费观看| 久久蜜桃一区二区| 欧美高清视频不卡网| bt欧美亚洲午夜电影天堂| 麻豆精品一区二区av白丝在线| 日韩美女精品在线| 精品成a人在线观看| 欧美亚洲禁片免费| 99视频超级精品| 国产曰批免费观看久久久| 亚洲成人综合网站| 亚洲欧洲精品一区二区精品久久久| 欧美一区二区大片| 在线视频国内自拍亚洲视频| 成人综合婷婷国产精品久久蜜臀 | 中文字幕一区二区三区在线观看| 国产真实乱偷精品视频免| 欧美亚洲动漫精品| 午夜精品爽啪视频| 日韩三级视频在线看| 国产福利一区二区三区| 国产欧美一区二区精品秋霞影院| jizz一区二区| 午夜日韩在线电影| 欧美成人精品二区三区99精品| 国产高清成人在线| 一区二区三区日本| 精品精品欲导航| 视频在线观看一区| 久久精品欧美一区二区三区麻豆| 日韩欧美一区中文| 日韩欧美自拍偷拍| 欧美一区中文字幕| 8v天堂国产在线一区二区| 欧美日韩国产影片| 欧美日韩三级视频| 欧美日本乱大交xxxxx| 欧美中文字幕一二三区视频| 色先锋资源久久综合| 91美女在线视频| 日本韩国一区二区三区| 色婷婷香蕉在线一区二区| 91原创在线视频| 在线看不卡av| 制服丝袜亚洲色图| 日韩亚洲欧美一区二区三区| 日韩一区二区三免费高清| 日韩久久精品一区| 久久综合色婷婷| 欧美极品aⅴ影院| 最新日韩av在线| 亚洲制服欧美中文字幕中文字幕| 亚洲一区二区高清| 蜜臀av一区二区在线观看| 极品少妇一区二区| 成人黄色电影在线| 欧美影片第一页| 欧美变态口味重另类| 国产日韩精品一区| 亚洲欧美乱综合| 日韩影视精彩在线| 国产剧情av麻豆香蕉精品| 不卡的电视剧免费网站有什么| 欧美最新大片在线看| 欧美一级在线观看| 中文字幕精品一区二区三区精品| 综合色天天鬼久久鬼色| 午夜久久久久久久久久一区二区| 蜜桃av一区二区在线观看| 国产精品一区在线观看乱码| 色老头久久综合| 日韩午夜三级在线| 国产精品国产精品国产专区不片| 亚洲国产精品久久一线不卡| 精品一区二区在线视频| 91原创在线视频| 欧美r级电影在线观看| 国产精品久久久久久久久动漫 | 中文字幕免费观看一区| 亚洲成人一二三| 岛国av在线一区| 欧美日韩高清不卡| 欧美经典一区二区三区| 亚洲国产一二三| 大桥未久av一区二区三区中文| 51精品视频一区二区三区| 中文字幕第一区二区| 日韩av成人高清| 色综合久久中文字幕| 久久你懂得1024| 奇米色777欧美一区二区| 成人av在线资源| 精品国产精品一区二区夜夜嗨| 青青草原综合久久大伊人精品优势| 成人小视频在线观看| 日韩写真欧美这视频| 伊人色综合久久天天| 国产成人99久久亚洲综合精品| 欧美日韩一区二区三区在线看| 国产一区二区电影| 国产乱子伦一区二区三区国色天香| 国产91精品免费| 欧美影院午夜播放| 精品区一区二区| 中文字幕亚洲视频| 午夜精品久久久久久不卡8050| 久久精品国产**网站演员| 成人免费毛片高清视频| 欧美在线不卡一区| 国产成人aaa| 精品国产电影一区二区| 男女激情视频一区| 在线成人免费观看| 亚洲一区二区成人在线观看| 97成人超碰视| 国产精品初高中害羞小美女文| 国产精品亚洲一区二区三区妖精| 欧美成人激情免费网| 麻豆国产欧美一区二区三区| 日韩视频中午一区| 久久99热国产| 久久精品在线观看| 国产成人综合在线|