TSP旅行商问题的Hopfield求解过程
连续型Hopfield在matlab中没有直接的工具箱,所以我们们根据Hopfield给出的连续行算法自行编写程序。本文中,以求解旅行商
问题来建立Hopfield网络,并得到解,但是该解不一定是最优解,用Hopfield得到的解可能是次优解,或没有解。直接上问题:
8个城市的坐标:
0.100000000000000 0.100000000000000
0.900000000000000 0.500000000000000
0.900000000000000 0.100000000000000
0.450000000000000 0.900000000000000
0.900000000000000 0.800000000000000
0.500000000000000 0.500000000000000
0.100000000000000 0.450000000000000
0.450000000000000 0.100000000000000
求这8个城市的旅行商解。
在求解前,先简单引入一下连续性Hopfield网络的特点。
一般神经网络(RBF或BP)是单项的,而Hopfield网络特点在于有反馈,而最终得到的结果是一个网络的收敛值。
对于一个Hopfield网络来说,关键是在于确定它在稳定条件下的权系数。
ps:说白了,神经网络就是不断的改变权系数来逼近样本。
这里我们不介绍Hopfield网络的物理实现,因为该网络是一种模电物理模型,具体硬件知识我也不怎么清楚。我们只需要关心
两个问题:
1,单个神经元输入输出是什么(或者说怎么变化)
2,整个网络的变化状态(能量)
对于一个N节点的CHNN模型来说,其神经元状态变量的动态变化可用下述非线性微分方程组来描述
这个等式来自于Ui节点的电流,流入节点电流等于流出。Vi表示电压的变化。
这就是我们关心的能量函数。
这两个等式看不懂也没什么大问题,我们只要知道根据这两个等式推出的结论就可以。
结论:该网络是逐渐稳定的,随着时间推移,网络的能量E随着减小的方向运动,其最终状态就是E的极小值。
这里给出证明:
观察E的变化趋势,即求,而
,其中
所以,不难发现,E的变化率是递减的,即上述结论正确。
根据连续Hopfield天生的特点,我们不禁想到如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么Hopfield神经网络就能够用于解决优化组合问题。
接下来给出算法步骤:
这里需要反复迭代计算4~8步
这里具体代码见URL:http://files.cnblogs.com/files/panpansky/TSP_hopfield.rar
运算结果分析:
图一 图二 图三
图一表示城市1~8分别进行的顺序:4-6-7-1-8-3-2-5,图二是具体的路线图,图三表示能量的变化,其实在迭代至30次左右,能量已经趋于平稳。
以上代码和数据均来自http://www.ilovematlab.cn/thread-44738-1-1.html。
TSP旅行商问题的Hopfield求解过程的更多相关文章
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- RNN求解过程推导与实现
RNN求解过程推导与实现 RNN LSTM BPTT matlab code opencv code BPTT,Back Propagation Through Time. 首先来看看怎么处理RNN. ...
- h.264 mvp求解过程
h.264标准中由于分为宏块分割块(8x8),子宏块分割块(4x4),所以各种各样的求解过程比较繁琐 下面整理出标准中mvp的求解过程 8.4.1.3 已知条件有当前块的属性:位置.块类型需要得到当前 ...
- 深度学习(二)BP求解过程和梯度下降
一.原理 重点:明白偏导数含义,是该函数在该点的切线,就是变化率,一定要理解变化率. 1)什么是梯度 梯度本意是一个向量(矢量),当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点 ...
- ACS蚁群算法求解对称TSP旅行商问题的JavaScript实现
本来以为在了解蚁群算法的基础上实现这道奇怪的算法题并不难,结果实际上大相径庭啊.做了近三天时间,才改成现在这能勉强拿的出手的模样.由于公式都是图片,暂且以截图代替那部分内容吧,mark一记. 1 蚁群 ...
- 数学建模 TSP(旅行商问题) Lingo求解
model: sets: cities../:level; link(cities, cities): distance, x; !距离矩阵; endsets data: distance ; end ...
- Python动态展示遗传算法求解TSP旅行商问题(转载)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/jiang425776024/articl ...
- 基于GA遗传算法的TSP旅行商问题求解
import random import math import matplotlib.pyplot as plt import city class no: #该类表示每个点的坐标 def __in ...
- TSP旅行商问题
求解的问题,burma.tsp里面的内容 1 16.47 96.10 2 16.47 94.44 3 20.09 92.54 4 22.39 93.37 5 25.23 97.24 6 22.00 9 ...
随机推荐
- 【简易版】HashMap(增删改查)
1.HashMap概述 (1)首先HashMap是基于哈希表的Map接口实现的.另外HashMap中存储的数据是按照键值跟键值对的关系来进行存储的. (2)不同于ArrayList方法的是,Array ...
- UNICODE 7.0定义的表情符
td.graph { font-size:24px; } UNICODE 7.0定义了78个表情符,从0x1F600到0x1F64F(其中0x1F643和0x1F644没有定义).下表中列出了这些表情 ...
- 纯js异步无刷新请求(只支持IE)
纯js异步无刷新请求 下载地址:http://pan.baidu.com/s/1slakL1F 所以因为非IE浏览器都禁止跨域请求,所以以只支持IE. <HTML> <!-- 乱码( ...
- Web项目中删错文件怎么办
在开发过程中,有时会因为手误将文件错误删除,会造成很大的困惑,今天看到一个网友分享的一种可以恢复文件的方式特别好用,现在分享给大家. 1.首先在删除文件的路径下创建与原来文件名字相同的文件. 2.在文 ...
- RIDE安装遇到的问题及解决方法
1.按照虫师的方法,下载的wxpython3.0 ,启动robotframework-ride,无效,因为版本不一致,所以我又根据终端提示的网址:http://sourceforge.net/proj ...
- 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容 1.由于在学习图像处理滤波器中,需要用到各种边缘保护滤波器(EPS)算法,但是这些算法在OpenC ...
- iOS代码实现九宫格
#define ScreenW [UIScreen mainScreen].bounds.size.width #define ScreenH [UIScreen mainScreen].bounds ...
- SVM学习笔记(一):libsvm参数说明(转)
LIBSVM 数据格式需要---------------------- 决策属性 条件属性a 条件属性b ... 2 1:7 2:5 ... 1 1:4 2:2 ... 数据格式转换--------- ...
- Python:socket
Socket:又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. socket()函数 Pyt ...
- 复制本地文件到HDFS本地测试异常
项目中需要将本地文件拷贝到hdfs上,由于本人比较懒,于是使用擅长的Java程序通过Hadoop.FileSystem.CopyFromLocalFile方法来实现. 在本地(Window 7 环境) ...