资源链接

MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源

实验汇总

MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智能计算方法实验汇总

实验目的

  1. 通过本次实验,进一步理解Hopfield网络的模型结构与计算原理;
  2. 掌握手工计算过程和编码,并能够解决实际问题;
  3. 掌握MATLAB工具箱中的Hopfield相关函数,用工具箱实现编程,解决实际问题。

实验内容

在三维平面上,定义两个平衡点(1,-1,1)和(-1,1,-1),使所有的输入向量经过迭代最后都收敛到这两个点。

  1. 给出手工计算过程,并用代码(python或matlab)实现;
  2. 设计网络结构(以图的形式放入报告);
  3. 用MATLAB工具箱编程实现模型仿真。

实验步骤

1. 手工计算及编码

根据权值计算公式:wij={1n∑k=1muikujk,j≠i0,j=i{w_{ij}} = \left\{ \begin{array}{l} \frac{1}{n}\sum\limits_{k = 1}^m {u_i^ku_j^k,j \ne i} \\ 0,j = i \end{array} \right. wij​=⎩⎨⎧​n1​k=1∑m​uik​ujk​,j​=i0,j=i​

用矩阵形式表示:w=1n(∑k=1mUkUkT−mI)w=\frac{1}{n}(\sum\limits_{k=1}^{m}{U_{k}^{{}}U_{k}^{T}-mI)} w=n1​(k=1∑m​Uk​UkT​−mI)

求得权值矩阵为:

13×([1−1−111−1]×[1−11−11−1]−2×[100010001])=13×[0−22−20−22−20]\frac{{\rm{1}}}{{\rm{3}}} \times \left( {\left[ \begin{array}{l} 1 & -1\\ -1 & 1\\ 1 & -1 \end{array} \right] \times \left[ \begin{array}{l} 1 & -1 & 1\\ -1 & 1 & -1 \end{array} \right] - 2 \times \left[ \begin{array}{l} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array} \right]} \right) = \frac{{\rm{1}}}{{\rm{3}}} \times \left[ \begin{array}{l} 0 & - 2 & 2\\ -2 & 0 & -2\\ 2 & - 2 & 0 \end{array} \right] 31​×⎝⎛​⎣⎡​1−11​−11−1​⎦⎤​×[1−1​−11​1−1​]−2×⎣⎡​100​010​001​⎦⎤​⎠⎞​=31​×⎣⎡​0−22​−20−2​2−20​⎦⎤​

假设某一次输入的向量为:[0.8−0.70.9]\left[ \begin{array}{l} 0.8\\ {\rm{ - 0}}{\rm{.7}}\\ {\rm{0}}{\rm{.9 }} \end{array} \right]⎣⎡​0.8−0.70.9​⎦⎤​选择更新第二个神经元,根据公式vi(t+1)=Sgn[∑j=1Nwijxj(n)]{v_i}(t + 1) = Sgn[\sum\limits_{j = 1}^N {w_{ij}^{}x_j^{}(n)]} vi​(t+1)=Sgn[j=1∑N​wij​xj​(n)]一次计算过程如下:
wijxj(n)=13×[−20−2]×[0.8−0.70.9]=−1.13w_{ij}^{}x_j^{}(n) = \frac{{\rm{1}}}{{\rm{3}}} \times \left[\begin{array}{l} -2 & 0 & -2 \end{array}\right] \times \left[ \begin{array}{l} 0.8\\ {\rm{ - 0}}{\rm{.7}}\\ {\rm{0}}{\rm{.9 }} \end{array} \right] = - {\rm{1}}{\rm{.13}} wij​xj​(n)=31​×[−2​0​−2​]×⎣⎡​0.8−0.70.9​⎦⎤​=−1.13
整个仿真过程通过编程实现,根据题意及上述计算过程,设计有两个记忆模式,每个记忆模式有三个分量的Hopfield神经网络,激励函数选择符号函数,代码如下:

clc;
clear;
T = [1 -1 1; -1 1 -1]';
[n, m] = size(T);
%计算网络权值
w = zeros(n, n);
for i = 1: mw = w + T(:, i)*T(:, i)';
end
w = (1/3)*(w - m*eye(n, n));
axis([-1 1 -1 1 -1 1]);
set(gca, 'box', 'on');
axis manual;
plot3(T(1, :), T(2, :), T(3, :), 'rp');%rp表示红色五角星
title('含有三个神经元的Hopfield网络状态空间');
xlabel('a(1)'); ylabel('a(2)'); zlabel('a(3)'); view([-36 30]); hold on;
%随机选取50个数进行仿真
for m = 1: 50v1 = rands(3);v0 = v1;n = length(v0);v = zeros(n, 1);while(sum(v ~= v0)~=0 || sum(abs(v0) - ones(n, 1)) ~= 0)v = v0;i = randi(n);if(w(i, :)*v0<0)     v0(i, :) = -1;elsev0(i, :) = 1;endendtrack = [v1 v0];plot3(v1(1, 1), v1(2, 1), v1(3, 1), 'k+', track(1, :), track(2, :), track(3, :));hold on;
end

运行程序,结果如下图1。

图1 手工编码运行结果

由图可知,随机产生的输入向量经过迭代最后都收敛到设定的两个点。

2. 设计网络结构

设计Hopfield网络结构如下图。

图2 Hopfield网络结构图

3. 工具箱仿真

用MATLAB工具箱编程实现模型仿真,程序代码如下:

clc;
clear;
T=[1 -1 1; -1 1 -1]';
axis([-1 1 -1 1 -1 1]);
set(gca,'box', 'on');
axis manual;
hold on;
plot3(T(1, :), T(2, :),T(3, :), 'rp');
title('含有三个神经元的Hopfield网络状态空间');
xlabel('a(1)');
ylabel('a(2)');
zlabel('a(3)');
view([-36 30]);
%设计网络
net = newhop(T);
%随机选取50个初始点进行赋值,观察结果。
color = 'rgbmy';
for i = 1: 50a={rands(3, 1)};[y, Pf, Af] = sim(net, {1, 10}, {}, a);record = [cell2mat(a) cell2mat(y)];start = cell2mat(a);plot3(start(1, 1), start(2, 1), start(3, 1), 'k+', record(1, :), record(2, :), record(3, :), color(rem(i, 5) + 1));
end

执行程序,运行结果如下图3。

图3 工具箱运行结果 由图可知随机生成的50个初始点都收敛到(1,-1,1)和(-1,1,-1)这两个点。

MATLAB实现智能计算方法实验:实验五 Hopfield神经网络相关推荐

  1. MATLAB实现智能计算方法实验汇总

    MATLAB实现智能计算方法实验汇总 代码资源链接 [实验一 模糊聚类分析](https://blog.csdn.net/qq_36949278/article/details/121051493) ...

  2. MATLAB实现智能计算方法实验:实验三 BP神经网络

    资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 本实验代码和excel文件可在GitHub仓库和gitee仓库中进行下载 实验汇总 ...

  3. MATLAB实现智能计算方法实验:实验一 模糊聚类分析

    资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 实验汇总 MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智 ...

  4. MATLAB群智能开源第十五期-闪电优化算法(LAPO)

    1 写在前面 该系列为基础群智能优化算法,欢迎私信一起交流问题,更多的改进算法可查看往期的推文.有问题或者需要其他建议的话,非常欢迎后台私信交流,共同进步,如若出现违反学术道德的情况与本博客以及作者无 ...

  5. 以太坊智能合约开发(五):Solidity成绩录入智能合约实验

    以太坊智能合约开发(五):Solidity成绩录入智能合约实验 1 编写智能合约 1 编写智能合约 每个学生分别部署合约Student.sol ,保证只有自己可以修改姓名.老师部署合约StudentS ...

  6. Hopfield神经网络实验详解(MATLAB实现)

    前言 分享第二弹,一份神经网络课上布置的实验报告.参数什么的可能在不同电脑上需要有所调整,还望用餐愉快.在此之前会简要介绍一下Hopfield神经网络的知识点. Hopfield网络(离散型) Hop ...

  7. matlab插值龙格实验,实验二 拉格朗日插值龙格现象

    汕 头 大 学 实 验 报 告 学院: 工学院系: 计算机系专业: 计算机科学与技术年级:2010 姓名: 林金正学号:2010101032完成实验时间: 5月24日 一.实验名称:拉格朗日插值的龙格 ...

  8. matlab插值龙格实验,实验二 拉格朗日插值龙格现象.doc

    实验二 拉格朗日插值龙格现象 汕 头 大 学 实 验 报 告 学院: 工学院 系: 计算机系 专业: 计算机科学与技术 年级: 2010 姓名: 林金正 学号: 2010101032 完成实验时间: ...

  9. 无失真传输matlab原理,信号与系统实验(MATLAB版)实验23综合实验4——无失真传输系统.ppt...

    一.实验目的 在掌握相关基础知识的基础上,学会自己设计实验,学会运用MATLAB语言编程,并具有进行信号分析的能力.在本实验中学会利用所学方法,加深了解和掌握无失真的概念和条件. 二.实验内容 1 ...

最新文章

  1. NVIDIA GPU卷积网络的自动调谐
  2. python的try exception捕获异常
  3. 正则表达式调用“或”变量
  4. Windows锁定计算机C代码编程实现
  5. JQuery选中的对象和非选中的其他对象分别执行不同动作
  6. MySql日期处理系列-常用的日期推算处理
  7. 库克警告员工不要泄露公司信息:将全力追查
  8. Linux中vectormath无法通过pip安装的解决办法
  9. linux刷新jdk,Linux安装更新JDK
  10. 用python编写密码安全性_密码安全性
  11. DPDK性能优化技术汇总
  12. 当编程语言都变成女孩子
  13. 音频处理-2 WAV格式
  14. Springboot中@autowired和@resource注解的区别
  15. 多核cpu是并发还是并行_多核CPU及其带来的并发更改
  16. SpringBoot 实现 QQ邮箱注册和登录
  17. 蓝桥杯练习 数的读法
  18. 儿科学类毕业论文文献有哪些?
  19. 射频测试 —— 蓝牙定频测试3
  20. 【来日复制粘贴】数据透视表分类不同账龄

热门文章

  1. Oracle数据库用管理员登录,oracle数据库关于用户登录
  2. electron自动更新
  3. 人生就是一场猝不及防
  4. 如何使用 flv.js 做直播
  5. vijos 1011 清帝之惑之顺治 (记忆化搜索)
  6. 基于jsoup的Java服务端http(s)代理程序-代理服务器Demo
  7. 宿舍台灯什么光对眼睛好?推荐适合学生宿舍用的台灯
  8. Windows中cmd命令大全
  9. Eclipse配置代码注释模板 Eclipse代码注释模板 Eclipse设置方法注释模板
  10. spring boot基于Springboot的球鞋调货管理系统设计与实现 毕业设计-附源码160942