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

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

?? simplex.cpp

?? 改進的單純形算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		m_prolongationvalue += pow(ppobjvalue[i],2.0);
	}
	
	if(m_prolongationvalue<m_lowvalue)
	{
	   	/* 繼續延伸 */
		while((m_prolongationvalue<=m_lowvalue)&&(flag<4))
		{
	    	/* 去掉原來的最大值點,取而代之以原來的最小點,
		    	并用延伸點替換單純形中目標值最小的點 */
			for(i=0; i<m_numvar; i++)
			{
				p_variable[m_highnumber][i] = p_variable[m_lownumber][i];
				p_variable[m_lownumber][i] = p_prolongation[i];
			}
			
			p_fitness[m_highnumber] = p_fitness[m_lownumber];
			m_highvalue = m_lowvalue;
			
			p_fitness[m_lownumber] = m_prolongationvalue;
			m_lowvalue = m_prolongationvalue;

			for(i=0;i<m_numpoint;i++)
			{
				p_bestobjvalue[i] = ppobjvalue[i];
			}

			for(i=0; i<m_numvar; i++)
			{
				if(p_variable[m_highnumber][i]>p_variable[m_lownumber][i])
					p_prolongation[i] = p_variable[m_lownumber][i]-m_gamma*p_center[i];
				else
					p_prolongation[i] = p_variable[m_lownumber][i]+m_gamma*p_center[i];
			}
			
			/* 將參數存儲到文件 */
			WriteToFem(p_prolongation);
			if(m_blErrorExit)return;
			/* 有限元計算 */
			ObjFunction();
			if(m_blErrorExit) return;
			/* 讀入測點的計算值 */
			ReadFromFem(p_calculation);
			if(m_blErrorExit)return;
			
			m_prolongationvalue = 0.0;
			
			/* 計算測點的觀測值與計算值之差 */
			for(i=0; i<m_numpoint; i++)
			{
				ppobjvalue[i] = p_observation[i]-p_calculation[i];
				m_prolongationvalue += pow(ppobjvalue[i],2.0);
			}
		}
		
		if(m_prolongationvalue<m_lowvalue)
		{
		    /* 去掉原來的最大值點,取而代之以原來的最小點,
			    并用延伸點替換單純形中目標值最小的點 */
			for(i=0; i<m_numvar; i++)
			{
				p_variable[m_highnumber][i] = p_variable[m_lownumber][i];
				p_variable[m_lownumber][i] = p_prolongation[i];
			}
			
			p_fitness[m_highnumber] = p_fitness[m_lownumber];
			m_highvalue = m_lowvalue;
			
			p_fitness[m_lownumber] = m_prolongationvalue;
			m_lowvalue = m_prolongationvalue;

			for(i=0;i<m_numpoint;i++)
			{
				p_bestobjvalue[i] = ppobjvalue[i];
			}
		}
		else
		{
			/* 用延伸點替換單純形中目標值最大的點 */
			for(i=0; i<m_numvar; i++)
			{
				p_variable[m_highnumber][i] = p_prolongation[i];
			}
			
			p_fitness[m_highnumber] = m_prolongationvalue;
			m_highvalue = m_prolongationvalue;
			
			/* 收縮 */
			Constriction();
			if(m_blErrorExit)return;
		}
	}
	else
	{
		if(m_prolongationvalue<m_highvalue)
		{
		    /* 用延伸點替換單純形中目標值最大的點 */
			for(i=0; i<m_numvar; i++)
			{
				p_variable[m_highnumber][i] = p_prolongation[i];
			}
			
			p_fitness[m_highnumber] = m_prolongationvalue;
			m_highvalue = m_prolongationvalue;

			/* 收縮 */
			Constriction();
			if(m_blErrorExit)return;
		}
		else
		{
			/* 延伸失敗,調整延伸系數,重新延伸 */
			flag = 0;
			while((m_prolongationvalue>m_highvalue)&&(flag<4))
			{
				/* 調整延伸系數 */
				m_gamma /= 2.0;
								
				for(i=0; i<m_numvar; i++)
				{
					if(p_variable[m_highnumber][i]>p_variable[m_lownumber][i])
						p_prolongation[i] = p_variable[m_lownumber][i]-m_gamma*p_center[i];
					else
						p_prolongation[i] = p_variable[m_lownumber][i]+m_gamma*p_center[i];
				}
							
				/* 將參數存儲到文件 */
				WriteToFem(p_prolongation);
				if(m_blErrorExit)return;
				/* 有限元計算 */
				ObjFunction();
				if(m_blErrorExit) return;
				/* 讀入測點的計算值 */
				ReadFromFem(p_calculation);
				if(m_blErrorExit)return;
				
				m_prolongationvalue = 0.0;
				
				/* 計算測點的觀測值與計算值之差 */
				for(i=0; i<m_numpoint; i++)
				{
					ppobjvalue[i] = p_observation[i]-p_calculation[i];
					m_prolongationvalue += pow(ppobjvalue[i],2.0);
				}
			}

			m_gamma = 1.0;
				
			if(m_prolongationvalue<m_lowvalue)
			{
			    /* 去掉原來的最大值點,取而代之以原來的最小點,
				   并用延伸點替換單純形中目標值最小的點 */
				for(i=0; i<m_numvar; i++)
				{
					p_variable[m_highnumber][i] = p_variable[m_lownumber][i];
					p_variable[m_lownumber][i] = p_prolongation[i];
				}
				
				p_fitness[m_highnumber] = p_fitness[m_lownumber];
				m_highvalue = m_lowvalue;
				
				p_fitness[m_lownumber] = m_prolongationvalue;
				m_lowvalue = m_prolongationvalue;

				for(i=0;i<m_numpoint;i++)
				{
					p_bestobjvalue[i] = ppobjvalue[i];
				}
			}
			else
			{
				/* 用延伸點替換單純形中目標值最大的點 */
				for(i=0; i<m_numvar; i++)
				{
					p_variable[m_highnumber][i] = p_prolongation[i];
				}
				
				p_fitness[m_highnumber] = m_prolongationvalue;
				m_highvalue = m_prolongationvalue;
				
				/* 收縮 */
				Constriction();
				if(m_blErrorExit)return;
			}
		}
	}

	delete [] ppobjvalue;
}

/* 收縮 */
void Simplex::Constriction()
{
	int i,j;
	double * pcobjvalue;
	pcobjvalue = new double[m_numpoint];
	
	/****************** 求收縮點及其目標值 ******************/

	for(i=0; i<m_numvar; i++)
	{
		if(p_variable[m_highnumber][i]>p_variable[m_lownumber][i])
			m_constriction[i] = p_variable[m_highnumber][i]-m_beta*p_center[i];
		else
			m_constriction[i] = p_variable[m_highnumber][i]+m_beta*p_center[i];
	}
	
	/* 將參數存儲到文件 */
	WriteToFem(m_constriction);
	if(m_blErrorExit)return;
	/* 有限元計算 */
	ObjFunction();
	if(m_blErrorExit) return;
	/* 讀入測點的計算值 */
	ReadFromFem(p_calculation);
	if(m_blErrorExit)return;
	
	m_constrictionvalue = 0.0;
	/* 計算測點的觀測值與計算值之差 */
	for(i=0; i<m_numpoint; i++)
	{
		pcobjvalue[i] = p_observation[i]-p_calculation[i];
		m_constrictionvalue += pow(pcobjvalue[i],2.0);
	}
	/****************** 求收縮點及其目標值 ******************/
	
	if(m_constrictionvalue<m_lowvalue)
	{
	    /* 去掉原來的最大值點,取而代之以原來的最小點,
	    	并用收縮點替換單純形中目標值最小的點 */
		for(i=0; i<m_numvar; i++)
		{
			p_variable[m_highnumber][i] = p_variable[m_lownumber][i];
			p_variable[m_lownumber][i] = m_constriction[i];
		}
		
		p_fitness[m_highnumber] = p_fitness[m_lownumber];
		m_highvalue = m_lowvalue;
		
		p_fitness[m_lownumber] = m_constrictionvalue;
		m_lowvalue = m_constrictionvalue;

		for(i=0;i<m_numpoint;i++)
		{
			p_bestobjvalue[i] = pcobjvalue[i];
		}
	}
	else
	{
		if(m_constrictionvalue<m_highvalue)
		{
			/* 用收縮點替換單純形中目標值最大的點 */
			for(i=0; i<m_numvar; i++)
			{
				p_variable[m_highnumber][i] = p_prolongation[i];
			}
			
			p_fitness[m_highnumber] = m_prolongationvalue;
			m_highvalue = m_prolongationvalue;
			
			/* 縮小邊長 */
			for(i=0; i<=m_numvar; i++)
				for(j=0; j<m_numvar; j++)
					p_variable[i][j] = 0.5*(p_variable[m_lownumber][j]+p_variable[i][j]);
				
			
			/******** 重新計算新的單純形的目標值 ********/
			for(i=0; i<=m_numvar; i++)
			{
				p_fitness[i] = 0.0;
				
				/* 將參數存儲到文件 */
				WriteToFem(p_variable[i]);
				if(m_blErrorExit)return;
				/* 有限元計算 */
				ObjFunction();
				if(m_blErrorExit) return;
				/* 讀入測點的計算值 */
				ReadFromFem(p_calculation);
				if(m_blErrorExit)return;
				
				/* 計算測點的觀測值與計算值之差的平方 */
				for(j=0; j<m_numpoint; j++)
				{
					pcobjvalue[j] = p_observation[j]-p_calculation[j];
					p_fitness[i] += pow(pcobjvalue[j],2.0);
				}
			}
		}
	}
}

/* 有限元計算 */
void Simplex::ObjFunction()
{
	if(EXCUTE_NUMERICAL_ANALYSIS()==false)
		m_blErrorExit=true;
}

/* 寫參數值 */
void Simplex::WriteToFem(double *pvariable)
{
	CString str;

	CString csBackOutFileName = mGcsFileName+_T(".btof");//back analysis to fem
	ofstream cBackOutFile;
	cBackOutFile.open((LPCSTR)csBackOutFileName); 
	if (cBackOutFile.fail())
	{
		AfxMessageBox("Cannot open input file of back analysis!!!",MB_OK);
		m_blErrorExit = true;
		return;
	}
	//write
    int index=1;

	cBackOutFile << m_numvar << endl;
    
	for(int i=0; i<m_numvar; i++)
	{
		str.Format("%d %d %d %d %.6f\n",index++, p_BAKindflag[i],
			p_iparameter[i], p_jparameter[i], pvariable[i]);
		
		cBackOutFile << (LPCSTR)str;
	}

	//邊界荷載輸出
	if (m_numbndload > 0)
	{
		index=1;
		cBackOutFile << m_numbndload << endl;
		
		for(int j=0; j<m_numbndload; j++)
		{
			str.Format("%d %d %d %d %d %d %.4f %.4f %.4f %.4f %.4f %.4f\n",
				p_Bndload[j].index++, p_Bndload[j].wAddStage, p_Bndload[j].wAddStep, 
				p_Bndload[j].iNode1, p_Bndload[j].iNode2, p_Bndload[j].iCoordFlag,
				p_Bndload[j].BeginLoad1, p_Bndload[j].BeginLoad2, p_Bndload[j].BeginLoad3,
				p_Bndload[j].EndLoad1, p_Bndload[j].EndLoad2, p_Bndload[j].EndLoad3);
			
			cBackOutFile << (LPCSTR)str;
		}
	}

	cBackOutFile.close();
}

/* 讀取計算值 */
void Simplex::ReadFromFem(double *calculatevalue)
{
	CString csFromFemFileName = mGcsFileName+_T(".ftob");//file from fem
	ifstream cFromFemFile;
	cFromFemFile.open((LPCSTR)csFromFemFileName); 
	if (cFromFemFile.fail())
	{
		AfxMessageBox("Cannot open input file of fem!!!",MB_OK);
		m_blErrorExit = true;
		return;
	}

	int index;
	
	for(int i=0;i<m_numpoint;i++)
	{
		cFromFemFile >> index;
		cFromFemFile >> calculatevalue[i];
	}

	cFromFemFile.close();
}

/* 從BAA文件中讀入待反演參數的性質標志以及初始值 */
void Simplex::ReadBAA()
{
	char tempchar[256];
	int  index;

	CString csBaaFileName = mGcsFileName+_T(".BAA");
	ifstream cBaaFile;
	cBaaFile.open((LPCSTR)csBaaFileName); 
	if (cBaaFile.fail())
	{
		AfxMessageBox("Cannot open input BAA file!!!",MB_OK);
		m_blErrorExit = true;
		return;
	}
	
	cBaaFile.getline(tempchar,256);
	
	//讀入各個參數的上下限,并計算出各個參數的精度
	for(int i=0; i<m_numvar; i++)
	{
		cBaaFile >> index;
		cBaaFile >> p_BAKindflag[i];
		cBaaFile >> p_iparameter[i];
		cBaaFile >> p_jparameter[i];
		cBaaFile >> p_variable[0][i];
		cBaaFile.getline(tempchar,256);
	}

	cBaaFile >> m_numbndload;

	if(m_numbndload>0)
	{
		if(p_Bndload)
		{
			delete[]p_Bndload ;
			p_Bndload = NULL ;
		}

		p_Bndload = new bndload[m_numbndload];

		for(int j=0; j<m_numbndload; j++)
		{
			cBaaFile >> p_Bndload[j].index >> p_Bndload[j].wAddStage
				>> p_Bndload[j].wAddStep >> p_Bndload[j].iNode1
				>> p_Bndload[j].iNode2 >> p_Bndload[j].iCoordFlag
				>> p_Bndload[j].BeginLoad1 >> p_Bndload[j].BeginLoad2
				>> p_Bndload[j].BeginLoad3 >> p_Bndload[j].EndLoad1
				>> p_Bndload[j].EndLoad2 >> p_Bndload[j].EndLoad3;

			cBaaFile.getline(tempchar,256);
		}
	}
	
	cBaaFile.close();
}

//從MEA文件中讀取監測數據
void Simplex::ReadMEA()
{
	CString csFromMeaFileName = mGcsFileName+_T(".MEA");//file from fem
	ifstream cFromMeaFile;
	cFromMeaFile.open((LPCSTR)csFromMeaFileName); 
	if (cFromMeaFile.fail())
	{
		AfxMessageBox("Cannot open input file of mea!!!",MB_OK);
		m_blErrorExit = true;
		return;
	}

	int iTemp;
	double dTemp;
	char tempch[256];

	cFromMeaFile.getline(tempch,256);
	for(int i=0;i<m_numpoint;i++)
	{
		cFromMeaFile >> iTemp >> dTemp >> dTemp >> dTemp  >> iTemp  >> iTemp
			 >> iTemp  >> iTemp  >> iTemp  >> iTemp  >> iTemp;
		cFromMeaFile >> p_observation[i];
		cFromMeaFile.getline(tempch,256);
	}

	cFromMeaFile.close();
}

/* 輸出每一代演化的最佳結果及其適應值 */
void Simplex::WriteResult()
{
	CString csToUserFileName = mGcsFileName+_T(".result");//file to user
	ofstream cResultFile;
	cResultFile.open((LPCSTR)csToUserFileName,ios::app); 
	if (cResultFile.fail())
	{
		AfxMessageBox("Cannot open output result file!!!",MB_OK);
		m_blErrorExit = true;
		return;
	}
	cResultFile << "第" << m_numlap << "步優化結果:" << endl;

 	cResultFile << "適應值:" << m_lowvalue << endl;
	cResultFile << "反演參數值依次為:";

	for(int i=0;i<m_numvar;i++)
		cResultFile << p_variable[m_lownumber][i] <<"  ";
	cResultFile << endl;

	cResultFile << "各量測點量測值與計算值之差分別為:" ;
	for(i=0; i<m_numpoint; i++)
		cResultFile << p_bestobjvalue[i] <<"  ";
	cResultFile << endl << endl;

	cResultFile.close();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美tk丨vk视频| 国产精品亚洲一区二区三区妖精 | 欧美一级专区免费大片| 国产成人啪免费观看软件 | 国产精品久久久久久久久晋中| 制服.丝袜.亚洲.另类.中文| 色综合激情五月| 国产福利一区二区| 3d动漫精品啪啪一区二区竹菊| 国产色产综合色产在线视频| 精品理论电影在线观看| 亚洲妇熟xx妇色黄| 午夜一区二区三区在线观看| 久久亚洲捆绑美女| 亚洲精品在线网站| 中文字幕一区二区视频| 夜夜爽夜夜爽精品视频| 一区二区在线看| 亚洲国产日产av| 91年精品国产| 一本到不卡免费一区二区| 国产欧美1区2区3区| 亚洲视频在线观看一区| 婷婷综合另类小说色区| 色婷婷久久99综合精品jk白丝| 欧美国产精品一区二区三区| 亚洲男帅同性gay1069| 亚洲电影一区二区| 色婷婷av一区二区三区之一色屋| 国产精品天美传媒沈樵| 一区二区在线观看视频| 91色porny蝌蚪| 一区二区高清免费观看影视大全| 99国产精品久久久久久久久久| 精品视频999| 欧美日韩免费观看一区二区三区| 91看片淫黄大片一级在线观看| 国产亚洲一区二区三区| 激情另类小说区图片区视频区| 成人在线视频一区| 欧美性感一类影片在线播放| 51久久夜色精品国产麻豆| 午夜精品福利一区二区三区av| 欧美性生活久久| 天天影视色香欲综合网老头| 91麻豆精品国产无毒不卡在线观看| 午夜久久福利影院| 日韩一区二区中文字幕| 亚洲免费三区一区二区| 欧美日韩中文字幕一区| 婷婷成人激情在线网| 欧美一级高清片| 国产精华液一区二区三区| 国产精品免费看片| 欧美在线免费视屏| 国产欧美日韩不卡免费| 成人午夜在线免费| 亚洲综合色区另类av| 国产a视频精品免费观看| 91精品国产麻豆国产自产在线| 蜜臀久久久99精品久久久久久| 99精品黄色片免费大全| 国产精品影视天天线| 中文字幕亚洲精品在线观看| 精品视频1区2区3区| 国产麻豆精品在线| 欧美va亚洲va国产综合| 粉嫩在线一区二区三区视频| 亚洲综合免费观看高清完整版| 777奇米成人网| 9l国产精品久久久久麻豆| 久久色视频免费观看| 99久久精品99国产精品| 日韩成人一级大片| 91成人免费在线视频| 亚洲视频综合在线| 日韩欧美在线观看一区二区三区| 国产99久久精品| 日韩精品一级二级 | 91网站黄www| 青青草一区二区三区| 日韩免费福利电影在线观看| 亚洲成人自拍一区| 国产亚洲精久久久久久| 欧美剧在线免费观看网站 | 久久久久久久久免费| 国产精品1024| 亚洲成年人网站在线观看| 日本一区二区三区dvd视频在线| 在线欧美小视频| 国产999精品久久| 日韩av一级电影| 中文字幕亚洲成人| 国产色综合一区| 欧美一区二区三区电影| 91黄色激情网站| 成人午夜视频网站| 狠狠色狠狠色综合系列| 午夜精品爽啪视频| 亚洲一区二区在线视频| 中文字幕中文字幕一区二区| 久久久久久一级片| 亚洲精品在线电影| 欧美一区二区啪啪| 欧美久久久久久蜜桃| 色综合久久66| 91看片淫黄大片一级| 99精品黄色片免费大全| 成人精品视频一区二区三区尤物| 激情另类小说区图片区视频区| 人人狠狠综合久久亚洲| 丝袜亚洲另类欧美综合| 天天综合天天综合色| 亚洲第一成人在线| 一区二区三区欧美在线观看| 亚洲精品日日夜夜| 亚洲精品乱码久久久久久久久 | 久久久夜色精品亚洲| 日韩欧美精品在线视频| 欧美一区二区三区视频免费| 777午夜精品免费视频| 91精品国产综合久久久久久| 欧美肥大bbwbbw高潮| 日韩一区二区三区四区| 精品国产免费一区二区三区香蕉| 精品国产一区二区三区不卡| 欧美mv和日韩mv国产网站| 久久综合色播五月| 亚洲一区二区在线观看视频| 亚洲国产人成综合网站| 日韩av一区二| 国产福利精品导航| 99国产精品视频免费观看| 欧美性生活影院| 日韩午夜在线播放| 国产女同性恋一区二区| 亚洲天堂精品在线观看| 亚洲成人自拍一区| 经典三级视频一区| 亚洲chinese男男1069| 视频一区免费在线观看| 精品一区二区三区的国产在线播放| 激情欧美一区二区三区在线观看| 国产成人午夜片在线观看高清观看| 成人免费视频播放| 欧美性极品少妇| 精品欧美一区二区三区精品久久 | 亚洲色图一区二区| 亚洲va韩国va欧美va| 久国产精品韩国三级视频| 不卡av在线免费观看| 国产一区二区免费视频| av不卡在线观看| 欧美精品在欧美一区二区少妇| 精品日产卡一卡二卡麻豆| 国产精品免费aⅴ片在线观看| 一区二区三区欧美| 蜜桃av噜噜一区二区三区小说| 成人性生交大片免费| 欧美另类一区二区三区| 国产精品美女久久久久aⅴ| 亚洲成人动漫精品| 成人午夜视频在线| 日韩欧美专区在线| 亚洲最新视频在线播放| 国产剧情一区在线| 欧美日韩午夜在线| 中文字幕中文在线不卡住| 蜜臀av在线播放一区二区三区| 99视频精品在线| 久久久久国产精品人| 日韩vs国产vs欧美| 91在线视频免费观看| 亚洲精品一线二线三线无人区| 亚洲高清在线视频| 91一区在线观看| 国产三级一区二区| 美国三级日本三级久久99 | 成人小视频在线| 久久亚洲欧美国产精品乐播 | 亚洲日本在线观看| 国产成人免费在线| 精品久久一区二区三区| 亚洲va欧美va人人爽午夜| 91啦中文在线观看| 国产精品高潮呻吟久久| 国产精品一区二区久激情瑜伽| 欧美一区二区三区四区在线观看| 一区二区三区中文字幕电影| 高清beeg欧美| 精品99999| 久久成人麻豆午夜电影| 成人午夜av在线| 久久亚洲精华国产精华液| 男人的天堂久久精品| 欧美色图天堂网| 一区二区三区免费在线观看| 91亚洲永久精品| 亚洲人妖av一区二区| 色综合天天综合狠狠|