📄 tsp2problem.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 + -