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

📄 wstsp.h

📁 开发环境:Visual C++ .net2003 功能介绍:神经网络算法实验;分Console版本和MFC版本;主要用来求解TSP问题。
💻 H
字号:
#pragma once
#include <vector>

typedef struct _CityPoint
{
	FLOAT x;
	FLOAT y;
}CityPoint, *PCityPoint;

typedef std::vector<INT> CityOrderDef;

typedef struct stCityInfo
{
	INT	m_CityNum;
	CityOrderDef m_pCityOrder;	
	PCityPoint m_pCities;//按从0开始的顺序
public:
	stCityInfo()
	{
		m_CityNum = 0;
		m_pCityOrder.clear();
		m_pCities = NULL;
	}

	stCityInfo(INT _CityNum, PCityPoint _pCities, CityOrderDef _pCityOrder)
	{
		m_CityNum = _CityNum;
		m_pCityOrder = _pCityOrder;
		m_pCities = _pCities;
	}
}CityInfo, *PCityInfo;

class WSTSP
{
public:
	WSTSP(void);
	~WSTSP(void);

public:
	static BOOL Show(CityOrderDef _Order);


public:
	static INT GetRightIndex_Greedy(CityOrderDef _CityOrder, INT _CurCityNum);
	static INT GetLeftIndex_Greedy(CityOrderDef _CityOrder, INT _CurCityNum);
	static INT GetCityIndex(CityOrderDef _CityOrder, INT _CurCityNum);

	static BOOL GetShortestCities(CityInfo &_CityInfo, INT _City, INT *_CitySerial, INT _ShortestCityNum = 3);
	static BOOL MakeCityDistStyle(CityInfo &_CityInfo, INT **_CitySerial, INT _ShortestCityNum = 3);//已经定义好_CitySerial
	static BOOL AdjustCityOrder(CityInfo &_CityInfo);
	static BOOL MakeStyleCityOrder(CityInfo &_CityInfo, INT **_CitySerial, INT _ShortestCityNum = 3);

	static FLOAT CityDistance(FLOAT _Ax, FLOAT _Ay, FLOAT _Bx, FLOAT _By);
	static FLOAT CityDistance(CityPoint _A, CityPoint _B);
	static FLOAT TSPTotalDistance(PCityInfo _pCityInfo);

	static BOOL ReadCityInfoFromFile(PCHAR _FileName, CityInfo &_CityInfo);
	static BOOL GenCityInfoToFile(PCHAR _FileName, INT _CityNum);

	static VOID SwapValues(INT & _A, INT & _B);
	static VOID GenRandCityOrder(CityInfo &_CityInfo);
	static VOID GenRandCityOrder(CityOrderDef &_CityOrder);

	static VOID ReverseSubOrder(CityOrderDef &_CityOrder);
	static VOID ReverseSubOrder(INT _Begin, INT _End, CityOrderDef & _CityOrder);
	static VOID RearrangeSubOrder(CityOrderDef &_CityOrder);
	static VOID RearrangeSubOrder(INT _Begin, INT _End, CityOrderDef & _CityOrder);
	static BOOL EqualOrders(CityOrderDef _A, CityOrderDef _B);
	static BOOL CrossSubOrder(CityOrderDef _CityOrderPa, CityOrderDef _CityOrderPb, CityOrderDef & _CityOrderSa, CityOrderDef & _CityOrderSb);   
	static BOOL CrossSubOrder(INT _Begin, INT _End, CityOrderDef _CityOrderPa, CityOrderDef _CityOrderPb, CityOrderDef & _CityOrderSa, CityOrderDef & _CityOrderSb); 
};

⌨️ 快捷键说明

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