代码主要使用python语言编写,使用了比较流行的数据处理库numpy和数学绘图库matplotlib。定义了初始化函数__init__,初始化U函数,计算dU函数,更新U函数,计算V函数,计算E能量函数函数,路径计算,城市距离计算等函数,并使用matplotlib库对试验结果的动态过程用动画表示出来,直观的显示了优化过程。
import numpy as np
from matplotlib import pyplot as plt
class Hopfield():
def __init__(self, step, A, D, U0, T, N):
self.step = step #设置学习率
self.A = A
self.D = D
self.N = N
self.U0 = U0 #神经元初始状态
self.T = T #循环次数
def init_U(self, distance): #初始化神经元状态
primeU0 = 0.5 * self.U0 * np.log(distance.shape[0] - 1)
return primeU0 + 2 * (np.random.random(distance.shape)) - 1
def cal_dU(self, V, distance):
t1 = np.tile(np.sum(V, axis=0, keepdims=True) - 1.0, (V.shape[0], 1)) #tile为平铺 sum按行相加 keepdims为保持矩阵二维特性
#上式将V神经元输出矩阵每列相加,并将所得矩阵沿着y轴平铺V.s