⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 point.cc

📁 经网络提出了一种基于蚁群聚类算法的径向基神经网络. 利用蚁群算法的并行寻优特征和挥发系数方法的自适应更改信息量的能力,并以球面聚类的方式确定了径向基神经网络中基函数的位置, 同时通过比较隐层神经元的相
💻 CC
字号:
/* $Id: point.cc,v 1.5 2006-08-21 15:02:00 jonathan Exp $* Jonathan Ledlie, Harvard University.* Copyright 2006.  All rights reserved.*/#include "sim.h"#include "point.h"int DIMENSIONS = 5;bool USE_HEIGHT = false;// Do not set to be larger than 1 (see checkHeight())const double MIN_HEIGHT = 0.01;const double INITIAL_VECTOR_VALUE = 0.;Point::Point (int s){	stamp = s;}Point::Point () {	v = new double[DIMENSIONS];	for (int i = 0; i < DIMENSIONS; i++)	{		v[i] = INITIAL_VECTOR_VALUE;	}	stamp = 0;	height = INITIAL_VECTOR_VALUE;}Point* Point::getRandomPoint (double sideLength) {	double vec[DIMENSIONS];	for (int d = 0; d < DIMENSIONS; d++)	{		double s = Rand() * sideLength;		if (Rand() > .5)			s *= -1.;		vec[d] = s;	}	double height = 0.;	if (USE_HEIGHT) 	{		height = randPct();	}	return new Point (vec, height);}Point::Point (const double *vec, double h) {	v = new double[DIMENSIONS];	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = vec[i];	}	stamp = 0;	height = h;}void Point::clear () {	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = INITIAL_VECTOR_VALUE;	}	stamp = 0;	height = INITIAL_VECTOR_VALUE;}Point::Point (const Point *vec) {	v = new double[DIMENSIONS];	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = vec->v[i];	}	stamp = vec->stamp;	height = vec->height;}Point::~Point (){	delete [] v;}bool Point::operator<(const Point *rhs) const {	return stamp < rhs->stamp;}Point* Point::getDirection (const Point *p){	double coordDistance = getEuclideanDistance(p);	if (coordDistance == 0)		return NULL;	Point* unitVector = new Point();	for (int i = 0; i < DIMENSIONS; i++) 	{		unitVector->v[i] = (p->v[i] - v[i]) / coordDistance;	}	unitVector->height = (height + p->height) / coordDistance;	return unitVector;}double Point::getEuclideanDistance (const Point *b){	return getPlanarDistance(b) + height + b->height;}double Point::getAbsoluteDistance (const Point *b){	return getPlanarDistance(b) + fabs(height - b->height);}double Point::getPlanarDistance (const Point *b){	double sum = 0.;	for (int i = 0; i < DIMENSIONS; i++) 	{		sum += pow (v[i]-b->v[i],2.);	}	if (sum == 0.) return 0.;	double dist = sqrt (sum);	if (isnan(dist))	{		cout << "sum " << sum << this << endl;	}	assert (!isnan(dist));	return dist;}double Point::length () {	double sum = 0;	for (int i = 0; i < DIMENSIONS; i++)	{		sum += pow (v[i],2.);	}	return sqrt (sum) + height;}void Point::bump (){	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = randPct();	}	if (USE_HEIGHT)		height = randPct();}void Point::assign (const Point *vec) {	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = vec->v[i];	}	stamp = vec->stamp;	height = vec->height;}bool Point::isInInitialState (){	for (int i = 0; i < DIMENSIONS; i++)	{		if (v[i] != INITIAL_VECTOR_VALUE)			return false;	}	if (height != INITIAL_VECTOR_VALUE)		return false;	return true;}void Point::scale (double s) {	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = v[i] * s;	}	height *= s;}void Point::add (const Point *adjustment) {	for (int i = 0; i < DIMENSIONS; i++) 	{		v[i] = v[i] + adjustment->v[i];	}	height += adjustment->height;}void Point::checkHeight () {	while (USE_HEIGHT && height < MIN_HEIGHT)	{		height = randPct();	}}Point* Point::getRandomUnitVector () {	Point* unitVector = new Point();	double length = 0.;	for (int i = 0; i < DIMENSIONS; i++) 	{		unitVector->v[i] = random();		length += unitVector->v[i] * unitVector->v[i];	}  	length = sqrt(length);	for (int i = 0; i < DIMENSIONS; i++) 	{		unitVector->v[i] /= length;	}		unitVector->height = 0;	if (USE_HEIGHT)	{		unitVector->height = randPct();	}	return unitVector;}ostream& operator << (ostream& os, Point *p) {	os << "[";	for (int i = 0; i < DIMENSIONS; i++)	{		os << p->v[i];		if (i < DIMENSIONS-1)			os << " ";	}	if (USE_HEIGHT)		os << " h " << p->height;	os << "]";	return os;}void Point::print (FILE *fp) {	for (int i = 0; i < DIMENSIONS; i++) 	{		fprintf (fp, "%5.3f", v[i]);		if (i < DIMENSIONS-1)			fprintf (fp," ");	}	if (USE_HEIGHT)		fprintf (fp," h %f", height);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -