使用Hopfield网络进行优化



优化是指使设计、情况、资源和系统等尽可能有效地发挥作用。利用成本函数和能量函数之间的相似性,我们可以使用高度互连的神经元来解决优化问题。这种神经网络就是Hopfield网络,它由一层包含一个或多个完全互连的递归神经元组成。这可以用于优化。

使用Hopfield网络进行优化时需要注意的几点:

  • 网络的能量函数必须最小。

  • 它会找到令人满意的解,而不是从存储的模式中选择一个。

  • Hopfield网络找到的解的质量很大程度上取决于网络的初始状态。

旅行商问题

寻找旅行商旅行的最短路线是可以通过使用Hopfield神经网络进行优化的计算问题之一。

TSP的基本概念

旅行商问题 (TSP) 是一个经典的优化问题,其中一名销售人员必须前往**n**个相互连接的城市,同时使成本和旅行距离最小化。例如,销售人员必须前往一组4个城市A、B、C、D,目标是找到最短的环形路线A-B-C-D,以最小化成本,这还包括从最后一个城市D到第一个城市A的旅行成本。

Travelling Salesman Problem

矩阵表示

实际上,每个n城市TSP的路线都可以表示为一个**n × n**矩阵,其第**i**行描述第**i**个城市的位置。对于4个城市A、B、C、D,此矩阵**M**可以表示如下:

$$M = \begin{bmatrix}A: & 1 & 0 & 0 & 0 \\B: & 0 & 1 & 0 & 0 \\C: & 0 & 0 & 1 & 0 \\D: & 0 & 0 & 0 & 1 \end{bmatrix}$$

Hopfield网络的解决方案

在考虑Hopfield网络对TSP的解决方案时,网络中的每个节点对应于矩阵中的一个元素。

能量函数计算

为了获得最佳解,能量函数必须最小。根据以下约束,我们可以计算能量函数如下:

约束I

我们将根据其计算能量函数的第一个约束是,矩阵**M**的每一行中必须有一个元素等于1,而每一行中的其他元素必须等于**0**,因为每个城市在TSP路线中只能出现一个位置。此约束可以用数学方式写成如下:

$$\displaystyle\sum\limits_{j=1}^n M_{x,j}\:=\:1\:for \: x\:\in \:\lbrace1,...,n\rbrace$$

现在,基于上述约束,要最小化的能量函数将包含一个与以下成比例的项:

$$\displaystyle\sum\limits_{x=1}^n \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{j=1}^n M_{x,j}\end{array}\right)^2$$

约束II

众所周知,在TSP中,一个城市可以在路线中的任何位置出现,因此在矩阵**M**的每一列中,必须有一个元素等于1,而其他元素必须等于0。此约束可以用数学方式写成如下:

$$\displaystyle\sum\limits_{x=1}^n M_{x,j}\:=\:1\:for \: j\:\in \:\lbrace1,...,n\rbrace$$

现在,基于上述约束,要最小化的能量函数将包含一个与以下成比例的项:

$$\displaystyle\sum\limits_{j=1}^n \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{x=1}^n M_{x,j}\end{array}\right)^2$$

成本函数计算

假设一个用**C**表示的( **n × n** )方阵表示**n**个城市(其中**n > 0**)的TSP成本矩阵。在计算成本函数时,以下是一些参数:

  • **Cx, y** - 成本矩阵的元素表示从城市**x**到**y**的旅行成本。

  • 元素A和B的邻接性可以用以下关系表示:

$$M_{x,i}\:=\:1\:\: and\:\: M_{y,i\pm 1}\:=\:1$$

众所周知,在矩阵中,每个节点的输出值可以是0或1,因此对于每对城市A、B,我们可以向能量函数添加以下项:

$$\displaystyle\sum\limits_{i=1}^n C_{x,y}M_{x,i}(M_{y,i+1}\:+\:M_{y,i-1})$$

基于上述成本函数和约束值,最终能量函数**E**可以表示为:

$$E\:=\:\frac{1}{2}\displaystyle\sum\limits_{i=1}^n\displaystyle\sum\limits_{x}\displaystyle\sum\limits_{y\neq x}C_{x,y}M_{x,i}(M_{y,i+1}\:+\:M_{y,i-1})\:+$$

$$\:\begin{bmatrix}\gamma_{1} \displaystyle\sum\limits_{x} \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{i} M_{x,i}\end{array}\right)^2\:+\: \gamma_{2} \displaystyle\sum\limits_{i} \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{x} M_{x,i}\end{array}\right)^2 \end{bmatrix}$$

这里,**γ1** 和 **γ2** 是两个加权常数。

广告
© . All rights reserved.