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

📄 tsp2problem.cpp

📁 遗传算法vc++语言版源程序,台湾大学编写。
💻 CPP
字号:
#include "TSP2Problem.h"
#include "CommonUtility.h"
#include <fstream>

using namespace std;

//#include "GA1DArraySolution.h"

TSP2Problem::TSP2Problem()
{
	m_Road.clear();
	m_Road.push_back(ROAD(0, 1, 5));
	m_Road.push_back(ROAD(0, 2, 5));
	m_Road.push_back(ROAD(1, 2, 5));
	m_Road.push_back(ROAD(1, 3, 5));
	m_Road.push_back(ROAD(1, 4, 6));
	m_Road.push_back(ROAD(2, 3, 7));
	m_Road.push_back(ROAD(2, 5, 5));
	m_Road.push_back(ROAD(3, 4, 2));
	m_Road.push_back(ROAD(3, 6, 6));
	m_Road.push_back(ROAD(4, 6, 6));
	m_Road.push_back(ROAD(3, 7, 7));
	m_Road.push_back(ROAD(5, 7, 6));
	m_Road.push_back(ROAD(6, 7, 3));
	m_Road.push_back(ROAD(2, 7, 10));
	m_problemDim = 8;
}
TSP2Problem::TSP2Problem(const TSP2Problem& src)
{
//	if(src == NULL) return;
	this->m_Road = src.m_Road;
	m_problemDim = src.m_problemDim;
}
double TSP2Problem::GetResult(void* parm)
{
	//GA1DArraySolution *sol = static_cast<GA1DArraySolution*>(parm);
	vector<double>	*pArray = static_cast<vector<double>*>(parm);
	double dist = 0.0;
	double temp;
	for(size_t a=0;a<(*pArray).size()-1;a++)
	{
		int c1 = (*pArray)[a];
		int c2 = (*pArray)[a+1];
		temp = Distance(c1, c2);
		if(temp<0)
		{
			dist = 0;
			for(size_t i=0;i<m_Road.size();i++)
				dist += m_Road[i].dist;
			return dist;
		}
		dist += temp;
	}
	return dist;
}

void TSP2Problem::LogHeader(ostream& os)
{
	os << "Travelling Salesman Problem 2 Configuration:\n";
	os << "Number of Cities:\t" << "8";
	os << "Distance of Cities:\n";
	os << "\ta\tb\tdistance\n";
	for(int i=0;i<(int)m_Road.size();i++)
		os << "\t" << m_Road[i].c1 << "\t" << m_Road[i].c2 << "\t" << m_Road[i].dist << endl;
	os << endl;
}

void TSP2Problem::GetExternalData(void* input)
{
	vector<vector<double > > *tar = (vector<vector<double > > *)input;
	tar->resize(m_problemDim);
	for(size_t i=0;i<tar->size();i++)
	{
		(*tar)[i].resize(m_problemDim);
		for(size_t j=0;j<(*tar)[i].size();j++)
			(*tar)[i][j] = Distance(i, j);
	}
}

⌨️ 快捷键说明

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