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。

时间: 2024-10-01 12:01:22

TSP旅行商问题的Hopfield求解过程的相关文章

大白话5分钟带你走进人工智能-第十八节逻辑回归之交叉熵损失函数梯度求解过程(3)

                                               第十八节逻辑回归之交叉熵损失函数梯度求解过程(3) 上一节中,我们讲解了交叉熵损失函数的概念,目标是要找到使得损失函数最小的那组θ,也就是l(θ)最大,即预测出来的结果在训练集上全部正确的概率最大.那我们怎么样找到我们的最优解呢?上节中提出用梯度下降法求解,本节的话我们对其具体细节展开. 先来看下我们用梯度下降求解最优解,想要通过梯度下降优化L(θ)到最小值需要几步? 第一步,随机产生w,随机到0附近会

ACS蚁群算法求解对称TSP旅行商问题的JavaScript实现

本来以为在了解蚁群算法的基础上实现这道奇怪的算法题并不难,结果实际上大相径庭啊.做了近三天时间,才改成现在这能勉强拿的出手的模样.由于公式都是图片,暂且以截图代替那部分内容吧,mark一记. 蚁群算法解TSP问题的javascript实现 目录(又是神奇的手动目录..) 1 蚁群算法 (1)        蚁群AS算法简介 (2)        蚁群AS算法过程 (3)        蚁群AS算法TSP问题应用 (4)        蚁群算法应用于TSP步骤 2 蚁群系统(Ant Colony

数学建模 TSP(旅行商问题) Lingo求解

model: sets: cities/1..9/:level; link(cities, cities): distance, x; !距离矩阵; endsets data: distance = 0 200 660 170 127 225 490 420 330 200 0 820 300 90 60 310 225 151 660 820 0 530 770 120 1110 1050 960 170 300 530 0 280 350 600 550 450 127 90 770 280

图论中TSP问题的LINGO求解与应用

巡回旅行商问题(Traveling Salesman Problem,TSP),也称为货郎担问题.该问题可简单描述为走遍n个城市的最短路.几十年来,出现了很多近似优化算法.如近邻法.贪心算法.最近插入法.最远插入法.模拟退火算法以及遗传算法. 问题1 设有一个售货员从10个城市中的某一个城市的出发,去其他9个城市推销产品.10个城市的距离已经给出.10个城市相互距离如下表.要求每个城市到达一次仅以此后,回到原出发城市.问:他如何选择旅行路线,使总路程最短. model: sets: city/1

SVM推导过程及SMO详细求解过程(二)

记得当时自己在记笔记的时候,推导的过程中有一个地方符号写错了,有找到的吗? 当时的推导花费了很多功夫,如果转载请注明出处,谢谢! 其它:由于公式标记不方便,为了大家啊能够容易阅读只能以图片形式上传.

hdu5067Harry And Dig Machine(TSP旅行商问题)

题目链接: huangjing 题意:给出一幅图,图中有一些点,然后从第1个点出发,然后途径所有有石头的点,最后回到原点,然后求最小距离.当初作比赛的时候不知道这就是旅行商经典问题.回来学了一下. 思路: 状态转移方程 DP[k][i|base[k]]=min(DP[k][i|base[k]],DP[j][i]+dis[j][k]) DP[J][I]表示从起点到j点在i状态下的最小距离...DP[j][i]+dis[j][k]表从j到k的距离...时间复杂度是(n?m+(t2)?(2t)),那么

SVM推导过程及SMO详细求解过程(一)

【CPLEX教程03】java调用cplex求解一个TSP问题模型

00 前言 前面我们已经搭建好cplex的java环境了,相信大家已经跃跃欲试,想动手写几个模型了.今天就来拿一个TSP的问题模型来给大家演示一下吧~ CPLEX系列教程可以关注我们的公众号哦!获取更多精彩消息! 01 TSP建模 关于TSP建模,就不多解释了.以及什么是TSP问题,也不要问我了.直接贴一个现成的模型出来吧. 02 程序框架 整个程序框架如图,app下是调用cplex的主要package. 其中: App.java:程序入口,cplex调用建模求解过程. ConstraintFa

【算法学习】双调欧几里得旅行商问题(动态规划)(转)

双调欧几里得旅行商问题是一个经典动态规划问题.<算法导论(第二版)>思考题15-1和北京大学OJ2677都出现了这个题目. 旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程.这个解的一般形式为NP的(在多项式时间内可以求出) J.L. Bentley 建议通过只考虑双调旅程(bitonictour)来简化问题,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点.下图(b)显示了 同样的7个点的最短双调路线.在这种情况下,多项式的算法是可能的.事实上,存