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

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

?? main.cpp

?? 通過人工智能算法快速實現神經網絡識別
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "main.h"
#include "time.h"
#include "MyNeuralNetwork.h"


#define		_TIMESTEP						0.0025
#define		_TOL							1e-10
#define		_FWDTIME						10
#define		_THRUSTFACTOR					1.0
#define     _CHASESETUP						true
#define		_SPAWN_AREA_R					300

#define		_MAX_NUM_UNITS					20

#define		_UNIT_LENGTH					4

#define		_WIDEVIEW_RADIUS_FACTOR				200
#define		_NARROWVIEW_RADIUS_FACTOR			50
#define		_LIMITEDVIEW_RADIUS_FACTOR			30
#define		_CRITICAL_RADIUS_FACTOR				6

#define		_SEPARATION_FACTOR				5
#define		_BACK_VIEW_ANGLE_FACTOR			1
#define		_FRONT_VIEW_ANGLE_FACTOR		1

#define		_MAXHITPOINTS					500

// Global Variables:
int				FrameCounter = 0;
RigidBody2D		Units[_MAX_NUM_UNITS];
Vector			Target;

NeuralNetwork	TheBrain;

double			TrainingSet[14][7] = {	
0,		1,		0,		0.2,	0.9,	0.1,	0.1,
0,		1,		1,		0.2,	0.9,	0.1,	0.1,
0,		1,		0,		0.8,	0.1,	0.1,	0.1,
0.1,	0.5,	0,		0.2,	0.9,	0.1,	0.1,
0,		0.25,	1,		0.5,	0.1,	0.9,	0.1,
0,		0.2,	1,		0.2,	0.1,	0.1,	0.9,
0.3,	0.2,	0,		0.2,	0.9,	0.1,	0.1,
0,		0.2,	0,		0.3,	0.1,	0.9,	0.1,
0,		1,		0,		0.2,	0.1,	0.9,	0.1,
0,		1,		1,		0.6,	0.1,	0.1,	0.1,
0,		1,		0,		0.8,	0.1,	0.9,	0.1,
0.1,	0.2,	0,		0.2,	0.1,	0.1,	0.9,
0,		0.25,	1,		0.5,	0.1,	0.1,	0.9,
0,		0.6,	0,		0.2,	0.1,	0.1,	0.9
};


/*
double			TrainingSet[14][8] = {	
0,		1,		0,		0.2,	0.9,	0.1,	0.1,	0,
0,		1,		1,		0.2,	0.9,	0.1,	0.1,	0,
0,		1,		0,		0.8,	0.1,	0.1,	0.1,	1,
0.1,	0.5,	0,		0.2,	0.9,	0.1,	0.1,	0,
0,		0.25,	1,		0.5,	0.1,	0.9,	0.1,	0,
0,		0.2,	1,		0.2,	0.1,	0.1,	0.9,	0,
0.3,	0.2,	0,		0.2,	0.9,	0.1,	0.1,	0,
0,		0.2,	0,		0.3,	0.1,	0.9,	0.1,	0,
0,		1,		0,		0.2,	0.1,	0.9,	0.1,	1,
0,		1,		1,		0.6,	0.1,	0.1,	0.1,	1,
0,		1,		0,		0.8,	0.1,	0.9,	0.1,	0,
0.1,	0.2,	0,		0.2,	0.1,	0.1,	0.9,	0,
0,		0.25,	1,		0.5,	0.1,	0.1,	0.9,	0,
0,		0.6,	0,		0.2,	0.1,	0.1,	0.9,	0
};
*/


double			DamageRate = 0.4;


void	TrainTheBrain(void)
{
	int		i;
	double	error = 1;
	int		c = 0;	
	
	TheBrain.DumpData("PreTraining.txt");

	while((error > 0.05) && (c<50000))
	{
		error = 0;
		c++;
		for(i=0; i<14; i++)
		{
			TheBrain.SetInput(0, TrainingSet[i][0]);	
			TheBrain.SetInput(1, TrainingSet[i][1]);	
			TheBrain.SetInput(2, TrainingSet[i][2]);
			TheBrain.SetInput(3, TrainingSet[i][3]);

							
			TheBrain.SetDesiredOutput(0, TrainingSet[i][4]);	
			TheBrain.SetDesiredOutput(1, TrainingSet[i][5]);	
			TheBrain.SetDesiredOutput(2, TrainingSet[i][6]);
			//TheBrain.SetDesiredOutput(3, TrainingSet[i][7]);
	
			TheBrain.FeedForward();
			error += TheBrain.CalculateError();
			TheBrain.BackPropagate();

		}
		error = error / 14.0f;		
	}

	//c = c * 1;

	TheBrain.DumpData("PostTraining.txt");


}

void	ReTrainTheBrain(int i, double d0, double d1, double d2, double d3)
{
	double	error = 1;
	int		c = 0;	
	
	while((error > 0.1) && (c<5000))
	{
		
		c++;
		TheBrain.SetInput(0, Units[i].Inputs[0]);	
		TheBrain.SetInput(1, Units[i].Inputs[1]);		
		TheBrain.SetInput(2, Units[i].Inputs[2]);
		TheBrain.SetInput(3, Units[i].Inputs[3]);											
		TheBrain.SetDesiredOutput(0, d0);	
		TheBrain.SetDesiredOutput(1, d1);	
		TheBrain.SetDesiredOutput(2, d2);
		//TheBrain.SetDesiredOutput(3, d3);
	
		TheBrain.FeedForward();
		error = TheBrain.CalculateError();
		TheBrain.BackPropagate();		
	}

	//c = c * 1;
}

bool	Initialize(void)
{
	int i;

	GetRandomNumber(0, _WINWIDTH, true);
			
	for(i=0; i<_MAX_NUM_UNITS; i++)
	{	
		Units[i].fMass = 10;
		Units[i].fInertia = 10;
		Units[i].fInertiaInverse = 1/10;
		Units[i].vPosition.x = GetRandomNumber(_WINWIDTH/2-_SPAWN_AREA_R, _WINWIDTH/2+_SPAWN_AREA_R, false);
		Units[i].vPosition.y = GetRandomNumber(_WINHEIGHT/2-_SPAWN_AREA_R, _WINHEIGHT/2+_SPAWN_AREA_R, false);
		Units[i].fWidth = _UNIT_LENGTH/2;
		Units[i].fLength = _UNIT_LENGTH;
		Units[i].fHeight = _UNIT_LENGTH;
		Units[i].fOrientation = GetRandomNumber(0, 360, false);	
		Units[i].CD.y = -0.12*Units[i].fLength;		Units[i].CD.x = 0.0f;			// coordinates of the body center of drag
		Units[i].CT.y = -0.50*Units[i].fLength;		Units[i].CT.x = 0.0f;			// coordinates of the propeller thrust vector
		Units[i].CPT.y = 0.5*Units[i].fLength;		Units[i].CPT.x = -0.5*Units[i].fWidth;	// coordinates of the port bow thruster
		Units[i].CST.y = 0.5*Units[i].fLength;		Units[i].CST.x = 0.5*Units[i].fWidth;	// coordinates of the starboard bow thruster

		Units[i].ProjectedArea = (Units[i].fLength + Units[i].fWidth) * Units[i].fHeight;

		Units[i].ThrustForce = _THRUSTFORCE;
		Units[i].HitPoints = _MAXHITPOINTS;
		Units[i].Chase = false;
		Units[i].Flock = false;
		Units[i].Evade = false;
		Units[i].Wander = true;

	}

	Units[0].vPosition.x = 0;
	Units[0].vPosition.y = 0;
	Units[0].fOrientation = 45;
	Units[0].HitPoints = _MAXHITPOINTS;
	Units[0].ThrustForce = _THRUSTFORCE*2;

	TheBrain.Initialize(4, 3, 3/*4*/);
	TheBrain.SetLearningRate(0.2);
	TheBrain.SetMomentum(true, 0.9);
	TrainTheBrain();


	return true;
}

void	Finalize(void)
{
	TheBrain.DumpData("Final.txt");
}

void	DoUnitAI(int i)
{
		
		int		j;
		int		N;
		Vector	Pave;
		Vector	Vave;
		Vector	Fs;
		Vector	Pfs;
		Vector	d, u, v, w;
		double	m;
		int		Nf, Na;
		bool	InView;		
		int		RadiusFactor;

		// begin Flock AI
		Fs.x = Fs.y = Fs.z = 0;
		Pave.x = Pave.y = Pave.z = 0;
		Vave.x = Vave.y = Vave.z = 0;
		N = 0;
		Pfs.x = 0;
		Pfs.y = Units[i].fLength / 2.0f;
		Nf = 0;
		Na = 0;
		
		for(j=1; j<_MAX_NUM_UNITS; j++)
		{
			if(i!=j)
			{
				InView = false;
				d = Units[j].vPosition - Units[i].vPosition;
				w = VRotate2D(-Units[i].fOrientation, d);
				
				if(((w.y > 0) && (fabs(w.x) < fabs(w.y)*_FRONT_VIEW_ANGLE_FACTOR))) 
					if(d.Magnitude() <= (Units[i].fLength * _NARROWVIEW_RADIUS_FACTOR))
						Nf++;

				if(d.Magnitude() <= (Units[i].fLength * _LIMITEDVIEW_RADIUS_FACTOR))
						Na++;

				if(Units[i].Flock)
				{
					InView = (w.y > 0);
					RadiusFactor = _LIMITEDVIEW_RADIUS_FACTOR;
				}
				
				if(InView)			
				{
					if(d.Magnitude() <= (Units[i].fLength * RadiusFactor))
					{
						Pave += Units[j].vPosition;
						Vave += Units[j].vVelocity;
						N++;
					}
				}

				if(!Units[i].Flock) // even if we're not flocking keep the units apart
				{
					InView = ((w.y > 0) || ((w.y < 0) && (fabs(w.x) > fabs(w.y)*_BACK_VIEW_ANGLE_FACTOR)));
					RadiusFactor = _WIDEVIEW_RADIUS_FACTOR;
				}						

				// Separation Rule:
				if(InView)
				{					
					if(d.Magnitude() <= (Units[i].fLength * _SEPARATION_FACTOR))
					{
						if(w.x < 0) m = 1;
						if(w.x > 0) m = -1;						
						
						Fs.x += m*_STEERINGFORCE * (Units[i].fLength * _SEPARATION_FACTOR) / d.Magnitude();
					}
				}
				
			}
		}

		Units[i].NumFriends = Na;
		

		// Cohesion Rule: 
		if(Units[i].Flock && (N > 0))
		{
			Pave = Pave / N;
			v = Units[i].vVelocity;
			v.Normalize();
			u = Pave - Units[i].vPosition;
			u.Normalize();
			w = VRotate2D(-Units[i].fOrientation, u);
			if(w.x < 0) m = -1;
			if(w.x > 0) m = 1;
			if(fabs(v*u) < 1.0f)
				Fs.x += m * _STEERINGFORCE * acos(v * u) / pi;
		}

		// Alignment Rule:
		if(Units[i].Flock && (N > 0))
		{
			Vave = Vave / N;
			u = Vave;
			u.Normalize();
			v = Units[i].vVelocity;
			v.Normalize();			
			w = VRotate2D(-Units[i].fOrientation, u);
			if(w.x < 0) m = -1;
			if(w.x > 0) m = 1;
			if(fabs(v*u) < 1)
				Fs.x += m * _STEERINGFORCE * acos(v * u) / pi;
		}

		// Chase
		if(Units[i].Chase)
		{
			u = Units[0].vPosition;
			d = u - Units[i].vPosition;
			w = VRotate2D(-Units[i].fOrientation, d);
			if(w.x < 0) m = -1;
			if(w.x > 0) m = 1;
			Fs.x += m*_STEERINGFORCE;			

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一三区三区四区免费在线看| 欧亚洲嫩模精品一区三区| 日本亚洲电影天堂| 天天色 色综合| 青青青爽久久午夜综合久久午夜 | 久久国内精品自在自线400部| 天堂一区二区在线| 天天影视涩香欲综合网| 免费久久精品视频| 国内国产精品久久| 粉嫩av一区二区三区粉嫩| 国产馆精品极品| 成人avav影音| 欧洲精品在线观看| 精品久久久久久久久久久久久久久| 91搞黄在线观看| 欧美三级视频在线观看| 欧美一区二区三区系列电影| 亚洲精品在线观看网站| 国产欧美精品区一区二区三区 | 亚洲h精品动漫在线观看| 日韩激情av在线| 国产在线乱码一区二区三区| 成人午夜碰碰视频| 欧美专区日韩专区| 欧美v日韩v国产v| 欧美激情在线一区二区三区| 亚洲精品美腿丝袜| 日韩在线一区二区三区| 国产东北露脸精品视频| 日本伦理一区二区| 日韩精品中文字幕一区二区三区| 国产欧美一区在线| 丝瓜av网站精品一区二区| 国产一区二区不卡在线 | 欧日韩精品视频| 欧美刺激脚交jootjob| 国产精品美女视频| 午夜影院久久久| 国产suv一区二区三区88区| 欧洲色大大久久| 久久九九99视频| 午夜视频在线观看一区二区三区| 国产成人在线免费观看| 欧美日韩免费视频| 国产精品乱人伦中文| 天天综合网 天天综合色| 成人黄色大片在线观看| 欧美tickling挠脚心丨vk| 亚洲美女在线一区| 国产超碰在线一区| 日韩三级伦理片妻子的秘密按摩| 亚洲婷婷在线视频| 国产精品主播直播| 欧美v国产在线一区二区三区| 一区二区三区在线不卡| 丁香婷婷综合五月| 精品国产电影一区二区| 香蕉久久一区二区不卡无毒影院| 成人h动漫精品| 337p粉嫩大胆噜噜噜噜噜91av| 婷婷成人激情在线网| 91福利在线看| 亚洲美女视频在线观看| 99久久99久久免费精品蜜臀| 精品sm在线观看| 久久99蜜桃精品| 91精品国产免费| 日韩国产精品91| 欧美另类高清zo欧美| 一区二区三区欧美久久| 91麻豆产精品久久久久久| 国产精品激情偷乱一区二区∴| 国产精品自拍网站| 久久男人中文字幕资源站| 狠狠狠色丁香婷婷综合激情 | 蜜桃一区二区三区在线| 欧美日韩高清在线播放| 亚洲va中文字幕| 欧美日韩国产综合一区二区| 亚洲电影视频在线| 欧美三级电影网站| 日韩—二三区免费观看av| 91麻豆精品国产无毒不卡在线观看 | 精品夜夜嗨av一区二区三区| 日韩美女视频在线| 国产高清不卡二三区| 国产精品网站在线| 97久久久精品综合88久久| 亚洲乱码国产乱码精品精98午夜| 欧美性高清videossexo| 日韩激情一二三区| 久久综合久久综合久久综合| 国产盗摄一区二区| 国产精品久久久久一区二区三区共| 国产毛片精品视频| 国产精品国产三级国产三级人妇| 91蜜桃在线免费视频| 午夜欧美一区二区三区在线播放 | 美女视频黄 久久| 久久久国产精品午夜一区ai换脸| 不卡欧美aaaaa| 亚洲狠狠爱一区二区三区| 日韩欧美亚洲国产另类| 成人免费毛片嘿嘿连载视频| 亚洲国产一二三| 精品捆绑美女sm三区| 成人国产精品免费观看| 午夜伊人狠狠久久| 国产欧美1区2区3区| 欧美色图天堂网| 国产精品99久久久久久久女警 | 国产精品久久久久久久久免费丝袜| 91亚洲精品一区二区乱码| 日韩综合小视频| 国产日韩精品一区二区三区在线| 色天天综合色天天久久| 久久国内精品自在自线400部| 国产精品久久久爽爽爽麻豆色哟哟 | 91成人免费网站| 国产乱码精品一区二区三区五月婷| 亚洲精品久久久蜜桃| 久久亚洲一区二区三区四区| 91官网在线免费观看| 国产ts人妖一区二区| 日本伊人午夜精品| 亚洲精品成a人| 精品国产乱码久久| 欧美一区二区视频网站| 91美女精品福利| 丰满白嫩尤物一区二区| 秋霞午夜鲁丝一区二区老狼| 亚洲国产日韩精品| 中文字幕在线免费不卡| 久久嫩草精品久久久精品| 91精品国产福利| 欧美性猛交xxxx乱大交退制版| www.欧美色图| 国产精品伊人色| 精品无人码麻豆乱码1区2区 | 国产在线精品一区在线观看麻豆| 亚洲高清免费视频| 亚洲视频一区二区免费在线观看| 国产亚洲美州欧州综合国| 欧美一个色资源| 51精品视频一区二区三区| 色狠狠av一区二区三区| av电影天堂一区二区在线观看| 国产精品自在欧美一区| 国产乱妇无码大片在线观看| 日产国产欧美视频一区精品| 香蕉影视欧美成人| 日韩和欧美一区二区| 日韩专区在线视频| 日本麻豆一区二区三区视频| 奇米精品一区二区三区在线观看 | 日韩欧美一区二区三区在线| 欧美日韩一级二级三级| 欧美三级韩国三级日本三斤| 欧美亚洲综合另类| 欧美午夜电影网| 在线不卡a资源高清| 欧美精品黑人性xxxx| 91精品国产一区二区人妖| 日韩精品专区在线影院重磅| 久久久久久久久久久久电影| 中日韩av电影| 亚洲尤物视频在线| 婷婷亚洲久悠悠色悠在线播放| 日本成人在线网站| 国产一区二区三区在线观看免费视频| 国产精品亚洲成人| www.欧美日韩国产在线| 欧美日韩国产免费一区二区| 欧美一二三四在线| 国产清纯在线一区二区www| 中文字幕一区二区三区蜜月| 亚洲国产精品久久一线不卡| 免费看精品久久片| 成人精品视频一区| 欧美日韩国产系列| 久久久精品免费观看| 亚洲免费观看高清完整版在线| 日韩—二三区免费观看av| 国产v日产∨综合v精品视频| 在线免费精品视频| 日韩欧美电影一二三| 中文字幕亚洲精品在线观看| 亚洲成av人片一区二区| 国产精品一区免费视频| 色94色欧美sute亚洲线路一久| 精品日韩在线一区| 一区二区三区国产精华| 极品少妇xxxx精品少妇偷拍| 91免费视频网址| 精品99久久久久久| 亚洲一线二线三线视频| 国产91清纯白嫩初高中在线观看| 欧美在线影院一区二区| 欧美国产精品v|