学习使用hopfield神经网络解决TSP问题(毕业设计Day01)
本篇文章主要是学习 <Hopfield神经网络在TSP问题中的应用_兰兆青>这篇文章,如有侵权,请联系删除。
(这系列文章主要是为了帮助自己理清思路,更好的了解神经网络,最终完成毕业设计,其中绝大部分内容都是引用兰兆青先生的文章)
了解TSP 问题
TSP问题的原始定义是有一个推销员要到n个城市推销商品,他要找出一个包含所有城市的具有最短路程的环路.
大致了解如何使用神经网络解决旅行商问题
神经网络被广泛应用在求解TSP问题中。对于这样一个组合优化问题,神经网络可以把目标函数转化为网络的能量函数,把问题的变量对应到网络的状态。这样当网络的能量函数收敛于极小值时,问题的最优解也随之求出。由于神经网络是并行计算的,其计算量不随维数的增加而发生指数性“爆炸”因而对于优化问题的高速计算特别有效。
人工神经网络简介
神经网络是一个由大量结构简单的处理单元即神经元通过广泛的连接而形成的神经系统。通过大量神经元的并行计算和分布存储神经网络具有很强的计算能力和存储能力。因此神经网络是一种基于大规模并行的分布式处理系统。神经网络在两方面与大脑相似:
- 神经网络获取的知识是从外界环境中学习得来的。
- 互连神经元的连接强度‚即突触权值‚用于存储获取的知识。
设计一个神经网络模型需要考虑如下三个方面的因素:
- 网络拓扑结构。前向式神经网络还是反馈式神经网络。网络的层数,神经元的数目。
- 神经元的类型。神经元输入输出函数的类型,是可以同模拟电路实现的简单神经元还是必须用数值电路实现的复杂神经元,是连续型神经元还是离散型神经元。
- 学习训练机制。是有监督的学习还是无监督的自组织学习方式,所用的学习规则和训练方法。
Hopfield神经网络
Hopfield网络是一种互连型网络的一种,神经网络的拓扑结构(用连接权矩阵表示)与所求问题(用目标函数描述)相对应。并将其转换为神经网动力学系统的演化问题。其演变过程是一个非线性动力学系统,可以用一组非线性差分议程描述**(离散型)或微分方程(连续型)**来描述。系统的稳定性可用所谓的“能量函数”进行分析。在满足条件的情况下某种“能量函数”的能量在网络运行过程中不断地减少,最后趋于稳定的平衡状态。对于一个非线性动力学系统,系统的状态从某一初值出发经过演变后可能有如下几种结果:
渐进稳定点,极限环,混沌,状态发散。
因为人工神经网络的变换函数是一个有界函数故系统的状态不会发生发散现象。目前人工神经网络经常利用渐进稳定点来解决某些问题。如果把系统的稳定点视为一个一记忆的话,那么从初态朝这个稳定点的演变过程就是一个寻找记忆的过程。如果把系统的稳定点视为一个能量函数的极小点而把能量函数视为一个优化问题的目标函数,那么从初态朝这个稳定点的演变过程就是一个求解该优化问题的过程。因此神经网络的演变过程是一个计算联想记忆或求解优化问题的过程。实际上它的解决并不需要真的去计算而是通过构成反馈神经网络,适当地设计其连接权和输入就可以达到这个目的