📄 wstspena.h
字号:
#pragma once
#include "WSCity.h"
#include "WSTempPoint.h"
class WSTSPENA
{
public:
float m_a;//引力参数
float m_b;//张力参数
float m_Temperature;//温度参数
float m_Alpha;//温度变化控制
float m_TempPointFactor;//确立m_TempPointNum = m_CityNum*Factor
float m_FixTempPointDegree;
//int m_FoundCityNum;//临时点和城市相匹配的数目
unsigned int m_CityNum;
unsigned int m_TempPointNum;
WSCity *m_pCity;
WSTempPoint *m_pTempPoint;
float m_Weight;//可通过计算得到
PCHAR m_FileName;
public:
WSTSPENA(void);
public:
~WSTSPENA(void);
public:
//读取城市坐标文件,生成相关信息
bool ReadCityInfoFromFile(char *p_FileName);
//初始化临时点信息//在获取城市信息之后使用
bool InitialTempPoint();
bool Initial(char *p_FileName, float p_a = 0.9, float p_b = 0.9, float p_Temperature = 0,
float p_Alpha = 0.9, float p_TempPointFactor = 2.5);//注:可以要求p_b的值为固定值
//p_Temperature为自适应的值
//p_a、p_Alpha和p_TempPointFactor可调节
private:
//高斯函数
float Gause(float p_Dist, float p_K);
//高斯函数
float GauseSquare(float p_DistSquare, float p_KSquare);
//计算城市神经元和临时点神经元间的权值
bool Weight(unsigned int p_CityNO, unsigned int p_TempPointNO);
//某临时点神经元接受调整
bool AdjustTempPoint(unsigned int p_TempPointNO);
bool AdjustTempPoint(unsigned int p_TempPointNO, WSCity &p_deltaYj);
public:
//判断是否所有城市都被匹配,且都临时点进行拟合处理
bool FitCity();
bool AdjustTempPoint();//所有临时点神经元受张力和引力作用调整(异步)
bool AdjustTempPointSyn();//所有临时点神经元受张力和引力作用调整(同步)
//对所有参数进行调整(一般是每轮一次)
bool AdjustParament();
//弹性神经网络的总控函数
bool RunENA();
float ComputeCityRouteDist();
void ShowResultRoute();
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -