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

📄 tspdlg.h

📁 退火算法的一个演示程序,含有源代码,通过画面演示退火算法的原理!
💻 H
字号:
// TSPDlg.h : 头文件
//

#pragma once

#include "../Graph/Pegrpapi.h"
#include "../share/Ini.h"
#include "../share/MyCmnHdr.h"
#include <list>
#include <iostream>
#include <complex>
using namespace std;
#include "TChar.h"
#include "afxwin.h"

// CTSPDlg 对话框
class CTSPDlg : public CDialog
{
// 构造
public:
	CTSPDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_TSP_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	HWND m_hGrahp1;
	HWND m_hGrahp2;
	// 绘图板
	CStatic m_Palette1;
	// 过程画板
	CStatic m_Palette2;
	// 初始温度
	CEdit m_T0;
	// 衰减因子
	CEdit m_a;
	// MapKOB链长度(固定)
	CEdit m_L;
	// 初始接受率
	CEdit m_X0;
	// 终止接受率
	CEdit m_Xk;
	// 迭代次数
	CEdit m_IterCnt;
	// 原始结果
	CStatic m_SResulte;
	// 最终结果
	CStatic m_EResulte;

	std::list<CPoint> std_pt;
	std::list<CPoint>::iterator std_itor_pt;
public:
	// 加载问题数据
	afx_msg void OnBnClickedLoadquesdataBtn();
	// 开始计算
	afx_msg void OnBnClickedCalcBtn();
public:
	// 加载问题数据按钮
	CButton m_LoadBtn;
	// 计算/停止按钮
	CButton m_CalcBtn;
public:
	// 计算能量差
	// pPoint:问题数据 
	// nU:随机数(1 < nU < nV < nW < 问题规模 - 1)
	// nV:随机数(1 < nU < nV < nW < 问题规模 - 1)
	// nV:随机数(1 < nU < nV < nW < 问题规模 - 1)
	// nW == 0 变换 2,否则变换 3
	double CalcEnergyDisp(const CPoint * pPoint, const UINT &nU, const UINT &nV, const UINT &nW = 0);
	// 计算当前结果
	double CalcEnergyResulte(const CPoint * pPoint, const UINT &size);
	// 变化能量
	void ChangeEnergy(CPoint * pPoint, const UINT &size, const UINT &nU, const UINT &nV, const UINT &nW = 0);
	// 计算初始温度
	double CalcT0(CPoint * pPoint, const UINT &size, const double dX0);
	// 计算当前接受率
	double CalcXk(const double &dEqualIncrement, const UINT &nM1, const UINT &nM2, const double dT0);
	// 计算两点间距离
	double CalcPtoP(const CPoint &Point1, const CPoint &Point2);
public:
	afx_msg void OnDestroy();
	// 绘图消息
	LRESULT OnDrawPlot(WPARAM wParam, LPARAM lParam);
private:
	BOOL bfThreadRun;
	
	// 优化结果
	CStatic m_KResulte;
public:
	// 终止温度
	CEdit m_Te;
	// 终止迭代的无变动解的 mapkob 链数
	CEdit m_stop_mkb_cnt;
};

⌨️ 快捷键说明

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