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

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

?? cminesweeper.cpp

?? 人工神經網絡實現的掃雷機程序,用遺傳算法進化網絡的權重效果很好
?? CPP
字號:
#include "CMinesweeper.h"

//-----------------------------------constructor-------------------------
//
//-----------------------------------------------------------------------
CMinesweeper::CMinesweeper():
                             m_dRotation(RandFloat()*CParams::dTwoPi),
                             m_lTrack(0.16),
                             m_rTrack(0.16),
                             m_dFitness(CParams::dStartEnergy),
							               m_dScale(CParams::iSweeperScale),
                             m_iClosestMine(0)
			 
{
	//create a random start position
	m_vPosition = SVector2D((RandFloat() * CParams::WindowWidth), 
					                (RandFloat() * CParams::WindowHeight));
  
}

//-------------------------------------------Reset()--------------------
//
//	Resets the sweepers position, energy level and rotation
//
//----------------------------------------------------------------------
void CMinesweeper::Reset()
{
	//reset the sweepers positions
	m_vPosition = SVector2D((RandFloat() * CParams::WindowWidth), 
					                (RandFloat() * CParams::WindowHeight));
	
	//and the energy level
	m_dFitness = CParams::dStartEnergy;

  //and the rotation
  m_dRotation = RandFloat()*CParams::dTwoPi;

	return;
}
//---------------------WorldTransform--------------------------------
//
//	sets up a translation matrix for the sweeper according to its
//  scale, rotation and position. Returns the transformed vertices.
//-------------------------------------------------------------------
void CMinesweeper::WorldTransform(vector<SPoint> &sweeper)
{
	//create the world transformation matrix
	C2DMatrix matTransform;
	
	//scale
	matTransform.Scale(m_dScale, m_dScale);
	
	//rotate
	matTransform.Rotate(m_dRotation);
	
	//and translate
	matTransform.Translate(m_vPosition.x, m_vPosition.y);
	
	//now transform the ships vertices
	matTransform.TransformSPoints(sweeper);
}

//-------------------------------Update()--------------------------------
//
//	First we take sensor readings and feed these into the sweepers brain.
//
//	The inputs are:
//	
//  a signed angle to the closest mine
//
//	We receive two outputs from the brain.. lTrack & rTrack.
//	So given a force for each track we calculate the resultant rotation 
//	and acceleration and apply to current velocity vector.
//
//-----------------------------------------------------------------------
bool CMinesweeper::Update(vector<SVector2D> &mines,vector<hum> &x)
{
	
	//this will store all the inputs for the NN
	vector<double> inputs;	

	//get vector to closest mine
	SVector2D vClosestMine = GetClosestMine(mines);
  
	//normalise it
  Vec2DNormalize(vClosestMine);
  
  //calculate dot product of the look at vector and Closest mine
  //vector. This will give us the angle we need turn to face
  //the closest mine
  double dot = Vec2DDot(m_vLookAt, vClosestMine);

  //calculate sign
  int sign   = Vec2DSign(m_vLookAt, vClosestMine);

  inputs.push_back(dot*sign);
SVector2D  vClosetHum=GetClosetHum(x);
Vec2DNormalize(vClosetHum);
double dot2=Vec2DDot(m_vLookAt,vClosetHum);
int sign2 =Vec2DSign(m_vLookAt,vClosetHum);

inputs.push_back(dot2*sign2);
  
	//update the brain and get feedback
	vector<double> output = m_ItsBrain.Update(inputs);

	//make sure there were no errors in calculating the 
	//output
	if (output.size() < CParams::iNumOutputs) 
  {
    return false;
  }

	//assign the outputs to the sweepers left & right tracks
	m_lTrack = output[0];
	m_rTrack = output[1];

	//calculate steering forces
	double RotForce = m_lTrack - m_rTrack;

	//clamp rotation
	Clamp(RotForce, -CParams::dMaxTurnRate, CParams::dMaxTurnRate);

	m_dRotation += RotForce;

  m_dSpeed = (m_lTrack + m_rTrack);

	//update Look At 
	m_vLookAt.x = -sin(m_dRotation);
	m_vLookAt.y = cos(m_dRotation);

	//update position
  m_vPosition += (m_vLookAt * m_dSpeed);

	//wrap around window limits
	if (m_vPosition.x > CParams::WindowWidth) m_vPosition.x = 0;
	if (m_vPosition.x < 0) m_vPosition.x = CParams::WindowWidth;
	if (m_vPosition.y > CParams::WindowHeight) m_vPosition.y = 0;
	if (m_vPosition.y < 0) m_vPosition.y = CParams::WindowHeight;

	return true;
}


//----------------------GetClosestObject()---------------------------------
//
//	returns the vector from the sweeper to the closest mine
//
//-----------------------------------------------------------------------
SVector2D CMinesweeper::GetClosestMine(vector<SVector2D> &mines)
{
	double			closest_so_far = 99999;

	SVector2D		vClosestObject(0, 0);

	//cycle through mines to find closest
	for (int i=0; i<mines.size(); i++)
	{
		double len_to_object = Vec2DLength(mines[i] - m_vPosition);

		if (len_to_object < closest_so_far)
		{
			closest_so_far	= len_to_object;
			
			vClosestObject	= m_vPosition - mines[i];

      m_iClosestMine = i;
		}
	}

	return vClosestObject;
}
SVector2D CMinesweeper::GetClosetHum(vector<hum>&x)
{
	double			closest_so_far = 99999;

	SVector2D		vClosestObject(0, 0);

	//cycle through mines to find closest
	for (int i=0; i<x.size(); i++)
	{
		double len_to_object = Vec2DLength(x[i].pos - m_vPosition);

		if (len_to_object < closest_so_far)
		{
			closest_so_far	= len_to_object;
			
			vClosestObject	= m_vPosition - x[i].pos;

      m_iClosestMine = i;
		}
	}
	return vClosestObject;
}
//----------------------------- CheckForMine -----------------------------
//
//  this function checks for collision with its closest mine (calculated
//  earlier and stored in m_iClosestMine)
//-----------------------------------------------------------------------
int CMinesweeper::CheckForMine(vector<SVector2D> &mines, double size)
{
  SVector2D DistToObject = m_vPosition - mines[m_iClosestMine];
		
	if (Vec2DLength(DistToObject) < (size + 5))
	{ 
			return m_iClosestMine;
  }

  return -1;
}
int	CMinesweeper::CheckForHum(hum & hum1,double size)
{
	SVector2D Dist=m_vPosition-hum1.pos;
	if(Vec2DLength(Dist)<(size+5))
	{
		return  1;
	}
return -1;
		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区在线| 欧美日韩黄色影视| 国产一区二区三区精品视频| 一区二区三区免费| 亚洲女同女同女同女同女同69| 国产视频911| 国产欧美一区二区精品忘忧草 | 亚洲一区在线视频| 亚洲人成亚洲人成在线观看图片| 中文字幕欧美日韩一区| 国产精品情趣视频| 亚洲欧美在线高清| 又紧又大又爽精品一区二区| 一区二区三区中文字幕精品精品| 一区二区成人在线| 午夜日韩在线观看| 精品一区精品二区高清| 久久福利资源站| 国产成人小视频| 99国产精品99久久久久久| av在线不卡电影| 欧美日韩综合在线免费观看| 欧美日韩国产欧美日美国产精品| 欧洲精品中文字幕| 91精品国产一区二区| 精品国产精品一区二区夜夜嗨| 欧美日韩激情一区| 精品国产三级电影在线观看| 国产欧美日韩精品a在线观看| 国产精品久久久久四虎| 亚洲一区二区黄色| 激情综合色播激情啊| 成人激情免费视频| 色综合久久久网| 欧美一级高清片在线观看| 久久久精品2019中文字幕之3| 国产精品久久看| 三级久久三级久久久| 精品一区二区免费在线观看| 99免费精品视频| 欧美一级二级三级蜜桃| 国产欧美日本一区视频| 日韩精品视频网| 成人动漫一区二区在线| 欧美精品一卡二卡| 国产精品无码永久免费888| 午夜久久福利影院| 成人视屏免费看| 欧美一二三四区在线| 国产精品福利av| 久久99精品国产.久久久久久| 99精品在线免费| 日韩精品影音先锋| 亚洲一区二区欧美日韩 | 久久亚洲一级片| 亚洲精品视频一区| 国产精品亚洲成人| 777精品伊人久久久久大香线蕉| 久久免费偷拍视频| 青椒成人免费视频| 欧美日韩久久不卡| 亚洲欧美日韩人成在线播放| 国产精品一区专区| 日韩三级视频在线观看| 亚洲福利视频导航| 91免费版pro下载短视频| 国产日本欧美一区二区| 精品综合免费视频观看| 91精品婷婷国产综合久久| 亚洲精品免费播放| 91免费在线视频观看| 国产精品青草综合久久久久99| 麻豆高清免费国产一区| 久久九九影视网| 天天操天天色综合| 欧美三级乱人伦电影| 亚洲黄色尤物视频| 色综合欧美在线视频区| 国产精品久久久久久久久晋中| 国产麻豆午夜三级精品| 日韩一区二区不卡| 日本女优在线视频一区二区| 欧美美女喷水视频| 一区二区三区鲁丝不卡| 在线视频中文字幕一区二区| 亚洲欧美日韩电影| 日本久久一区二区三区| 亚洲五码中文字幕| 欧美精品色综合| 日韩激情av在线| 日韩视频免费观看高清在线视频| 亚洲高清久久久| 88在线观看91蜜桃国自产| 天堂一区二区在线| 日韩久久精品一区| 国产精品自拍在线| 国产日韩精品视频一区| 成人小视频免费观看| 亚洲精品视频在线观看免费 | 亚洲一区二区三区免费视频| 欧美亚洲动漫制服丝袜| 日日摸夜夜添夜夜添国产精品| 欧美精品一二三| 精品一区二区三区在线观看| 国产亚洲欧美色| 99精品在线免费| 婷婷丁香激情综合| 久久久综合视频| 色综合久久久久久久久久久| 亚洲一区在线观看视频| 欧美视频一区二区三区四区| 99久久综合色| 亚欧色一区w666天堂| 91精品国模一区二区三区| 国产寡妇亲子伦一区二区| 日韩一区在线播放| 欧美一区二区三区四区在线观看| 精品一二三四在线| 亚洲欧美另类小说视频| 精品国产百合女同互慰| 成人国产电影网| 日本人妖一区二区| 综合色中文字幕| 日韩精品一区二区三区中文不卡| 成人夜色视频网站在线观看| 午夜亚洲国产au精品一区二区| 国产人伦精品一区二区| 4438成人网| 色综合天天综合在线视频| 激情另类小说区图片区视频区| 亚洲免费观看高清完整版在线观看| 日韩一区二区三区观看| 色婷婷综合久久久久中文| 国产精品原创巨作av| 日本欧美韩国一区三区| 亚洲伦在线观看| 国产日韩精品一区| 欧美mv日韩mv国产网站| 欧美影视一区在线| 成人免费高清在线| 精品一区二区三区蜜桃| 午夜精品久久久久久| 一区二区三区在线免费播放| 国产精品拍天天在线| 精品久久久久久亚洲综合网| 欧美久久一二区| 欧美伊人久久久久久久久影院| 成人小视频免费在线观看| 国产精品中文有码| 91久久精品一区二区二区| 国产91在线观看丝袜| 激情综合网天天干| 激情国产一区二区 | 67194成人在线观看| 欧美亚洲禁片免费| 色老汉av一区二区三区| 一本到高清视频免费精品| 不卡的av网站| 丁香一区二区三区| 国产69精品久久99不卡| 国产高清在线精品| 国产丶欧美丶日本不卡视频| 国产精品一区免费视频| 国产精品99久| 波多野结衣中文一区| 不卡的av在线| 色综合久久久久综合体| 欧洲亚洲国产日韩| 欧美日韩久久久久久| 日韩西西人体444www| 精品国产一区二区精华| 国产亚洲精品精华液| 国产精品美女一区二区在线观看| 国产精品三级久久久久三级| 日韩毛片高清在线播放| 亚洲一区二区三区四区五区黄 | 91精品国产综合久久婷婷香蕉| 欧美日韩国产高清一区二区三区 | 日本一区二区免费在线观看视频 | 日韩美女啊v在线免费观看| 一区二区不卡在线播放| 日韩成人一区二区| 国产成人精品aa毛片| 色综合色狠狠天天综合色| 欧美麻豆精品久久久久久| 精品国产乱子伦一区| 亚洲视频在线观看一区| 日韩av在线播放中文字幕| 国产a久久麻豆| 精品视频一区二区不卡| 欧美www视频| 一区二区三区在线免费播放| 免费av网站大全久久| 9i看片成人免费高清| 日韩欧美一区中文| 亚洲欧美日韩国产一区二区三区| 美腿丝袜亚洲综合| 色综合久久综合中文综合网| 日韩欧美成人一区| 一区二区三区在线观看欧美 |