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

📄 testset.c

📁 C++蚂蚁实现/C++蚂蚁实现 C++蚂蚁实现
💻 C
📖 第 1 页 / 共 2 页
字号:
/*  Ant-based Clustering    Copyright (C) 2004 Julia Handl    Email: Julia.Handl@gmx.de    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//***************************************************date: 7.4.2003author: Julia Handl (Julia.Handl@gmx.de)description: hard-coding of two-dimensional artificial test sets***************************************************/#include "testset.h"#include "math.h"#include "conf.h"#include "random.h"#include "gasdev.h"double mysquare(double);extern long idum;// constructor, requires the name of the test set // and the current configuration objecttestset::testset(char * n, conf * c) {    par = c;    point_coordinates = NULL;    name = n; }// destructor// free all allocated memory testset::~testset() {      if (point_coordinates != NULL) {	for (int i=0; i<par->binsize; i++) {	    delete point_coordinates[i];	}	delete [] point_coordinates;      }}// generation of the testset described by the // global string <name>void testset::generate() {     // "square0"    if (strcmp(name, "square0") == 0) {	par->num_cluster = 4;	par->kclusters = 4;	par->binsize = 1000;	par->bindim = 2;	par->mu_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->sigma_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->size_cluster = new int[par->num_cluster];		// allocation of memory to store mean and stdv	for (int i=0; i<par->num_cluster; i++) {	    par->mu_cluster[i] = new USED_DATA_TYPE[par->bindim];	    par->sigma_cluster[i] = new USED_DATA_TYPE[par->bindim];	}	// description of the Normal Distributions	par->mu_cluster[0][0] = 10; par->mu_cluster[0][1] = 10;	par->mu_cluster[1][0] = 10; par->mu_cluster[1][1] = 0;	par->mu_cluster[2][0] = 0; par->mu_cluster[2][1] = 10;	par->mu_cluster[3][0] = 0; par->mu_cluster[3][1] = 0;	for (int i=0; i<par->num_cluster; i++) {		par->sigma_cluster[i][0] = 1;		par->sigma_cluster[i][1] = 1;		par->size_cluster[i] = par->binsize / par->num_cluster;	}	// allocation of memory to store data items	point_coordinates = new USED_DATA_TYPE* [par->binsize];	if (point_coordinates == NULL) {	    cerr << "Testset: Memory allocation failed" << endl;	    exit(0);	}	// generation of the data items	int ctr = 0;	for (int i=0; i<par->num_cluster; i++) {	    for (int j=0; j<par->size_cluster[i]; j++) {		point_coordinates[ctr] = new USED_DATA_TYPE[par->bindim];		if (point_coordinates[ctr] == NULL) {		    cerr << "Testset: Memory allocation failed" << endl;		    exit(0);		}		point_coordinates[ctr][0] = par->mu_cluster[i][0] + gasdev(&idum)*par->sigma_cluster[i][0];		point_coordinates[ctr][1] = par->mu_cluster[i][1] + gasdev(&idum)*par->sigma_cluster[i][1];		ctr++;	    }	}    }    // "square1"  else if (strcmp(name, "square1") == 0) {	par->num_cluster = 4;	par->kclusters = 4;	par->binsize = 1000;	par->bindim = 2;	par->mu_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->sigma_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->size_cluster = new int[par->num_cluster];		// allocation of memory to store mean and stdv	for (int i=0; i<par->num_cluster; i++) {	    par->mu_cluster[i] = new USED_DATA_TYPE[par->bindim];	    par->sigma_cluster[i] = new USED_DATA_TYPE[par->bindim];	}	// description of the Normal Distributions	par->mu_cluster[0][0] = 10; par->mu_cluster[0][1] = 10;	par->mu_cluster[1][0] = 10; par->mu_cluster[1][1] = 0;	par->mu_cluster[2][0] = 0; par->mu_cluster[2][1] = 10;	par->mu_cluster[3][0] = 0; par->mu_cluster[3][1] = 0;	for (int i=0; i<par->num_cluster; i++) {		par->sigma_cluster[i][0] = 2;		par->sigma_cluster[i][1] = 2;		par->size_cluster[i] = par->binsize / par->num_cluster;	}	// allocation of memory to store data items	point_coordinates = new USED_DATA_TYPE* [par->binsize];	if (point_coordinates == NULL) {	    cerr << "Testset: Memory allocation failed" << endl;	    exit(0);	}	// generation of the data items	int ctr = 0;	for (int i=0; i<par->num_cluster; i++) {    	    for (int j=0; j<par->size_cluster[i]; j++) {		point_coordinates[ctr] = new USED_DATA_TYPE[par->bindim];		if (point_coordinates[ctr] == NULL) {		    cerr << "Testset: Memory allocation failed" << endl;		    exit(0);		}		point_coordinates[ctr][0] = par->mu_cluster[i][0] + gasdev(&idum)*par->sigma_cluster[i][0];		point_coordinates[ctr][1] = par->mu_cluster[i][1] + gasdev(&idum)*par->sigma_cluster[i][1];				ctr++;	    }	}    }    // "square2"    else if (strcmp(name, "square2") == 0) {	par->num_cluster = 4;	par->kclusters = 4;	par->binsize = 1000;	par->bindim = 2;	par->mu_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->sigma_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->size_cluster = new int[par->num_cluster];		// allocation of memory to store mean and stdv	for (int i=0; i<par->num_cluster; i++) {	    par->mu_cluster[i] = new USED_DATA_TYPE[par->bindim];	    par->sigma_cluster[i] = new USED_DATA_TYPE[par->bindim];	}	// description of the Normal Distributions	par->mu_cluster[0][0] = 9; par->mu_cluster[0][1] = 9;	par->mu_cluster[1][0] = 9; par->mu_cluster[1][1] = 0;	par->mu_cluster[2][0] = 0; par->mu_cluster[2][1] = 9;	par->mu_cluster[3][0] = 0; par->mu_cluster[3][1] = 0;	for (int i=0; i<par->num_cluster; i++) {		par->sigma_cluster[i][0] = 2;		par->sigma_cluster[i][1] = 2;		par->size_cluster[i] = par->binsize / par->num_cluster;	}	// allocation of memory to store data items	point_coordinates = new USED_DATA_TYPE* [par->binsize];	if (point_coordinates == NULL) {	    cerr << "Testset: Memory allocation failed" << endl;	    exit(0);	}	// generation of the data items	int ctr = 0;	for (int i=0; i<par->num_cluster; i++) {	    	    for (int j=0; j<par->size_cluster[i]; j++) {		point_coordinates[ctr] = new USED_DATA_TYPE[par->bindim];		if (point_coordinates[ctr] == NULL) {		    cerr << "Testset: Memory allocation failed" << endl;		    exit(0);		}		point_coordinates[ctr][0] = par->mu_cluster[i][0] + gasdev(&idum)*par->sigma_cluster[i][0];		point_coordinates[ctr][1] = par->mu_cluster[i][1] + gasdev(&idum)*par->sigma_cluster[i][1];				ctr++;	    }	}    }    // "square3"    else if (strcmp(name, "square3") == 0) {	par->num_cluster = 4;	par->kclusters = 4;	par->binsize = 1000;	par->bindim = 2;	par->mu_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->sigma_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->size_cluster = new int[par->num_cluster];		// allocation of memory to store mean and stdv	for (int i=0; i<par->num_cluster; i++) {	    par->mu_cluster[i] = new USED_DATA_TYPE[par->bindim];	    par->sigma_cluster[i] = new USED_DATA_TYPE[par->bindim];	}	// description of the Normal Distributions	par->mu_cluster[0][0] = 8; par->mu_cluster[0][1] = 8;	par->mu_cluster[1][0] = 8; par->mu_cluster[1][1] = 0;	par->mu_cluster[2][0] = 0; par->mu_cluster[2][1] = 8;	par->mu_cluster[3][0] = 0; par->mu_cluster[3][1] = 0;	for (int i=0; i<par->num_cluster; i++) {		par->sigma_cluster[i][0] = 2;		par->sigma_cluster[i][1] = 2;		par->size_cluster[i] = par->binsize / par->num_cluster;	}	// allocation of memory to store data items	point_coordinates = new USED_DATA_TYPE* [par->binsize];	if (point_coordinates == NULL) {	    cerr << "Testset: Memory allocation failed" << endl;	    exit(0);	}	// generation of the data items	int ctr = 0;	for (int i=0; i<par->num_cluster; i++) {	    for (int j=0; j<par->size_cluster[i]; j++) {		point_coordinates[ctr] = new USED_DATA_TYPE[par->bindim];		if (point_coordinates[ctr] == NULL) {		    cerr << "Testset: Memory allocation failed" << endl;		    exit(0);		}	point_coordinates[ctr][0] = par->mu_cluster[i][0] + gasdev(&idum)*par->sigma_cluster[i][0];		point_coordinates[ctr][1] = par->mu_cluster[i][1] + gasdev(&idum)*par->sigma_cluster[i][1];		ctr++;	    }	}    }	    // "square4"    else if (strcmp(name, "square4") == 0) {	par->num_cluster = 4;	par->kclusters = 4;	par->binsize = 1000;	par->bindim = 2;	par->mu_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->sigma_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->size_cluster = new int[par->num_cluster];		// allocation of memory to store mean and stdv	for (int i=0; i<par->num_cluster; i++) {	    par->mu_cluster[i] = new USED_DATA_TYPE[par->bindim];	    par->sigma_cluster[i] = new USED_DATA_TYPE[par->bindim];	}	// description of the Normal Distributions	par->mu_cluster[0][0] = 7; par->mu_cluster[0][1] = 7;	par->mu_cluster[1][0] = 7; par->mu_cluster[1][1] = 0;	par->mu_cluster[2][0] = 0; par->mu_cluster[2][1] = 7;	par->mu_cluster[3][0] = 0; par->mu_cluster[3][1] = 0;	for (int i=0; i<par->num_cluster; i++) {		par->sigma_cluster[i][0] = 2;		par->sigma_cluster[i][1] = 2;		par->size_cluster[i] = par->binsize / par->num_cluster;	}	// allocation of memory to store data items	point_coordinates = new USED_DATA_TYPE* [par->binsize];	if (point_coordinates == NULL) {	    cerr << "Testset: Memory allocation failed" << endl;	    exit(0);	}	// generation of the data items	int ctr = 0;	for (int i=0; i<par->num_cluster; i++) {	 	    	    for (int j=0; j<par->size_cluster[i]; j++) {		point_coordinates[ctr] = new USED_DATA_TYPE[par->bindim];		if (point_coordinates[ctr] == NULL) {		    cerr << "Testset: Memory allocation failed" << endl;		    exit(0);		}		point_coordinates[ctr][0] = par->mu_cluster[i][0] + gasdev(&idum)*par->sigma_cluster[i][0];		point_coordinates[ctr][1] = par->mu_cluster[i][1] + gasdev(&idum)*par->sigma_cluster[i][1];		ctr++;	    }	}    }    // "square5"    else if (strcmp(name, "square5") == 0) {	par->num_cluster = 4;	par->kclusters = 4;	par->binsize = 1000;	par->bindim = 2;	par->mu_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->sigma_cluster = new USED_DATA_TYPE * [par->num_cluster];	par->size_cluster = new int[par->num_cluster];		// allocation of memory to store mean and stdv	for (int i=0; i<par->num_cluster; i++) {	    par->mu_cluster[i] = new USED_DATA_TYPE[par->bindim];	    par->sigma_cluster[i] = new USED_DATA_TYPE[par->bindim];	}	// description of the Normal Distributions	par->mu_cluster[0][0] = 6; par->mu_cluster[0][1] = 6;	par->mu_cluster[1][0] = 6; par->mu_cluster[1][1] = 0;	par->mu_cluster[2][0] = 0; par->mu_cluster[2][1] = 6;	par->mu_cluster[3][0] = 0; par->mu_cluster[3][1] = 0;	for (int i=0; i<par->num_cluster; i++) {		par->sigma_cluster[i][0] = 2;		par->sigma_cluster[i][1] = 2;		par->size_cluster[i] = par->binsize / par->num_cluster;	}	// allocation of memory to store data items	point_coordinates = new USED_DATA_TYPE* [par->binsize];	if (point_coordinates == NULL) {	    cerr << "Testset: Memory allocation failed" << endl;	    exit(0);	}	// generation of the data items	int ctr = 0;	for (int i=0; i<par->num_cluster; i++) {	 	    	    for (int j=0; j<par->size_cluster[i]; j++) {		point_coordinates[ctr] = new USED_DATA_TYPE[par->bindim];		if (point_coordinates[ctr] == NULL) {		    cerr << "Testset: Memory allocation failed" << endl;		    exit(0);		}		point_coordinates[ctr][0] = par->mu_cluster[i][0] + gasdev(&idum)*par->sigma_cluster[i][0];		point_coordinates[ctr][1] = par->mu_cluster[i][1] + gasdev(&idum)*par->sigma_cluster[i][1];		ctr++;	    }	}

⌨️ 快捷键说明

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