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 ...
随机推荐
- [转载] 深入理解Android之Java虚拟机Dalvik
本文转载自: http://blog.csdn.net/innost/article/details/50377905 一.背景 这个选题很大,但并不是一开始就有这么高大上的追求.最初之时,只是源于对 ...
- linux命令(4):mkdir命令
linux mkdir 命令 用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命 ...
- 简例 一次执行多条mysql insert语句
package com.demo.kafka;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Prep ...
- C语言调用curl库抓取网页图片(转)
思路是先用curl抓取网页源码,然后以关键字寻找出图片网址. 范例: #include <stdio.h> #include <stdlib.h> #include < ...
- JVM内存区域介绍
学习JVM第一个要了解的就是JVM的内存区域. Java虚拟机在运行时会从操作系统内存中划分一部分出来作为JVM内存,而JVM内存又划分为以下几个区域: 大体上可以分为两种: 线程共享数据区 该类型的 ...
- 部分MP4在谷歌浏览器上无法播放
Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...
- iOS实现类似于歌词进度效果
先看效果 这里关键的地方在于镂空文字的实现,可以用UILabel的drawRect方法. .h文件 @interface HollowLabel : UILabel @end .m文件 @interf ...
- hdu 5534 (完全背包) Partial Tree
题目:这里 题意: 感觉并不能表达清楚题意,所以 Problem Description In mathematics, and more specifically in graph theory, ...
- js和php对bool值的判断区别
一.将一种数据类型转换为bool值时,PHP和JS的转换规则不同 PHP中 当转换为 boolean 时,以下值被认为是 FALSE : 布尔值 FALSE 本身 整型值 0(零) 浮点型值 0.0( ...
- MacDev.Mach-O.Programming-Part-III:MachOView-v2.4.9200.dmg-crash
MachOView-v2.4.9200.dmg Crash 在OS X(其版本号: 10.11.6 (15G31))下载MachOView-2.4.9200.dmg后,打开Fat Binary后,Ma ...